Plan 系统

wesgine Plan 状态机:线性清单、步骤管理、完成收口与中断处理。


设计范式

Claude Code 范式:LLM 驱动线性清单。


Plan 工具 API

创建

plan(action=create, steps=[...])

更新步骤

plan(action=update, task_id=<index>, status=done|in_progress|skipped)

完成

plan(action=complete)

PlanStatus 枚举

四值枚举替代双 bool(Completed + Interrupted):

状态含义
planning初始/规划中
active执行中
completed模型声明完成
terminated异常终止

TerminationReason

原因触发
run_interruptedRun 异常终止(非 end_turn)
nudge_exhaustedPlan-pending nudge 耗尽
validation_failed验证失败

迁移函数

函数用途
ApplyCompletion模型 plan(complete) 时调用
ApplyTermination异常终止时调用

terminated → completed 是合法 resume 迁移。 completed → terminated 非法。


步骤完成与实质化(INV-PE-15)

done 与工作发生过同构。

session ledger

PlanStep.Substantiated ∪ PlanWorkThisTurn

盖章对象

execute 开始时给全部 open(pending + in_progress) 步骤盖章。

引擎无法把 grep 归属到某一步,禁止 first-pending-only。

记账可以是下一轮

先做完多步 read/grep/exec,下一轮 plan-only 批补标 done——合法。


Plan-Pending Nudge

Run 即将 end_turn 但 Plan 仍有 pending 步骤时触发。

上限

严格 3 次(maxPlanPendingNudges)。

耗尽后 Run 正常终止,步骤留在 pending。

Completed Plan 跳过 Nudge

!IsTerminal() 有意跳过 completed 计划。


complete 收口

plan(action=complete) 收口剩余 open 步骤为 done。

Composer PlanTracker 数的是步骤分数,completed + pending 会显示 3/5。


异常终止(INV-PE-13)

非 end_turn 终止 + pending 步骤 → EventPlanInterrupted。

11 种非 end_turn 终止原因:


持久化

Plan 是 SessionState 的子字段(INV-CTX-46)。

随 CognitiveSettlement 一同持久化。

Frontmatter

status: active
termination_detail:
  reason: nudge_exhausted

Plan 工具分类

Plan 在 toolCategoryMap 内置分类为 categoryExploration。

探索预算 + 进度减半。

应用层不得重复声明 ExtraCategories / progressAwareTools。


补标(INV-PE-14)

PlanCompleted 状态允许步骤终态补标(done/skipped,幂等)。

PlanTerminated 保持锁定。


相关文档