任务状态机推演
把任务建模成一台状态机:每个转移都是一次存档机会,每个异常状态都连着明确的下一步,每个循环都带着计数器。点「工具失败」看步骤账本怎么计数、怎么在 ×3 时注入提醒、到顶时熔断交还给人;到高危步提交审批,看挂起前落盘、批准后读档续跑;叫停之后,再从 Checkpoint 把进度读回来——进度是数据,不是上下文里的感觉。
纯前端确定性状态机:八状态、两条回边、死循环三段(×3 提醒注入·计数重置→到顶熔断)与 Checkpoint「存位置不存行李」五样字段,逐字对齐知识库《状态机与 Checkpoint》动手节 step_loop 伪代码,零 API、零随机。
一个五步的数据迁移任务,第 4 步是高危数据库变更。把它当一台状态机来开:点「工具失败」看步骤账本计数——×3 注入提醒、到顶熔断转 failed;到高危步提交审批,看挂起前落盘、批准后读档续跑;叫停之后,再从 Checkpoint 把进度读回来。
任务状态机 · 八个状态、两条回边
created · 任务已受理第 1 步 读源库结构第 2 步 建目标表第 3 步 迁移存量数据第 4 步 高危数据库变更 · 需审批第 5 步 校验并收官
死循环防护 · 先提醒,后熔断
① 计数(步骤账本)×0同一工具+同一参数+同类错误 = 计数 +1
② 提醒干预(轻)未触发(×3 触发)system-reminder:「已重复三次,换条路径试试」
③ 熔断(重)未触发(提醒后再次到顶)计数到顶仍无进展,连账本交还给人
点「步骤成功」= 换路成功,计数清零——先提醒再熔断,给模型自证「这不是死循环」的机会(改路径后计数重置)。
推一个事件(非法事件不炸,只被状态机忽略并记一笔)
亮起的按钮是当前状态下的合法转移;灰的点了会被忽略——异常状态总有明确去处,非法输入不进转移表。
事件日志 · 每次转移一行
还没有事件——点「受理派单」开始推演。
进度要落盘「我做到第几步」必须写在纸面上——Checkpoint 存五样:状态与步骤号、已完成清单、产物引用、待办快照、计划快照;存「位置」不存「行李」。
异常要有去处失败不是死胡同:tool_failed 记次数重试或放弃,waiting_approval 等人裁决——批准读档续跑,拒绝带理由换路。
循环要有计数「再试一次」说三次以上就得有人喊停:计数 → 提醒注入 → 熔断转 failed——挂起的是任务不是进程,交还的是进度不只结论。