正在统计访客…
浏览全部文档
开始 · 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 存储管理兼容性与可信发布
文档/构建 Agent
第一次使用?通过 45 分钟核心课程建立完整心智模型
构建 Agent

构建并配置 Agent

组合模型身份、系统指令、轮次限制、能力策略与显式构建验证。

实践指南·12 min

Agent 的组成

Agent 由模型、可信指令、可选上下文、可调用工具和子 Agent,以及本地执行策略组成。 它不会拥有环境中的隐式凭证、隐藏的记忆后端或无限循环。

let agent = runtime
    .agent("support")
    .system("Answer only from relevant evidence.")
    .max_turns(6);

Agent 名称是事件和诊断信息中的执行身份。应该使用 supporttriageinvoice-review 这类稳定的应用名称,而不是随机请求 ID。

Builder 与验证

流式 Builder 会保留注册错误,直到调用 build。因此工具和子 Agent 可以保持链式 注册,同时不会静默覆盖重复名称。

let agent = runtime
    .agent("support")
    .system("Be concise.")
    .max_turns(6)
    .build()?;

便捷路径可以直接在 Builder 上调用 promptprompt_text,由它完成构建与运行。 如果 Agent 会长期存在、被共享,或需要在应用启动时完成验证,应该显式调用 build

构建错误包括空身份、零轮次限制、重复工具名、无效检索配置,以及工具与子 Agent 使用同一个可调用名称。

指令与上下文

使用 system 表达可信的应用策略,使用 context 提供模型可以引用和推理的证据。

let agent = runtime
    .agent("returns")
    .system("Never invent policy.")
    .context("Returns are accepted within 30 days.");

Runifold 会把上下文标记为不可信的用户级数据。检索到的文档永远不会变成系统指令, 避免某段文本仅仅因为被 Retriever 选中就获得更高权限。

轮次与能力策略

max_turns 限制本地模型—工具循环。它与运行树共享的 Budget.turns 不同,后者会 跨所有后代统一记账。

工具、推理或严格结构化输出等能力,可能在某个模型上不支持或处于未知状态。当应用 必须失败关闭,而不能接受明确降级时,应配置 FeaturePolicy

在 Tool 执行前审查计划

Runifold 0.9 可以在模型提出的 Tool Call 或子 Agent 委派获得权限前审查中间 Turn:

use runifold::{
    TerminalReviewVerdict, TurnReviewPolicy, TurnRuleReviewer,
};
 
let gate = TurnRuleReviewer::new("read-only-plan", "v1", |request| {
    if plan_is_read_only(&request.candidate) {
        Ok(TerminalReviewVerdict::approve())
    } else {
        TerminalReviewVerdict::repair(serde_json::json!({
            "code": "unsafe_plan",
            "instruction": "Choose a read-only evidence source."
        }))
    }
})?;
 
let agent = agent.turn_reviewer(
    gate,
    TurnReviewPolicy::new(2),
    reviewer_capabilities,
);

Repair 会丢弃尚未执行的计划,并在同一条有界 Transcript 中让原 Agent 重新考虑; Reject 直接失败关闭。默认只审查中间响应;只有确实需要同一 Gate 同时检查最终输出时, 才使用 TurnReviewScope::EveryModelResponse

Commit 前审查最终输出

通过 .terminal_reviewer(...) 挂载 AgentReviewer、确定性的 TerminalRuleReviewer 或组合 Reviewer。Completion 与结构化输出校验先执行,只有 本地有效的 Candidate 才会进入语义审查。

use runifold::{AgentReviewer, ReviewRubric, TerminalReviewPolicy};
 
let reviewer = AgentReviewer::new(
    reviewer_agent,
    ReviewRubric::new(
        "evidence-correctness",
        "v1",
        "Approve only when every conclusion follows from stated evidence.",
    )?,
)?;
 
let agent = agent.terminal_reviewer(
    reviewer,
    TerminalReviewPolicy::new(2),
    reviewer_capabilities,
);

Reviewer 作为权限衰减的子 Run 执行,共享调用者的 Token、费用、Turn、Deadline 与取消 预算。持久 Checkpoint 会绑定 Reviewer 名称、版本、策略、Capability 和 SHA-256 配置 指纹。已准备好的 Candidate 恢复时不会重新生成;中断中的审查必须取得显式重试权限, 避免静默重复审查。

生产检查清单:

  • 为每个 Agent 指定稳定的名称与职责;
  • 可信策略放入 system,证据放入 context;
  • 设置有限的本地轮次;
  • 在 Tool 执行前审查高风险计划,在 Commit 前审查关键答案;
  • 只注册 Agent 真正需要的工具与子路由;
  • 使用显式 RunContext 管理租户策略与共享记账。