{{ theme.skipToContentLabel || 'Skip to content' }}

持久运行与故障恢复

状态:已发布的 0.3.0 稳定版;支持平台:Windows、Linux。macOS 尚未列为正式支持。

目的

这个模块让一次智能体运行拥有可恢复、可审计且不会伪造成功的外围状态。它不复制 Workflow 或 Loop 的业务阶段,而是用一个 durable operation 回答:任务是否已接收、正在运行、暂停、正在中止、完成或失败。

四类状态的唯一所有者

状态权威所有者不能承担的职责
对话与压缩视图Session不判断运行是否完成
运行生命周期与 TraceDurableOperation + RunState不保存完整工具大输出
文件与外部副作用Checkpoint + Effect Receipt不替代业务系统自己的事务记录
token、成本与预算RunBudget + RunMetrics不推断 Provider 未返回的数据

LoopController 继续管理 planning、execute、verify、repair 等业务阶段;它不会被第二套平行 Loop 取代。

公共合同

  • RunResult.operation:CLI、TUI、TypeScript SDK 与 Python SDK 共享的 operation 权威快照。
  • RunResult.snapshot:四个入口共享的纯 JSON 终态信封,统一 operation、outcome、指标、评测、Trace、Checkpoint、Artifact、扩展收据和恢复判断。
  • DurableOperation:合法迁移、重复事件幂等和恢复校验。
  • FileRunStore:单 writer 锁、连续序号、原子发布和可控尾部修复。
  • prepareRunResume():恢复前检查配置指纹、终态、稳定步骤和 Effect Receipt。
  • CoreMindSession:稳定公开路径、双后端合同与旧 schema 迁移。

稳定不变量

  • operation 只能沿合法边迁移;终态不能继续运行。
  • 相同 eventId 不会重复产生状态变化。
  • 已提交副作用只有在所属步骤稳定完成时才会随步骤跳过;归属不确定时必须人工判断。
  • Checkpoint、工具调用和 Effect Receipt 使用同一个幂等关联键。
  • RunState 必须按实际落盘顺序保持连续;读取与恢复不会通过重新排序掩盖乱序,竞争 writer 也不会静默覆盖。
  • 审批或策略拒绝发生在工具执行前时记录 not_started,可安全重新决策;只有真实进入执行后才记录 started
  • 只修复“已有完整记录 + 最后一行未写完”的 JSONL 尾部;整文件损坏失败关闭。
  • 旧 Session 在迁移前生成 .v3.backup;迁移失败时公开原文件保持不变。

平台边界

Windows 与 Linux 使用相同的合同和测试定义。锁文件在异常进程退出后不会被自动猜测删除:确认没有 writer 后,由操作者按 恢复 SOP 处理。真实跨进程崩溃仍必须在目标平台人工验收。

源码与证据

该模块只能证明框架恢复合同成立,不能代替业务数据库、支付系统或其他外部服务的幂等与补偿设计。

{{ theme.lastUpdated?.text || theme.lastUpdatedText || 'Last updated' }}:

Released under the MIT License.