diff --git a/docs/design/01-four-phase-loop.md b/docs/design/01-four-phase-loop.md index 5c55d62..7270a70 100644 --- a/docs/design/01-four-phase-loop.md +++ b/docs/design/01-four-phase-loop.md @@ -257,6 +257,56 @@ Ticker tick 串行执行,明确顺序避免冲突: MVP 阶段用 round_count 上限,简单可靠。 +### 4.6 任务状态机完整流转 + +两层 review(司马懿 + 庞统)在状态机中的完整路径: + +``` +─── Sub Task(执行 Agent)─── + +pending → claimed → working + │ + ▼ Agent 完成 + 三信号检查通过 + review + │ + ▼ 司马懿 review(_dispatch_reviews 确定性路由) + ┌── done ──┐ + │ │ + review 通过 review 不通过 → working(打回重做) + │ + ▼ + (sub task 终态) + +─── Parent Task(庞统三问)─── + +parent 下所有 sub task 终态 + │ + ▼ _check_round_complete 检测 + reviewing(防重复触发) + │ + ▼ _spawn_pangtong_review + │ + ├── GOAL_ACHIEVED → done(项目完成) + ├── 创建新 sub task → working(新一轮执行) + └── 方向偏离 → 调整 goal + working +``` + +**关键规则**: + +| 规则 | 说明 | +|------|------| +| sub task 终态 = done / failed / cancelled | 司马懿 review 通过 → done;不通过 → 打回 working | +| 司马懿 review 是 sub task 的必经关卡 | 每个 sub task 完成后必须过司马懿,通过才算 done | +| 庞统 review 是 parent task 的关卡 | 一轮结束后庞统三问,决定继续还是完成 | +| 司马懿 spawn 完成后不再触发 _auto_complete | 审查 Agent(司马懿)的 on_complete 回调直接标 done/failed,不走 _task_auto_complete | +| 庞统 spawn 完成后走 _handle_review_conclusion | 解析 GOAL_ACHIEVED 或继续新一轮 | + +**为什么审查 Agent 完成后不再触发 _auto_complete**: + +`_auto_complete` 的设计意图是检测"执行 Agent 是否真的完成了工作"(三层幻觉门控)。而审查 Agent(司马懿)是被派来 review 的,他的完成意味着 review 本身完成了,不应该再走一遍"检测是否完成 → 标 review → 又派审查 Agent"的循环。 + +实现方式:`_dispatch_reviews` 在 dispatch 审查 Agent 时,通过 `spawn_full_agent` 的 `on_complete` 回调直接标 done/failed,绕过 `_task_auto_complete`。 + --- ## §5. 司马懿 Review 扩展