Harness 运行时
Harness 运行时是 Zuno 的核心:它决定一个回合如何组装、如何持久化、如何恢复,以及扩展在什么边界内运行。
本页是导读,不是完整译文
英文版 Harness Runtime 逐节覆盖运行时的每一处契约,是唯一权威来源。本页按相同章节顺序给出每一节要解决的问题和 关键结论,用于定位与建立整体认识。
不要用本页替代英文版做实现判断:精确的字段语义、状态机转换条件、重试与恢复的分类规则, 以及验收标准都只在英文版中完整表述。两者出现分歧时以英文版为准。
运行时模型
一切都是原生组件。产品行为属于某个 Component、某个类型化服务,或某个 AgentDriver,而不属于一个不断膨胀的中心循环。
一项能力只有在接口、提供方与消费方三者齐备时才算完整。当这三个角色的生命周期不同时,应保持彼此分离。
注册是一种副作用。挂载操作返回的 disposer 精确移除它注册过的东西;profile 替换是事务性的,失败时按相反顺序回滚。
Agent 与提示词契约
Agent 具有显式的正向职责、负向委派边界、权限以及结构化输出预期。
内置 Agent 的分工:build 负责端到端交付,plan 是只读规划,deep 承担困难的跨领域实现且不再递归委派。
扩展包与可执行插件宿主
扩展要么是显式 WASI 授权下的 WebAssembly 组件,要么是使用行分隔 JSON-RPC 的受限子进程。能力必须声明,不会被默认赋予。
详见 插件与扩展。
提示词溯源
模型可见即被记录。 每一个提示词分段、外部输入、工具结果、重试通知和子 Agent 报告,只要它能改变一次模型请求,就必须能从持久会话事件中重建。
提示词组装使用稳定的分段标识、确切来源、有序内容和内容摘要。实际经过 hook 之后的提示词在 provider 请求发出之前落盘。
可审计的记忆与反思
记忆写入是提议而非直接生效。候选进入待评审状态,由人决定是否提升为常驻记忆,并且可以撤销。
持久输入
用户提示词、steering 以及子 Agent 报告在执行前进入持久 FIFO 收件箱。reportDelivery: nextStep 必须完成子结果结算、准许父级输入并唤醒父级,且不存在轮询竞态。
Plan 与 Work 状态迁移
持久的 Goal、Plan、Todo、收件箱和 job 状态控制续跑,而不是自然语言。「接下来我会……」这类文字不构成进展。
原生会话命令、压缩与硬中断
会话命令、上下文压缩与硬中断都是原生能力,不依赖模型配合。
持久 Goal 恢复
活跃的 Goal 会持续推进,直到它完成、被显式暂停或阻塞、达到预算上限,或遇到类型化的永久失败。
可恢复的 provider、网络、流、SQLite 争用、回合预算和符合条件的工具失败,会在等待前先持久化一次指数退避重试。进程重启后从 SQLite 重建截止时间。
重试延迟是正数、有上限、带抖动,并且可被用户输入打断。有效的对端 Retry-After 会被限制到配置上限,且绝不会被更早的本地延迟替换。
重试决策使用类型化错误,而非渲染后的消息。认证失败与用户中断导致暂停;无效协议、损坏的持久状态和永久性配置失败导致阻塞。
原生搜索与 Shell 隔离
搜索把遍历委托给 ripgrep 本身,Zuno 不维护第二个 ripgrep 兼容的遍历器。缺少 rg 是工具运行时的启动错误,而不是静默回退。
Shell 执行受 OS 沙箱约束。read-only 与 workspace-write 都要求一个已验证的约束后端,不可用时拒绝启动而非降级。详见 权限与沙箱。
常驻进程约束
常驻进程在声明的约束内运行,其生命周期由运行时拥有。
后台命令执行
后台命令有独立的生命周期与输出游标,父会话通过持久状态观察它们,而不是靠轮询。
后台子 Agent 与产品 Agent
工具执行默认是至多一次。ToolReplayPolicy::Never 是默认值;只有显式声明为只读或幂等的工具才可以声明 Safe。
副作用附近的超时或响应丢失属于结果不确定。这种情况会被持久化,要求检查权威状态,绝不机械重放调用。
并发网络搜索
web_search 接受一批查询,并在单查询 provider 之上拥有并发、取消、稳定排序、限流与 URL 去重。
网络出口
网络出口受沙箱的网络授权控制。deny 会创建私有网络命名空间并拒绝网络系统调用,而不是一条可被绕过的防火墙规则。
提示词工作流 V2 验收
提示词工作流 V2 的验收条件与证据记录在 中文用户指南 与 设计文档。
构建一个 harness
优先通过 ProfileBundle 与 HarnessProfile 进行组合。部署选择与可调参数属于经过校验的 profile 或配置字段。
新行为使用文档化的扩展点。改变默认 Agent 循环需要在同一次变更中更新英文版 harness 运行时文档。
客户端界面
客户端界面消费持久事件、收件箱状态和投影。TUI、server、ACP 以及未来的 GUI 客户端不得获得私有的 Agent 循环行为。
参见
- Harness Runtime(英文完整版) —— 逐节权威契约
- 权限与沙箱 —— 沙箱与权限的两个门禁
- 编排与委派 —— 委派边界与模型路由
- Goal、Plan 与 Todo —— 持久状态如何控制续跑