什么是 harness(智能体外壳)?
文章摘要
这是 Earendil 团队 2026 年 8 月 20 日发的一篇科普文,排版刻意做成一封电子邮件的样子(From: Earendil Product、To: You、Subject: What is a Harness?)。作者开门见山地说:如果你天天泡在 AI 新闻流里,「harness」对你来说大概已经默认指「agent harness」了——那这篇不是写给你的。它是写给那些好奇但一直不好意思问的人。
文章从剑桥词典的两条释义切入:名词是「带绑带和扣带的一套装备,用来控制或固定人、动物或物体」,动词是「驾驭某物,通常是为了利用它的力量」。作者回忆自己中学时爬学校墙壁前系上的攀岩安全带(并自嘲是个平庸的攀岩者),配图是 Tom Frost 拍的 Royal Robbins 在酋长岩上的照片,安全带上挂满了登攀工具。攀岩安全带做的事有三层:一是把你和主锁、绳索连起来,防坠落、控节奏、约束路线;二是它是个挂载点,粉袋、取塞器、快挂都往上挂;三是它可以跟着你换山头,可以按地形改装,攀岩者、杂技演员、树艺师都在用,而且每个人都能把它调成自己的样子。作者认为 agent harness 在结构和功能上都与之高度同构。
正文给出的定义是:agent harness 是一段软件,为 AI 模型提供一个运行环境。有人简化地写作「Agent = Model + Harness」。它最早的应用场景是写代码,如今各类 AI 智能体的核心都是它。关键的一句是:跟模型不同,终端用户可以真正拥有自己的 harness。交互界面不一定是终端——软件工程师常在终端里用 Pi,OpenClaw 走的是 iMessage、聊天应用或邮件,而 Earendil 自家的 harness Lefos 主要通过邮件交互。
不管界面如何,harness 一般做四件事:
一、系统提示词(System Prompt)。 模型在训练过程中已经内化了一套规则,最有名的例子是 Claude Opus 4.5 那份被广泛讨论的「soul document」。harness 里的系统提示词与之类似,但嵌入得没那么深——更像新员工入职第一天拿到的一份说明:它没有被内化,但模型知道干这份活时要遵守。系统提示词会随每一次请求一起注入对话。
二、工具(Tools)。 工具是一组用代码写成的能力,模型可以「调用」。harness 既负责描述工具,也提供工具本身的实现,比如网页搜索、写代码并执行、撰写邮件。关键在于:harness 通常不规定模型何时、如何使用工具,它只是把工具摆出来、描述清楚,由模型自己决定。
三、智能体循环(Agentic Loop)。 作者用一个完整例子讲清楚了这个词:假设 harness 跑在邮件里,带 WebSearch / WriteCode / ComposeEmail 三个工具,用户要求「比较本地小学的排名和考试成绩并给出推荐」。模型先靠预训练理解「小学」「本地」「排名」分别指什么,构造搜索词去抓最新数据;拿到结果后,它在原始请求的语境里复核——如果判断第一轮没搜到对的信息或搜得不够,它会自己决定再搜一次,这就是「循环」的第一个明确表现。数据齐了之后,它决定用「写代码」工具做一张表格(毕竟「所有表格本质上都是代码」),做完再拿去和原始需求比对,不满意就退回去再搜。觉得够了才调用 ComposeEmail,复核结论、写正文、把表格作为附件带上,模型判断任务完成,循环闭合。几秒钟后用户收到一封带摘要和附件的邮件。
四、转译层(Translation Layer)。 这是让同一个 harness 能对接不同模型的那一层,有时甚至能在同一个循环里针对不同子任务切换不同模型。作者认为这一层的意义远超工程:它把控制权交还给终端用户。你可以拿同一个 harness 去接 Anthropic、OpenAI,或者性价比(按每任务成本算)常常很不错的开放权重模型。这一层把权力和杠杆从 AI 实验室手里往终端用户这边挪。 如果人们能在自己电脑上跑自己的 harness,他们就保住了自主性(agency)——保住了把工具改成自己样子的自由,也保住了本地留存会话记录的能力,而这些记录长期看会构成一个人「与机器的通信集」。在上面那个例子里,用户完全可以把同一封邮件同时发给三家的模型,比较结果和成本,并把三个答案存在同一个地方,而不是散落在三个 App 里。
最后两节是立场表达。作者说 Pi 是个极简 harness:系统提示词很短,工具集很小,开箱状态就是「尽量别挡路」;但用户会不断扩展和塑形它,改系统提示词、写贴合自己工作流的扩展,然后互相分享——Pi 用户之间已经共享了超过 5000 个扩展,而 Pi 本身免费开源、跑在你自己的笔记本上。作者也承认 harness 并非天生开源和中立:第一个流行的 agent harness 是 Claude Code,它并不是被设计成一个与模型无关的转译层,而是一个让你在本机上用 Claude 模型写代码的应用。此后 OpenClaw、OpenCode、Hermes、Pi 这批免费开源 harness 的成长令人鼓舞。结尾一句是全文的题眼:我们不会靠无视今天已经存在的技术来强化人的自主性,而要「睁大眼睛、握紧手柄地去驾驭它们;确保是我们挥动锤子,而不是锤子挥动我们」。
HN 评论精华
这条帖子拿到 583 分。有意思的是作者本人(ni10c)在评论区说,这篇明明是写给非技术读者的,结果闹到 HN 上来了。讨论主要分成三条线:harness 会不会成为价值高地、写 harness 的实战经验、以及大家对这个比喻本身的再创作。
- theturtletalks 抛出了争议最大的一条:「harness 是下一个前沿。如果说 LLM 是电,harness 就是『电器』。现在 Claude 和 ChatGPT 之间还在打交流电 vs 直流电,等这一仗打完,真正提供价值的会是 harness。」他说 Pi 最好是因为扩展系统——可以把 Pi 变成股票交易员、软件工厂,什么都行;遇到新的 harness 项目,他直接让 Pi 去读那个代码库,然后给自己做一个把该功能搬进 Pi 的扩展,Prime Intellect 和 Deepseek 的 harness 他都这么干过。
- 反对声同样密集。mpawelski:「我真以为这条评论是反讽。」grey-area:很多人已经信了「LLM 会通向 AGI」这个教派,「这个怪比喻大概也是用 LLM 想出来的」。DarmokTanagra 更狠:「就是几年前喊加密货币口号的同一批人。」amelius 从产业角度反驳:harness 又不是什么火箭科学,注定会商品化;真正的价值提供者是硬件,其次是 LLM(差一大截),harness 还要再远一大截。
- 围绕「harness 会不会被吸进权重里」有一段精彩交锋。conmod278 说各家实验室现在都在带着 harness 做后训练,harness 正在被吸收进模型权重。layer8 一句话顶回去:harness 按定义就是你希望保持可定制的那部分,这部分不会被吸收进权重。 dominotw 提供了反向证据:Claude Code 据说删掉了几百行系统提示词,因为对新模型来说已经不需要了。grim_io 给出第三种预测:最后会出现一个「Chromium 形状的 harness」——一个功能完备的标准实现,所有人都基于它开发,因为事事自己造太疯狂了;「这正是 Pi 的反面」。jascha_eng 冷冷地总结:这就是继 2025 年的「agent」之后,2026 年套在任何 LLM 应用上的炒作词。
- Syntaf 贡献了整个讨论里最有信息量的实战帖。他在公司里给会计智能体做 harness:最初是给 LLM 做了个 CLI 工具方便它操作平台,「我怎么推荐都不为过——内部 CLI 的价值极高,既好玩又对智能体极其有用」。一开始配 skills 用,但发现大家写的 skill 太规定动作、太局限于作者自己那点职能,「一个两千行的 skill 和我们人有一样的盲区;如果智能体只是照着清单走,它反而更不会去推理手上这个请求」。于是他们换了个问法:干脆让智能体自己推理该做什么,我们只提供工具和护栏来收集上下文、执行会计工作。结果前沿模型全面跑赢了那套高度规定化的 skill,而且能覆盖更大范围的、没写过说明的任务。「做了十年 CRUD 之后,harness 工程真是一股清流。」
- YZF 说这正是他日常工作里反复看到的张力:有些人把 LLM 当写代码一样对待,给一长串针对具体场景的详细指令;他自己则尽量留白,只给必要信息和诉求。过度规定会过约束模型、用互相冲突的指令塞满上下文、削弱它应对新情况的能力——「而现实中大部分情况都是新情况」。他的结论很直接:「如果你想执行一个流程或清单,那你多半就不该用 LLM。」 wonnage 反驳说这只对走熟的路有效,「fix ci」效果极好,但「why app slow」这种欠定义的任务就不行;0x457 立刻举了反例:他的 LLM 会去 grafana MCP 拉指标、trace 和 CPU profile,然后自己定位慢在哪并给出方案。visarga 分享了折中做法:把任务外化成 markdown 清单文件,仍然由智能体规划,但可以传给评审智能体先纠错;让编码智能体在每个勾掉的条目上写注释,同一个文件就变成了执行日志,随时可以换智能体或几天后接着做——他刻意不用内置的 todo 工具,因为那样不留下同样的产物痕迹。
- xrd 提了一个几乎没人回答好的真问题:有没有擅长「交接(handoff)」的 harness?他要的交接包括:终端 CLI 交接到手机上的 webui、一个团队成员交接给另一个、TUI 里写提示词交接到邮件、一个模型/供应商交接到另一个。理由是他老是搞不清自己的 harness 到底跑在哪——有时在隔离虚拟机,有时在笔记本,有时在家里那台带大显卡的机器上。gf000 的答案是 tailscale + tmux 挂在家用服务器上,另外提到用 iroh 做 ACP 代理去控制另一台设备上的 Claude。
- 作者 ni10c 现身征询另一个备选比喻:harness = 底盘,model = 引擎,token = 燃料,agent = 汽车,问大家哪个解释力更强。asQuirreL 觉得顺着「harness」这个词本义走更自然:harness 就是挽具,model 是马,token 是干草,agent 是马拉车——而且这个比喻还带出一层含义:同一匹马可以挽在犁上、马车上,或者只配个鞍,取决于你的目的。johnmw 半开玩笑:model = 学步的幼儿,harness = 婴儿蹦跳椅。mijowi 认真接了一句很有意思的话:婴儿椅几乎是 agent harness 的反面——婴儿椅是在约束和圈住婴儿,而 agent harness 在控制的同时也在赋能。
- sysfiend 给了最简洁的一版:模型 = 脑细胞之间的连接,harness = 其余的一切。他几个月来同时用 openclaw、pi、按项目配置的 cursor 和 codex,「即使大部分时候用的是同一个模型,也能清楚看到它们的行为方式因配置而截然不同」。