解剖三个开源 Harness Agent:Codex、OpenCode 与 grok-build
2025 年之后,”harness agent”成了一类产品的统称:给大模型套上工具、权限、记忆和会话管理的外壳,让它能真正替人干活。我把三个已开源的生产级实现完整读了一遍,这篇是横向结论。
三家的立身之本
| 系统 | 语言 | 核心设计哲学 |
|---|---|---|
| OpenAI Codex | Rust | 引擎-界面分离:SQ/EQ 双队列,协议先行(前身即 ACP 思想) |
| sst OpenCode | TypeScript | Server-first:一切能力先是 HTTP API,TUI 只是客户端之一 |
| xAI grok-build | Rust | 库化解耦:每个能力域一个 crate,压缩与记忆做得最细 |
三家表面差异很大,内核惊人一致:一个 while 循环 + 工具契约 + 权限漏斗 + 上下文管理。
五个共同判断
- 据”有没有 tool_call”判定回合结束,而不是 finish_reason——部分模型 stop 时仍带着工具调用,信 finish_reason 会提前收工。
- 逐条持久化:每产生一条消息就 append 到磁盘日志(rollout/session jsonl),崩溃只丢未落盘的增量,resume 靠重放。
- 只读工具并行、写操作串行:读写闸既提速又保安全。
- 权限是规则漏斗:allow / ask / deny 三元组,后写的规则覆盖先写的,危险前缀直接拒。
- 子代理不互相通信:星型拓扑,主 Agent 编排一切(详见多智能体那篇)。
三家的分歧点
- 压缩:grok-build 最讲究(三种风格 + 质量合同),OpenCode 简单粗暴(阈值触发一次性摘要),Codex 依赖大上下文窗口延后压缩。
- 记忆:OpenCode 没有长期记忆;Codex 有两阶段记忆管线;grok-build 有混合检索(BM25 + 向量 + 时间衰减 + MMR)。
- 扩展:OpenCode 的四层扩展(MCP / Skill / Plugin / Hooks)最完整,18 个钩子点位。
我为什么做这个研究
我在用 Python 自研一个个人 Agent(对话大脑 + 长期记忆 + IM 渠道 + 编码委派),这三家就是我的”参考答案”。研究方法:源码 + 官方文档全量拉到本地,逐能力域做横向对照表,再把结论落成自己的实现。后面几篇文章分别展开循环、压缩、记忆、权限和多智能体。
- 标题: 解剖三个开源 Harness Agent:Codex、OpenCode 与 grok-build
- 作者: phenix-fledgling
- 创建于 : 2026-07-27 12:00:00
- 更新于 : 2026-07-29 02:35:18
- 链接: https://blog.xugua.xyz//post/解剖三个开源 Harness Agent:Codex、OpenCode 与 grok-build.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论