正在统计访客…
浏览全部文档
开始 · 9找到适合你的 Runifold 学习路径45 分钟掌握 Runifold理解完整的 Runifold 平台第一次可信运行选择正确的执行 API选择 Crate 与 Cargo Feature构建常见 Runifold 应用Runifold 常见问题排查 Runifold 应用故障
执行内核 · 7理解 RunContext安全协调外部副作用使用预算与取消限制工作安全地处理错误与重试事件、Journal 与执行证据设计 Capability 安全执行从 Checkpoint 安全恢复
模型与服务商 · 7在避免重复输出的前提下路由模型选择并配置模型服务商使用服务商中立的模型协议基于 Provider Runtime 契约构建使用 OpenAI 控制面与 Realtime API测试与 Benchmark Provider Adapter配置 OpenAI、Anthropic、Gemini 与 Ollama
Agent · 7构建并配置 Agent为 Agent 添加类型化工具加入会话与语义记忆安全地委派给子 Agent返回结构化 Rust 值在不丢失语义的前提下流式输出使用检索为 Agent 提供事实依据
持久工作流 · 7组合确定性工作流让工作流持久化运行持久工作流 Worker协调 Timer、Signal 与持久等待运行多租户工作流基础设施运行并行 Branch 与安全 Race对持久 Workflow 进行版本管理
集成 · 7通过 MCP 连接外部能力选择存储与持久化边界通过 MCP Tasks 暴露持久工作构建并评估检索流水线使用 MCP Resources、Prompts 与 Sampling在不跨越权限的前提下缓存 MCP 响应在 Rust Web Service 中部署 Runifold
质量与运维 · 10在没有网络的情况下测试评估质量并阻止回归观测完整运行树在浏览器与边缘环境安全运行准确理解可靠性声明在 CI 中运行可复现评测使用 SLO 运维 Runifold治理 Task 保留与删除把审计证据归档到 S3-Compatible WORM 存储管理兼容性与可信发布
文档/执行内核
第一次使用?通过 45 分钟核心课程建立完整心智模型
执行内核

从 Checkpoint 安全恢复

持久化带版本的语义状态,拒绝陈旧 Writer,区分稳定与进行中工作,并在不虚构成功的前提下恢复。

实践指南·12 min

Checkpoint 信封

Checkpoint 包含稳定 ID、所属 Run、单调 Revision、Namespaced Kind、Schema Version、 Payload 与更新时间。CheckpointStore::compare_and_swap 只能创建 Revision 0,并且只能 从精确当前 Revision 更新到下一个 Revision。

这是乐观并发,不是分布式 Lease。它防止旧 Writer 覆盖新语义状态;并发进程执行时, Workflow Ownership 还需要独立 Fencing。

Write-ahead Phase

外部工作前先持久化 Intent。Agent Checkpoint 区分 ReadyForTurnTurnInFlightCompleted;Workflow Checkpoint 记录活跃 Step 或 Branch State。只有解释跳转所需的 全部结果都持久化后,才能写 Stable State。

外部调用后、稳定 Checkpoint 前进程停止会产生不确定性。Store 不能把该 Phase 改写成 成功或失败。

恢复策略

Completed State 无需模型、Tool 或 Workflow 执行即可 Replay;Stable State 从下一次跳转 继续;保守策略会拒绝 In-flight State。

显式 Retry Policy 表示调用者承认模型成本、Tool Call、Delegation 或自定义 Step 可能重复。 配合同一个 Effect Store,使已完成幂等工作能 Replay 记录结果。恢复后的 Usage 永不减少。

Schema 与版本

Checkpoint Payload 服务商中立,但具有版本。恢复前匹配 Agent、Model、Workflow Name 与 Definition Version。不支持的 Schema 必须拒绝,不能猜测旧 Branch 或 Phase 如何映射到新 代码。

迁移要显式执行,离线或带事务 Fencing,尽量可逆,并用所有支持版本的 Fixture 覆盖。

隐私与运维

与默认脱敏的 Journal Event 不同,Checkpoint 可能含有 Transcript、生成内容、Tool Result、 Workflow Input 与 Provider Extension。需要加密、租户授权、备份、Retention、删除与访问 审计。

监控 Revision Conflict、Ambiguous Recovery、Schema Mismatch、Resume Age 与 Checkpoint Size。在每个 Write-ahead 边界测试进程死亡,而不只是测试干净重启。

安全提交一个 Revision

let initial = Checkpoint::initial(
    CheckpointId::new(),
    run.run_id(),
    "acme.order",
    1,
    json!({ "phase": "ready" }),
);
store.compare_and_swap(&initial, None)?;
 
let loaded = store.load(initial.id)?;
let next = loaded.next(json!({ "phase": "validated" }))?;
match store.compare_and_swap(&next, Some(loaded.revision)) {
    Ok(()) => println!("committed revision {}", next.revision),
    Err(error) if error.kind == CheckpointErrorKind::Conflict => {
        // 另一个 Writer 已获胜。重新加载,不要覆盖它的决定。
        let current = store.load(initial.id)?;
        println!("current revision is {}", current.revision);
    }
    Err(error) => return Err(error.into()),
}

None 只能用于创建 Revision 0。外部工作前先持久化 In-flight Phase;只有足以解释 迁移的 Result 已经 Durable 后,才能写 Stable Phase。两者之间崩溃会故意保留 Ambiguous,必须由 Resume Policy 与 Effect Evidence 决定如何处理。