八块零件,一颗模型:拆开 Agent Harness
Claude Code、Codex、Antigravity 用起来差别巨大,拉开差距的地方在模型外面。Shubham Saboo 把每个 harness 共有的八块零件逐个拆了出来,评论区补了几个更狠的判断。
Agent 到底是什么,这个问题被讨论得很滥。Shubham Saboo 给了一个更实用的切法:agent = model + harness。
模型读上下文,选下一步动作。harness 是外面那层代码,负责把那个选择变成实际发生的工作。
Claude Code、Codex、Antigravity、OpenClaw、Hermes Agent,都是 harness。同一颗模型换个 harness,用起来可以像另一个东西。
每个 harness 都长着八块零件。
1. 循环
把上下文发给模型,模型说要用哪些工具,harness 去执行,再把结果喂回去,进入下一轮。循环到它判断任务结束。
很多 agent 的毛病不在不会调工具,在不知道什么时候该停。
2. 工具和沙箱
给模型一个终端、文件系统、浏览器,还有你接好的应用。每个任务跑在自己的隔离机器里,一条 rm -rf 炸不到宿主机。
沙箱的意义是,模型犯错的时候,代价有上限。
3. 子 agent
把边角任务分出去并行跑。每个子 agent 从干净的上下文起步,干完只交回一段简短总结。
主上下文保持干净,这一点比并行本身更重要。
4. 上下文管理
决定每一轮模型能看到什么。技能和文件按需加载,历史快填满时先压缩。
长任务里模型忘事,通常不是记性差,是 harness 没管好该给它看什么。
5. 记忆
进度笔记、git 历史、技能都落在磁盘上。新会话能读到上一轮干了什么,从断点接着走。
作者自己说,memory 没设计好是个大坑,后面会专门写。
6. 护栏
发邮件、付款、删除这类动作挂起,等你批准。真凭证放在沙箱外面,提示注入来了也偷不到东西。
7. 验证
防止 agent 递给你一份听起来完成了的总结。先跑测试、做浏览器检查,或者另找一个 grader 审一遍,过了才算完成。
agent 最擅长的就是那套自信的完成宣告。
8. 可观测性
追踪每一次模型调用和工具调用。发现它在反复改同一行代码还改不对,就推它换个路子。
重复同一个失败动作,是 agent 的常见死法。
评论区比正文还热闹。
Jaume 说了一句,harness 才是产品。Shubham Saboo 亲自认了:yes,harness is the product。模型可以换,harness 是攒出来的工程。
Thomas 的观察更直接:网上 Codex 和 Claude Code 的争论,有一半是 harness 之争穿着模型的外套。
Dominik 补了一刀:agent 的性格大概活在管道里。它记得什么、被允许碰什么、什么时候停下。
Rohan 问八块里哪块最容易导致坏运行。作者的回答是 memory。没把记忆设计好,是个大坑,他打算专门写一篇。
Jack 给了一个测恢复性的办法:在 agent 刚建完一条 CRM 记录时把进程杀掉,重启后看它是找到那条记录,还是又建一条。
Dave 说,交接的时候,除了完成了什么,还得保留什么仍然不确定。
看一个 agent 产品,先别急着看它用了什么模型。模型可以换,harness 换起来贵得多。
发布时间: 2026-10-30 23:38