Plan 实质化与工作账本
wesgine Plan 系统的步骤完成验证机制——done 与工作发生过同构。
核心原则(INV-PE-15)
步骤标记 done 需要有实际工作发生过。
判据是 session ledger:PlanStep.Substantiated ∪ PlanWorkThisTurn。
实质化机制
引擎在工具执行开始时给全部 open 步骤(pending + in_progress)盖章:
execute 开始
└── stampPlanWork()
└── 遍历 open 步骤
└── 标记 Substantiated = true
引擎无法把 grep 归属到某一步——禁止 first-pending-only。
记账可以跨轮次
先做完多步工作(read / grep / exec),下一轮批量补标 done:
Turn 1: read → grep → exec (全部 open 步骤被 stamp)
Turn 2: plan(update, task_id=0, done) ← 合法
plan(update, task_id=1, done) ← 合法
plan(update, task_id=2, done) ← 合法
complete 收口
plan(action=complete) 收口剩余 open 步骤为 done。
不是终止 Run(INV-PE-12),而是声明所有步骤已完成。
与 Nudge 的关系
| 场景 | 行为 |
|---|---|
| end_turn + pending 步骤 | Nudge 提醒(最多 3 次) |
| Nudge 引导 update 补标 | 先前工作的 Substantiated 允许 |
| complete 后 pending 残留 | complete 自动收口 |
已删除的机制
PlanUpdateGuard:同 turn 必须有非 plan 工具——已删除auto-verify 回滚:验证失败不回滚状态auto-advance:引擎不隐式推进 plan
已知权衡
实质化验「调用存在」不验「调用成功/属于哪一步」。
这是有意设计——引擎无法准确归因工具调用到具体步骤。
相关文档
- Plan 系统 →
plan-system.md - Nudge 机制 →
run-nudge-mechanism.md - Run 协调 →
run-coordination.md