正在统计访客…
浏览全部文档
开始 · 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 分钟核心课程建立完整心智模型
持久工作流

对持久 Workflow 进行版本管理

保持 Definition Identity 稳定,部署兼容 Worker,拒绝未知 Checkpoint Schema,并避免重新解释历史。

实践指南·12 min

版本为何是运行时状态

持久 Task 可能在数周后由另一进程恢复。Checkpoint 指明生成它的 Workflow Definition 与 Schema。改变 Step 顺序、Branch Identity、Wait 含义、Input Shape 或恢复策略,都会改变旧 状态的意义。

因此 Version 属于执行 Identity,而不是 Release 装饰。

Definition Identity

使用稳定 Workflow Name 加显式 Version。Step ID 与 Branch ID 是持久数据,不能从源码行号 或展示 Label 派生。注册所有 Active Task 可能需要的 Definition。

在获取外部权限前拒绝缺失或不匹配 Definition。不要让旧 Checkpoint 静默通过最新 Graph。

部署策略

安全选项包括同时运行新旧 Worker Pool、一个 Worker 注册多个 Version、Cutover 前 Drain 旧 Version,或只让新 Task 使用新 Version 而旧 Task 原样完成。

用 Deployment Admission 控制新工作进入哪个 Version。按 Version 监控 Active 与 Waiting Task 数,但不要把高基数 Task Identity 放入 Metric。

Checkpoint 迁移

如果旧代码可以继续服务,优先不迁移。必须迁移时,定义从精确 Source Schema 到精确 Target Schema 的类型化转换,并验证 Tenant、Workflow Identity、Phase、Branch Membership、Usage 与 Effect Evidence。

Migration 必须幂等、对 Active Worker 带 Fencing、可审计,并使用生产形态 Fixture 测试。 不支持的历史要明确失败。

退役检查

删除 Version 前,证明不存在 Queued、Leased、Waiting 或可恢复 Task;没有 MCP Task Route 指向它;没有 Timer 或 Signal 能唤醒它;满足 Retention 与 Legal Hold;承诺支持的旧 Checkpoint Fixture 仍有覆盖;Rollback 不再需要旧 Binary。

发布期间同时注册两个版本

let v1 = Workflow::builder("order-review")
    .version(1)
    .step("review", ReviewV1, CapabilitySet::new())
    .build()?;
let v2 = Workflow::builder("order-review")
    .version(2)
    .step("review", ReviewV2, CapabilitySet::new())
    .step("audit", WriteAudit, audit_capabilities)
    .build()?;
 
let mut registry = WorkflowRegistry::new();
registry.register(WorkflowDefinition::new(
    Arc::new(v1), v1_budget, v1_capabilities,
))?;
registry.register(WorkflowDefinition::new(
    Arc::new(v2), v2_budget, v2_capabilities,
))?;

只把新 Task 路由到版本 2,同时让 Worker 继续恢复版本 1。按 Definition Version 统计 Queued、Leased、Waiting 与 Recoverable Task。只有所有计数为零且没有外部 Route 能创建 或唤醒版本 1 时才能移除。缺失定义会产生 DefinitionUnavailable,绝不能静默替换成 最新版本。