|
|
@@ -3,8 +3,9 @@
|
|
|
V1 提供一套与具体业务无关的显式任务闭环:主 Agent 负责规划和决策,Worker 只执行,Validator 只评估。Worker 或 Validator 的 Trace 结束都不等于 Task 完成。
|
|
|
|
|
|
```text
|
|
|
-Planner -> Task -> Worker Attempt -> Artifact Snapshot
|
|
|
- -> independent Validator -> Planner Decision
|
|
|
+Planner -> Root Task -> Child Task -> Worker Attempt -> Artifact Snapshot
|
|
|
+ -> independent Validator -> Planner Decision -> Root replan
|
|
|
+ -> Root Attempt -> Root Validation -> Planner accepts Root
|
|
|
```
|
|
|
|
|
|
## 两种完成策略
|
|
|
@@ -46,6 +47,16 @@ config = RunConfig(
|
|
|
agent_type="planner",
|
|
|
completion_policy=CompletionPolicy.EXPLICIT_VALIDATION,
|
|
|
tool_groups=None,
|
|
|
+ root_task_spec={
|
|
|
+ "objective": "完成调用方定义的任务",
|
|
|
+ "acceptance_criteria": [
|
|
|
+ {
|
|
|
+ "criterion_id": "mission-complete",
|
|
|
+ "description": "任务整体结果满足调用方定义的验收要求",
|
|
|
+ "hard": True,
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
)
|
|
|
|
|
|
result = await runner.run_result(
|
|
|
@@ -60,7 +71,7 @@ result = await runner.run_result(
|
|
|
|
|
|
Planner:
|
|
|
|
|
|
-- `task_plan`:创建顶层/子 Task、插入同级 Task、切换焦点。
|
|
|
+- `task_plan`:检查 Ledger、创建 Root 的子 Task、插入同级 Task、切换焦点。
|
|
|
- `dispatch_tasks`:运行一个或多个互相隔离的 Worker→Validator 闭环。
|
|
|
- `task_decide`:执行 accept、repair、retry、revise、split、block、unblock、cancel、supersede。
|
|
|
- `validate_attempt`:仅在 Validator error、stopped、expired 后,对未变化的 Snapshot 发起新 Validator Trace。
|
|
|
@@ -70,6 +81,9 @@ Worker 只能使用 `submit_attempt` 正式交付。Validator 只能使用 `subm
|
|
|
## 关键不变量
|
|
|
|
|
|
- Planner 是唯一可以改变任务树和作出完成决策的角色。
|
|
|
+- Ledger 中只有一个特殊 Root Task;调用方提供它的 objective 和验收标准,框架不生成业务验收语义。
|
|
|
+- 普通顶层 Task 默认挂在 Root 下;所有直接子 Task 终态后,父 Task 回到 `needs_replan`,不会自动完成。
|
|
|
+- 父 Worker 会收到直接、已接受子 Task 的不可变结果引用,用于产生父 Task 的新 Attempt。
|
|
|
- Worker 看不到且不能执行 `agent`、`evaluate`、`goal` 或 Planner/Validator 工具。
|
|
|
- Validator 使用独立 Trace,只能访问 preset 明确允许的只读工具。
|
|
|
- explicit 模式的工具必须声明 capability;未分类工具默认拒绝。Validator 仅允许 `read + validation_submit`,Worker 不允许 `agent_spawn` 和 `task_control`。
|
|
|
@@ -78,7 +92,9 @@ Worker 只能使用 `submit_attempt` 正式交付。Validator 只能使用 `subm
|
|
|
- `passed` 只让 Task 进入 `awaiting_decision`;只有 Planner 对当前版本、当前 Attempt、当前 Snapshot 执行 `accept` 才完成。
|
|
|
- `failed`、`inconclusive` 没有 override 接受入口。
|
|
|
- 同一 TaskSpec 最多 repair 一次;repair 产生新 Attempt 和 Snapshot,但续用原 Worker Trace。retry、revise 使用新 Worker Trace。
|
|
|
-- 子 Task 全部完成后,父 Task 进入 `needs_replan`,不会自动完成。
|
|
|
+- Root Task 也必须经历 Attempt、独立 Validation 和 Planner accept;只有 Root completed 才允许 Planner Trace completed。
|
|
|
+- Planner 自由文本退出不会绕过 Root;迭代耗尽且 Root 未完成时 Trace 为 `incomplete`。
|
|
|
+- TaskSpec 必须有非空 objective 和至少一条 ID 唯一、描述非空的验收标准。
|
|
|
- 带幂等键的批量 dispatch 在逐 Task 周期完成后,即使整批结果缓存写入失败,也会返回已持久化的逐 Task 结果;重试会复用原 Attempt/Validation,不会重复执行 Agent。幂等键绑定原始 Task 列表和 Worker preset,不能串用于另一批请求。
|
|
|
|
|
|
## 存储与扩展点
|
|
|
@@ -97,5 +113,5 @@ Worker 只能使用 `submit_attempt` 正式交付。Validator 只能使用 `subm
|
|
|
## V1 限制
|
|
|
|
|
|
- 显式闭环只支持本地 Sub-Trace;远程 Agent 继续使用 `legacy_auto`。
|
|
|
-- 没有 Task/Attempt/Validation HTTP API。
|
|
|
+- V2 控制 API 可查询和控制已有 Task/Operation,但不负责启动 Planner Run。
|
|
|
- 默认 Store 只保证单进程内并发安全;跨进程/分布式调度不在 V1 范围。
|