可信执行
理解 RunContext
控制一棵运行树的身份、因果关系、生命周期、权限、记账、元数据与 Journal。
RunContext 管理什么
RunContext 是一棵因果运行树的执行信封,包含稳定身份、父子关系、取消、截止时间、
共享预算记账、能力、元数据和事件日志。
它不是聊天记录,也不是全局应用状态。应在 HTTP 请求、任务或工作流 Task 等入口 边界创建根 Context。
创建根运行
先设置明确限制且不给权限,再只授予这次运行真正需要的能力。
use runifold::{Budget, BudgetTracker, CapabilitySet, RunContext};
let budget = Budget {
turns: Some(8),
tool_calls: Some(4),
..Budget::default()
};
let run = RunContext::root(
BudgetTracker::new(budget),
CapabilitySet::new(),
);便捷的 prompt API 会创建默认 Context;当策略或记账重要时,应切换到显式 Context。
子运行
工具、子 Agent 与工作流步骤会从父级派生子 Context。子级共享取消和记账,同时有 自己的身份,并且只接收显式委派的权限。
因此一次请求可以重建为完整树形,也能防止辅助组件仅因调用者有权限就自动继承权限。
事件日志
Journal 记录有语义的生命周期事件:开始、用量、调用边界、取消、失败与完成。审计 和恢复使用 Journal;运行监控和指标使用 OpenTelemetry。
租户与请求 ID 可以作为低基数元数据。API Key 和原始秘密不能进入元数据、事件或 错误信息。