正在统计访客…
浏览全部文档
开始 · 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 分钟核心课程建立完整心智模型
质量与运维

使用 SLO 运维 Runifold

部署 OpenTelemetry、控制指标基数、定义目标,并诊断延迟、失败与预算压力。

实践指南·12 min

运维信号

把 Runifold 当作因果执行系统运维,而不只是 HTTP Client。衡量根 Run 成功率与延迟、 Model Duration 与 First Chunk、Agent Turn、Tool 与 Delegation Failure、Workflow Queue 与 Lease、MCP Stage、预算耗尽和持久 Store 健康。

每个 Terminal Failure 都应保留规范 Error Kind 与 Run Tree 关联。“Provider Error”太宽, 无法支持可执行目标。

观测层

OtelModel 观测规范模型调用与路由,OtelJournal 导出语义 Run 证据,OtelRuntime 连接配置好的 OpenTelemetry 边界。Workflow Budget 与 Task Governance Module 增加 Projection、Supervisor、Cleanup 与 Retention Metric。

在稳定 Library Boundary 上埋点。只包装最外层 HTTP Handler 会隐藏慢 Tool、重复 Turn、 Fallback Attempt 与等待时间。

默认目标

内置 Runbook 从下面的基线开始:

SignalObjectiveWindow
Agent Run 成功99%30 天
Agent 端到端 P95不高于 30 秒滚动 5 分钟
MCP Sampling 成功99%30 天
Agent 预算耗尽低于 2%滚动 15 分钟

这些是保守示例,不是普遍承诺。如果直接 Model、持久 Workflow、Queue Delay 或 Realtime Session 是用户可见产品,应分别定义目标。

故障处理流程

失败升高时,先按规范 Error Kind 拆分,沿 Exemplar 进入 Run Tree,再检查 Provider、 Tool、Child、Store 与 Effect 边界。延迟问题要拆分 Queue、Model Time、First Chunk、 Turn 与 Callable Duration。预算压力先比较各资源维度,再提高上限。

不能用“打开全面重试”处理事故。先确认 Retry Safety、Stream Commit State、幂等性、 剩余 Deadline 与下游容量。

基数与内容

Prometheus Label 只包含有界 Status、Error Kind、Stage 与 Route Class。Run ID、 Invocation ID、Agent 或 Tool Name、Request ID、Tenant 与用户扩展属于 Trace 或受控日志, 不能成为 Label。

OpenTelemetry 默认脱敏。只有明确目的、访问控制、Retention、删除与事故审阅后,才启用 Prompt 或 Output Capture。可观测系统不能成为第二个不受治理的数据仓库。

安装内置观测资产

从服务实际使用的 Runifold 版本导出 SLO 资产,避免 Dashboard 查询与指标名漂移:

use std::fs;
 
fs::create_dir_all("artifacts/observability")?;
fs::write(
    "artifacts/observability/prometheus-rules.yaml",
    runifold::otel::slo::PROMETHEUS_RULES,
)?;
fs::write(
    "artifacts/observability/grafana-dashboard.json",
    runifold::otel::slo::GRAFANA_DASHBOARD,
)?;

部署前校验 Prometheus 规则,把 Dashboard 先导入预发布数据源,并主动产生一次 成功、超时、Tool 失败和预算耗尽。如果面板为空,先核对埋点和标签名,不要 直接放宽告警。把 SLO 目标、燃烧率对应动作、负责人和回滚条件与部署资产放在 一起管理。