解剖三个开源 Harness Agent:Codex、OpenCode 与 grok-build

phenix-fledgling Lv5

2025 年之后,”harness agent”成了一类产品的统称:给大模型套上工具、权限、记忆和会话管理的外壳,让它能真正替人干活。我把三个已开源的生产级实现完整读了一遍,这篇是横向结论。

三家的立身之本

系统 语言 核心设计哲学
OpenAI Codex Rust 引擎-界面分离:SQ/EQ 双队列,协议先行(前身即 ACP 思想)
sst OpenCode TypeScript Server-first:一切能力先是 HTTP API,TUI 只是客户端之一
xAI grok-build Rust 库化解耦:每个能力域一个 crate,压缩与记忆做得最细

三家表面差异很大,内核惊人一致:一个 while 循环 + 工具契约 + 权限漏斗 + 上下文管理

五个共同判断

  1. 据”有没有 tool_call”判定回合结束,而不是 finish_reason——部分模型 stop 时仍带着工具调用,信 finish_reason 会提前收工。
  2. 逐条持久化:每产生一条消息就 append 到磁盘日志(rollout/session jsonl),崩溃只丢未落盘的增量,resume 靠重放。
  3. 只读工具并行、写操作串行:读写闸既提速又保安全。
  4. 权限是规则漏斗:allow / ask / deny 三元组,后写的规则覆盖先写的,危险前缀直接拒。
  5. 子代理不互相通信:星型拓扑,主 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 进行许可。
评论
目录
解剖三个开源 Harness Agent:Codex、OpenCode 与 grok-build