Run 编排

概述

wesgine 的 Run 编排系统管理 Agent 的执行流程,包括计划制定(Plan)、任务委派(Delegation)、循环检测(CycleDetector)和错误流检测(ErrorStreakDetector)。编排的核心理念是:LLM 驱动执行,引擎提供韧性保障。

Plan 系统

Plan 是 Agent 在执行复杂任务时创建的线性清单(不是 DAG)。Plan 由 LLM 驱动——引擎不隐式推进步骤,只有模型通过 plan 工具显式操作。

Plan 生命周期

planning → active → completed
                  → terminated (run_interrupted / nudge_exhausted)
状态含义
planning初始状态,Plan 正在创建中
active有步骤正在执行
completed模型声明任务完成
terminatedRun 异常终止或 nudge 耗尽

Plan 工具

动作说明
plan(action=create, steps=[...])创建计划
plan(action=update, task_id=N, status=done)更新步骤状态
plan(action=complete)声明计划完成(收口剩余 open 步骤)

执行顺序 = 数组顺序。没有 depends_on,没有 DAG,模型决定先后。

Nudge 机制

当模型尝试 end_turn 但 Plan 仍有未完成步骤时,引擎注入提醒消息(nudge),引导模型继续执行。Nudge 有严格上限 3 次,耗尽后 Run 正常终止,未完成步骤保留原状。

Delegation(任务委派)

通过 delegate_task 工具,Agent 可以将子任务委派给独立的子 Agent:

delegate_task(goal="审查合同第三章", context="...", toolsets=["file"])

两种模式

模式说明
同步(默认)父 Agent 等待子 Agent 完成后继续
异步(background=true)父 Agent 立即继续,子 Agent 结果稍后回注

角色控制

角色能力
leaf(默认)专注执行,不可再委派
orchestrator可继续委派子任务(受 max_spawn_depth 限制)

委派子 Run 的 Actor 自动从父 Run 继承。

CycleDetector(循环检测)

CycleDetector 是引擎内唯一的终止来源——它检测"可证明的死循环"(完全相同操作 + 完全相同结果),不是"你跑太久了"。

两阶段协议

阶段触发条件行为
自愈首次达到终止阈值注入纠正消息 + 重置计数器
HITL第二次达到终止阈值问用户"怎么办";超时 60s 自动终止

工具分类

不同工具有不同的阈值:

类别示例说明
explorationread、grep、search只读操作,阈值较高
actionedit、write、exec变更操作,阈值较低
progress-awareedit(参数变化时)参数变化时 streak 减半

ErrorStreakDetector(伪进展检测)

检测连续的工具调用错误。当错误连续出现时,触发 HITL 询问用户是否继续,防止 Agent 在无效路径上空转。

Run 终止哲学

wesgine 的终止哲学是:引擎不因 counter 阈值主动终止。Run 终止只来自以下途径:

Run 生命周期与 SSE 连接完全解耦——SSE 断开不会取消 Run。

TaskMemory

每个 Session 可以关联一个 TaskMemory,用于存储任务执行过程中的结构化信息: