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

运行并行 Branch 与安全 Race

预留共享预算、持久化 Branch 进度、确定性 Join、快速失败,并且只对副作用安全工作执行 Race。

实践指南·12 min

并行契约

并行 Workflow 是受治理的 Fan-out/Fan-in Node,而不是一组 Detached Future。每个唯一命名 ParallelBranch 接收同一个 Canonical Input、衰减后的 Capability Set、预留预算份额与 子 Run。

所有 Branch 必须全部 Admission 后才开始。Join Output 按稳定 Step Identity 组织,因此 完成时序不会改变输出顺序。

预算预留

只有原子 Counter 时,最快 Branch 可以消耗全部剩余预算。Batch Reservation 为每个 Sibling 分配确定性最大所有权。Batch 要么全部成功,要么不改变任何状态;Scoped Tracker 无法消费 其他 Branch 的份额。

消费转成已提交 Run Usage。最后一个 Scoped Reservation 释放时,未用容量归还。Reservation 应表达可接受最大值,而不是乐观平均值。

持久 Branch 状态

Checkpoint 把每个 Branch 记录为 In-flight、带 Output 的 Completed 或 Failed。成功 Output 独立持久化。恢复不会重跑 Completed Branch;Incomplete Work 需要显式 Retry Authority。

Fail-fast Parallel 会记录失败 Branch 并取消未完成 Sibling。取消是协作式的,不能证明远程 调用停止,也不会撤销 Effect。

First-success Race

Race 返回第一个成功 Canonical Output,但只接受 Pure 与 ReadOnly Capability。Idempotent Write 仍被拒绝:幂等避免重复写,不会让 Losing Branch 的非预期写变得合理。

Winner 产生前,每个 Branch 都至少 Poll 一次。Loser 被取消,并保守 Forfeit 未用 Reservation, 因为远端 Usage 可能继续但不再返回终止事件。

选择策略

需要所有结果时使用 Parallel Fan-out;延迟重要、Route 只读且能接受最坏 Losing Cost 时使用 Race;第一 Route 可以在第二 Route 开始前安全失败时使用顺序 Fallback;外部写需要确定顺序时 避免并发。

生产前记录 Branch Authority、Reservation、Failure Policy、Checkpoint 行为与协调方式。

构建有界 Parallel Node

let per_branch = Usage { turns: 1, ..Usage::default() };
let workflow = Workflow::builder("parallel-analysis")
    .parallel("analyze", [
        ParallelBranch::step(
            "risk", RiskStep, CapabilitySet::new(), per_branch,
        ),
        ParallelBranch::step(
            "value", ValueStep, CapabilitySet::new(), per_branch,
        ),
    ])
    .build()?;
 
let run = RunContext::root(
    BudgetTracker::new(Budget { turns: Some(2), ..Budget::default() }),
    CapabilitySet::new(),
);
let outcome = workflow.run("proposal", &run).await?;

Join 后的 JSON Object 按稳定 Branch ID 排列,与实际完成顺序无关。任何 Branch 开始前, Parent Budget 必须能够一次性接纳全部 Reservation。race(...) 使用同样结构,但只能 授予 Pure 或 ReadOnly Capability;Builder 会拒绝有写权限的 Branch。