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

排查 Runifold 应用故障

按照可重复路径诊断安装、凭证、模型能力、Stream、重试、Workflow、存储与恢复问题。

实践指南·12 min

安装与编译

现象常见原因处理
找不到 ProviderModelExtfrom_api_key使用了旧版 runifold确认 runifold = "0.9.0",运行 cargo update -p runifold
无法导入 Provider ModuleCargo Feature 未启用启用 openaianthropicgeminiollamabedrock
找不到 Tokio Main MacroRuntime Feature 缺失启用 tokio/macrostokio/rt-multi-thread
两个 Runifold 类型不兼容混用了不同版本的 Crate把所有 runifold-* Crate 更新到同一版本
编译器版本过低不满足 MSRVRunifold 0.9.0 需要 Rust 1.88 或更高

从下面三个命令开始诊断:

rustc --version
cargo tree -i runifold
cargo check

认证与端点

HTTP 401 通常表示凭证缺失、无效、被撤销或来自错误环境。403 通常表示身份存在,但缺少 项目、模型、区域或组织权限。404 可能表示模型 ID 或 Base URL 与所选 Provider Protocol 不匹配。

必须检查启动应用的同一个进程环境,不能打印 Secret。日志只记录配置是否存在、选择了 哪个 Provider 和模型,以及脱敏后的错误类别。

模型与 Capability 错误

纯文本成功但 Tool 或结构化输出失败时:

  1. 确认准确模型支持该 Feature;
  2. 查看 Runifold Warning 与完整 Outcome;
  3. 确认 Adapter 是原生实现或使用了正确的兼容 Wire Protocol;
  4. 把请求缩小到最小复现;
  5. 针对这个模型与 Feature 组合运行 Live Smoke Test。

必需的结构化输出或 Tool 失败时,不能静默降级为未验证文本。

超时、重试与 Stream

Network Timeout 约束一次操作,Run Deadline 约束整个执行树的有效生命周期。调整限制前, 先确定触发的是哪个边界。

拒绝、无效请求、Capability Denied、Budget Exhausted 或不确定写入不能盲目重试。 Runifold 只会重试 Adapter 标记为安全的错误,应用层重试也必须遵守同一规则。

Stream 看起来被截断时,确认 Consumer 一直读取到 Terminal Event、处理 Error Event, 并且没有丢弃最后的 Usage 或 Outcome。下游客户端断开时应取消 Run。

Workflow、存储与恢复

现象首先检查
Workflow 恢复到旧定义Definition Version 与 Checkpoint Schema
两个 Worker 执行同一 TaskLease Fencing Token 与心跳过期
重启后已完成 Tool 再次运行Write-ahead Effect Record 与 Idempotency Key
Task 一直没有唤醒Signal Name、Tenant Scope、Retention 与 Timer Clock
Checkpoint 更新被拒绝陈旧 Revision 或 Compare-and-swap 冲突

不确定状态不能视为成功。保留记录,与外部系统协调,并应用显式 Resume Policy。

构建有效的最小复现

请包含:

  • 准确的 runifold 与 Rust 版本;
  • 已启用的 Cargo Feature;
  • 不含凭证的 Provider 与模型 ID;
  • 最小 Request、Tool Schema 或 Workflow Definition;
  • 脱敏错误 Kind 与 Retry Safety 分类;
  • 错误发生在离线测试还是只发生在 Live 环境;
  • 不含用户内容的 Run ID 与 Invocation ID。

先用 Scripted Model 或 Cassette 复现。如果只有真实服务失败,再增加带严格预算的 Provider Smoke Test,并比较 Wire Capability 证据。