正在统计访客…
浏览全部文档
开始 · 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

在不丢失语义的前提下流式输出

消费可见文本,同时保留推理、用量、警告与服务商事件。

实践指南·8 min

流式执行为什么不同

流不是一串文本片段,而是正在发生的 Agent 执行循环。它包含模型增量、工具边界、 检索完成、用量更新、警告,以及一个最终结果。

需要降低首字延迟或展示实时进度时使用流;只关心完整结果时使用 prompt

消费事件流

持续轮询直到流结束。每个项目都可能失败,因此必须处理 Result

use futures_util::StreamExt;
use runifold::AgentStreamEvent;
 
let mut events = agent.stream("Explain the incident", &run);
while let Some(event) = events.next().await {
    match event? {
        AgentStreamEvent::Model { event, .. } => render_model_event(event),
        AgentStreamEvent::UsageUpdated { usage } => update_usage(usage),
        AgentStreamEvent::Completed { outcome } => save(outcome),
        _ => {}
    }
}

业务层应处理服务商无关的 ModelStreamEvent,不要重复解析某家服务商的网络协议。

最终状态

不要通过拼接可见增量来重建最终答案。Completed 事件包含规范化的 AgentOutcome:最终响应、完整记录、计数器、警告与用量。

健壮的消费者会用通配分支兼容未来事件类型,并保证最终结果只持久化一次。

取消与断开连接

浏览器断开并不自动决定服务端任务是否继续。你需要明确选择:取消 RunContext、脱离连接并持久化进度,或把工作交给持久工作流。

HTTP 场景下,SSE 适合浏览器文本;NDJSON 往往更适合服务间的类型化事件。传输 帧格式应与 Runifold 事件语义分离。