Harness 工程:是什么,如何运作
一份通俗易懂的指南,介绍什么是 AI harness,以及 harness 工程如何决定 AI 智能体的能力。

什么是 harness 工程
harness 工程是构建 AI 工具 harness 的工作,harness 指的是工具中除 AI 模型之外的所有部分。
模型就是 AI 系统本身,它经过大量文本的训练,因而能够阅读和撰写语言。AI 模型的例子包括 OpenAI 的 GPT、Anthropic 的 Claude 和 Google 的 Gemini。
模型本身只能接收文本(有时也能接收图像或音频)并输出文本。它无法记住过去的对话,无法查询最新信息,也无法运行代码。因此,它需要一个 harness 来管理模型获得哪些信息、可以使用哪些应用、被允许做什么,以及如何检查它的工作成果。
即使是最基础的聊天助手也需要 harness。模型一给出回答就会忘掉这轮交流,因此由 harness 负责保存对话记录。如果有人先问了关于巴黎的问题,接着又追问“它的人口是多少?”,harness 会把这两个问题一起发送给模型。模型正是借此知道“它”指的是巴黎。
harness 工程是基于同一模型构建的两款工具表现差异巨大的原因之一。例如,在一项独立测试中,研究人员保持模型(GPT5)不变,只更换了 harness,结果该模型在一项编程测试中的得分变化幅度高达 11%。
Anthropic 和 OpenAI 等 AI 模型开发商会为自家的 AI 产品(如 Claude Code 和 Codex)构建 harness。构建 AI 产品的公司也会为所选用的底层模型设计 harness。使用 AI 工具的人同样会塑造 harness 的一部分。许多工具允许用户添加常设指令、连接应用,并选择哪些操作需要经过他们批准后工具才能执行。
面向 AI 智能体的 harness 工程
每个 AI 工具都有 harness,但在使用 AI 智能体时,harness 工程尤为重要。智能体会自主处理多步骤任务,例如调研竞争对手并将调研结果整理进电子表格,而 harness 负责运行其中的每一步。因此,如果 harness 出了错,比如抓取了去年的价格,后续的所有步骤也会受到影响。
大多数智能体 harness 包含六个主要部分:
1. 智能体循环
智能体循环是 harness 中的一段代码,负责让任务一步一步地向前推进。
AI 模型会决定完成任务所需的下一步,并编写一个工具调用:这是一个简短的请求,指明 harness 中的某个工具(例如网页搜索)以及该工具应执行的操作。
harness 识别出该请求后执行搜索,并将结果添加到模型可见的内容中。模型阅读这些结果,然后决定下一步做什么。
2. 上下文管理
模型在训练过程中学到通用知识,但这些知识截止于训练结束的日期。它不包含任何与当前任务相关的具体信息,比如公司的文件、当天的新闻,或者对话中先前说过的内容。
对于所有这些信息,模型都依赖于其上下文窗口:即 harness 在每次回复前提供给它的文本,例如指令、查询、目前为止的对话以及搜索结果。
上下文窗口只能容纳固定数量的文本。而且,即使在窗口填满之前,模型有时也会遗漏埋藏在长篇输入中间部分的信息。
因此,harness 负责上下文管理,只挑选每一步所需的信息。例如,如果任务是比较五家竞争对手的定价,harness 可能只会提供每家公司的定价页面,而不是其整个网站。在长时间任务中,harness 还可以用简短摘要替换先前步骤的详细记录,让模型既能掌握已完成的工作,又不会让这些历史记录占满窗口。
3. 工具
工具是执行模型所请求操作的代码。每个工具负责一类操作,例如搜索网页、打开并阅读网页、运行代码或编辑文件。当模型编写工具调用时,harness 会将其传递给相应的工具,并返回结果。
许多 harness 还包含连接器,这类工具会利用用户授予的访问权限,将智能体连接到特定应用,例如电子邮件、日历或共享云端硬盘。例如,借助日历连接器,智能体可以在建议会议时间之前先查看某人的空闲时间。
4. 记忆
记忆是从一个会话延续到下一个会话的已存储信息。harness 会在会话期间保存简短的笔记,例如用户的偏好或项目的进展情况。在下一个会话开始时,harness 会将这些笔记添加到上下文窗口中,让模型先阅读笔记,再阅读新的查询。举例来说,智能体正是借此才能从上次中断的地方继续处理每周报告,而不必从头开始。
5. 权限
权限是规定智能体可以访问什么、可以做什么的规则。访问规则决定它可以打开哪些文件、应用或网站。审批规则决定哪些操作必须等待用户批准,例如发送消息或进行购买。
开发智能体的公司会在 harness 的代码中设置其中一部分规则。之后,组织的管理员可以添加自己的规则,个人用户也可以自行选择诸如要连接哪些账户之类的设置。
6. 验证
验证是在智能体的工作成果交到用户手中之前对其进行检查的代码。它使用两类检查:
- 固定规则:即每次都以相同方式判定通过或失败的特定测试,例如确认报告中的每个数字都出现在智能体实际读过的文档中。
- 由另一个 AI 模型进行审查:该模型会阅读工作成果并作出评判。它能发现难以转化为规则的问题,例如摘要遗漏了某个要点。
没有任何单一检查能发现所有问题,因此 harness 通常会将这两类检查结合使用。当某项检查发现问题时,harness 会将问题描述添加到模型的上下文窗口中,并将任务重新送回智能体循环。模型修复问题后再次尝试,因此许多错误在用户看到结果之前就已得到纠正。
harness 工程示例
为客户会议做准备
任务:一位客户经理请智能体为明天与客户的会议准备一份简报,内容涵盖未解决的问题和议程草案。
harness 的作用:
- 智能体通过电子邮件连接器,在该经理的收件箱中搜索与这位客户往来的邮件。
- 权限设置允许它读取电子邮件,但不允许发送任何邮件。
- 上下文管理只向模型提供最近三个月与该客户往来的邮件,而非整个收件箱。
- 智能体循环会执行数轮搜索和阅读,模型则将找到的内容归纳为若干未解决的问题。
- 随后,验证环节会检查简报中的每个问题是否都能对应到一封真实的电子邮件。
可能的结果:经理会收到一份一页纸的简报,其中每一点都可以追溯到来源邮件。
更新月度销售报告
任务:一位运营主管请智能体用本月的数据更新月度销售报告。
harness 的作用:
- 记忆功能会加载上个月会话中的笔记,包括报告的格式,以及该主管提出的将数字四舍五入到千位的要求。
- 文件工具会打开团队共享云端硬盘上的销售电子表格。
- 权限设置允许智能体编辑报告草稿,但不允许编辑源电子表格,因此原始数据不会被误改。
- 验证环节会检查报告中的总计是否与电子表格一致。
可能的结果:报告以与上个月相同的格式交付,用户无需再次说明。
整理共享收件箱
任务:一个支持团队请智能体按主题整理上午收到的请求,并为常见请求起草回复。
harness 的作用:
- 智能体循环会逐封处理收件箱中的邮件。
- 对于每封邮件,模型会选定一个主题标签,然后由 harness 通过电子邮件连接器添加该标签。
- 在任务开始时,harness 会将团队已获批准的回复模板作为参考添加到上下文窗口中,让模型以模板为基础撰写每份草稿。
- 一条审批规则会将每条回复保留为草稿,直到团队中有人审核并发送。
可能的结果:团队开始一天的工作时,请求已经分类完毕,回复也已在等待审核。
修复网站中的错误
任务:一位开发者请编程智能体修复一个导致结账按钮无法正常工作的错误。
harness 的作用:
- 智能体在沙盒中工作。沙盒是代码的隔离副本,智能体在其中所做的更改不会影响线上网站。
- 代码工具让模型可以读取和编辑文件。
- 每次更改后,验证环节都会运行项目的自动化测试。
- 任何失败都会作为新信息反馈给模型。
可能的结果:智能体会不断调整修复方案,直到测试通过。随后,开发者会在更改上线前对其进行审查。
harness 工程、提示词工程与上下文工程的对比
提示词工程是构建和优化单个查询的工作。上下文工程是管理模型所见全部内容的工作。harness 工程则是设计和改进模型运行所处的整个系统的过程。
术语 | 通常由谁负责 | 竞争对手调研任务中的示例 |
提示词工程 | 任何编写查询的人 | 要求“每个竞争对手一行,每个定价档位一列” |
上下文工程 | 构建 harness 的人员,以及附加文件或模板的用户 | 向模型提供每家竞争对手的定价页面和团队的电子表格模板 |
harness 工程 | 开发 AI 产品的公司,以及选择设置和偏好并上传信息的团队和用户 | 决定智能体可以使用哪些工具、哪些操作需要批准,以及如何检查其工作成果 |
用户如何影响 AI harness
智能体 harness 的大部分由开发该智能体的公司提供,但许多 AI 产品允许用户通过自定义指令、已连接的应用和审批等设置来调整其中一部分。
用户可以通过以下四种方式塑造智能体 harness,并改善智能体的结果:
1. 常设指令
常设指令是用户只需编写一次的说明,harness 可以在每项任务开始时将其添加到上下文窗口中。对于原本需要在每次查询中反复说明的内容,都值得设置常设指令:例如自己的身份和工作内容、偏好的写作方式,或者客户月度报告等周期性工作的规则。
许多 AI 产品提供两个层级的常设指令。账户级指令适用于对所有工作都成立的内容,例如拼写偏好。项目指令适用于单个客户或工作流,这样针对某个客户或工作流的指导就不会混入其他客户或工作流。
常设指令在聊天助手和智能体中的作用方式相同,但智能体对它们的依赖更大。在聊天中,用户可以在每次回答后纠正 AI。而智能体可能要执行许多步骤后才会有人看到它的工作成果,因此预先给出的指令是在过程中引导它的少数方法之一。
如何编写有效的常设指令
- 从简短的指令开始,例如:“我是一家软件公司的市场经理。请用通俗易懂的英文撰写,摘要控制在 200 词以内,并使用美式拼写。”
- 当 AI 出错时,就对指令进行补充。如果团队需要精确数字,而 AI 总是将数字四舍五入,就添加一行说明这一点。
- 让指令具体明确:“给出精确数字,切勿四舍五入”比“要准确”更有效。
- 保持列表简短,并删除不再有用的条目,因为每一条都会占用上下文窗口的空间。
2. 已连接的应用
已连接的应用可将 AI 产品与用户已在使用的工具关联起来,例如电子邮件、日历或共享云端硬盘。应用连接后,AI 就能处理用户自己的信息,而不仅仅是粘贴到聊天中的内容。
如果任务依赖于这些应用中的信息,例如根据电子邮件往来准备会议简报,或者总结共享云端硬盘上的文档,就值得设置这些连接。
如何安全地连接应用
- 只连接任务所需的应用,因为每多一个连接,就多一个出错的可能。
- 如果提供只读访问选项,请选择只读访问。例如,准备会议简报的智能体只需要读取电子邮件,而不需要发送邮件。
- 如果产品支持,请按项目设置连接。例如,在 Perplexity 中,用户可以选择每个项目使用哪些连接器。
- 记得断开不再使用的应用连接。
3. 审批设置
审批设置决定哪些操作必须等待用户批准后 AI 才能执行。有些审批是产品内置的,有些产品则允许用户自行选择还有哪些操作需要审批。
如何设置审批规则
- 对无法撤销的操作要求审批,例如发送消息、进行购买或删除文件。
- 审批清单要尽量精简。如果智能体每走一小步都要求确认,人们就会开始不看内容直接批准。
4. 标准与检查
大多数 AI 产品都内置了一些标准。例如,Perplexity 会在答案中附上引用,以便核查每一项论断。用户设定的标准则补充了产品本身无从得知的内容,比如团队偏好的报告格式。
如何为 AI 工作设定标准
- 为重复性工作提供模板,让 AI 有固定的结构可以填写。
- 分享团队认可的过往工作示例,让 AI 能够匹配其语气和详细程度。
- 要求在每个数据旁附上来源链接。
- 仔细审查早期结果,并将反复出现的不足转化为新的常设指令。
Perplexity 的智能体 harness 设计思路
Perplexity Computer 运行在与模型无关的 harness 之上,将 20 多个先进模型整合到一个系统中。它会将每项任务拆分为子任务,交给子智能体(各自负责其中一部分的独立智能体),并将每项工作分配给最适合的模型。
在Perplexity 项目指南中,了解如何设置指令、文件和连接器。
常见问题
什么是 harness 工程师?
所谓 harness 工程师,是指负责设计和维护让 AI 模型能够可靠工作的系统的人。具体工作可能包括为智能体添加新工具、追查智能体为何反复犯同样的错误,或者加强它在完成任务前执行的检查。这目前还不是一个标准的职位名称,不过未来可能会有所改变。这项工作通常由 AI 公司或智能体开发团队中的软件工程师承担。在制造业中,同样的头衔指的是设计线束(即汽车和机器内部成束的电缆)的人。
什么是智能体 harness?
智能体 harness 通常是指 AI 智能体中除模型本身以外的一切。这包括负责运行智能体循环、管理上下文、执行工具调用、存储记忆、实施权限控制,以及在智能体的工作交付给人之前对其进行检查的代码。
每个 AI 工具都有 harness 吗?
是的。即使是最基础的聊天助手,也要依靠 harness 来跟踪对话,因为模型本身不会记住之前的消息。
开发者也可以通过 API(一种让一个程序向另一个程序发送请求的连接),从自己的软件向模型发送请求来使用模型。在这种情况下,由开发者自己的代码承担 harness 的工作。
更好的模型会让 harness 变得多余吗?
更强的模型可能需要更少的分步指导,因此 harness 如今承担的部分工作可能会减少。但模型本身只能把文本转换成文本。它没有互联网连接,也无法访问其他应用。访问文件、执行操作和实施审批规则,都发生在模型周围的软件中,因此无论模型变得多么强大,这些工作都很可能仍由 harness 承担。