Procházet zdrojové kódy

docs(orchestration): document root mission contract

SamLee před 1 dnem
rodič
revize
1ba3e44714

+ 21 - 5
agent/agent/docs/orchestration-v1.md

@@ -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 范围。

+ 10 - 0
agent/examples/orchestration_v1/config.py

@@ -7,6 +7,16 @@ RUN_CONFIG = RunConfig(
     agent_type="planner",
     completion_policy=CompletionPolicy.EXPLICIT_VALIDATION,
     tool_groups=None,
+    root_task_spec={
+        "objective": "Complete the requested mission",
+        "acceptance_criteria": [
+            {
+                "criterion_id": "mission-complete",
+                "description": "The requested mission is fully completed and independently validated",
+                "hard": True,
+            }
+        ],
+    },
 )
 
 ORCHESTRATION_CONFIG = OrchestrationConfig(