← 关联知识节点:状态机与 Checkpoint:中断恢复与死循环防护
交互工具 · 原理

任务状态机推演

把任务建模成一台状态机:每个转移都是一次存档机会,每个异常状态都连着明确的下一步,每个循环都带着计数器。点「工具失败」看步骤账本怎么计数、怎么在 ×3 时注入提醒、到顶时熔断交还给人;到高危步提交审批,看挂起前落盘、批准后读档续跑;叫停之后,再从 Checkpoint 把进度读回来——进度是数据,不是上下文里的感觉。

纯前端确定性状态机:八状态、两条回边、死循环三段(×3 提醒注入·计数重置→到顶熔断)与 Checkpoint「存位置不存行李」五样字段,逐字对齐知识库《状态机与 Checkpoint》动手节 step_loop 伪代码,零 API、零随机。

一个五步的数据迁移任务,第 4 步是高危数据库变更。把它当一台状态机来开:点「工具失败」看步骤账本计数——×3 注入提醒、到顶熔断转 failed;到高危步提交审批,看挂起前落盘、批准后读档续跑;叫停之后,再从 Checkpoint 把进度读回来。

任务状态机 · 八个状态、两条回边

created · 任务已受理
主干向前 · 两条回环都能回 running · 三个终态各收一条单向边重试批准拒绝重试耗尽 · 熔断步骤成功 · 推进读档续跑读档续跑created任务已受理▶ 当前planning拆解与计划running逐步执行中tool_failed步骤账本记错误waiting_approval挂起等人裁决completed验证通过收官failed重试耗尽放弃cancelled人叫停还没有可续跑存档——挂起前、关键动作前、阶段切换都会自动落盘
第 1 步 读源库结构第 2 步 建目标表第 3 步 迁移存量数据第 4 步 高危数据库变更 · 需审批第 5 步 校验并收官

死循环防护 · 先提醒,后熔断

① 计数(步骤账本)×0同一工具+同一参数+同类错误 = 计数 +1
② 提醒干预(轻)未触发(×3 触发)system-reminder:「已重复三次,换条路径试试」
③ 熔断(重)未触发(提醒后再次到顶)计数到顶仍无进展,连账本交还给人

点「步骤成功」= 换路成功,计数清零——先提醒再熔断,给模型自证「这不是死循环」的机会(改路径后计数重置)。

推一个事件(非法事件不炸,只被状态机忽略并记一笔)

亮起的按钮是当前状态下的合法转移;灰的点了会被忽略——异常状态总有明确去处,非法输入不进转移表。

事件日志 · 每次转移一行

还没有事件——点「受理派单」开始推演。

进度要落盘「我做到第几步」必须写在纸面上——Checkpoint 存五样:状态与步骤号、已完成清单、产物引用、待办快照、计划快照;存「位置」不存「行李」。
异常要有去处失败不是死胡同:tool_failed 记次数重试或放弃,waiting_approval 等人裁决——批准读档续跑,拒绝带理由换路。
循环要有计数「再试一次」说三次以上就得有人喊停:计数 → 提醒注入 → 熔断转 failed——挂起的是任务不是进程,交还的是进度不只结论。