用 AI 编程的朋友应该都遇到过这些问题:
- 你让 AI 改下页面的样式,结果它没搞清楚你到底想干嘛,重新开发了整个布局,浪费了时间和你的token。
- 你前面明明要求单文件的代码不超过 200 行,结果聊了十几轮之后,AI 把前面的约束给忘了,写了个 1000 行代码的大文件。
为什么会出现这些问题?说白了就是因为AI不那么可控。那么如何解决这些问题呢?这就是我这篇文章要讲的 Harness Engineering。
1.了解 Harness Engineering
1.1 Harness 是什么?
Harness 这个词翻译过来就是「马具」。如果把 AI 模型比作一匹马,那 Harness 就是你驾驭这匹马所需要的一切,说大白话就是约束、管理、控制AI。
Harness Engineering:围绕 AI 模型搭建的一整套工作环境和工作流程。AI 编程的瓶颈不在模型有多聪明,而在你围绕模型搭的这套环境和流程够不够好。
1.2 一个核心等式
Agent = Model + Harness
翻译成人话:在一个 AI Agent 系统里,除了模型本身之外,几乎所有决定它能不能稳定交付的东西,都属于 Harness。
2.Harness 的发展过程
2.1 Prompt Engineering——让模型"听懂"
- 核心问题:模型不是不会,而是你没把话说明白。
- 解决方向:优化意图表达也就是Prompt ——通过角色设定、示例、约束等,让模型准确理解任务。
- 局限:只能解决表达问题,无法补足模型未知的知识。没有解决信息的问题。(因为大模型训练出来后知识就固定了)
2.2 Context Engineering —— 让模型“知道”
- 核心问题:模型不知道你需要的信息,必须在正确时机送入正确内容。
- 解决方向:优化信息供给——召回、压缩、组装,按需分层给上下文。
- 挑战:上下文窗口有限,塞太多会导致上下文腐化(记不住、矛盾、忽略规则)。
- 关键思想:不是给得更多,而是“按需给、分层给、在正确的时机给。
2.3 Harness Engineering —— 让模型“做对”
- 核心问题:模型在多步长任务中容易跑偏、理解错返回结果、忘记初衷。
- 解决方向:优化行动监督——建立外部机制来监督、约束、恢复模型行为。
- 关注点:Prompt Engineering、Context Engineering 管输入,Harness Engineering 管执行链路——让模型不跑偏、跑得稳、出错能爬起来。
总结:Prompt 管说明白,Context 管给全信息,Harness 管走稳每一步。
3.Harness 六层核心组件:让 Agent 稳定工作的工程骨架
一个成熟的 Harness大致可以拆成六层,按职能分为三组:
- 输入侧(让模型看到正确的东西)
- 动作侧(让模型做出正确的事)
- 校验侧(让模型知道做没做对 + 出错能爬起来)
三组对应工程师在真实环境中干活的三个必要条件:看得准 → 做得对 → 错了能兜底。
六层核心一览
| 层级 | 核心问题 | 职责简述 |
|---|---|---|
| 1. 上下文精细化 | 模型这一轮该看到什么? | 必做三件事:钉死角色/目标;动态按需检索信息;结构化组织(规则、证据、中间结论分开) |
| 2. 工具系统 | 模型用什么动手? | 精选必要工具;决定何时调用;将工具结果提炼后喂回模型 |
| 3. 执行编排 | 模型下一步该干啥? | Agent 的本质,说白了就是一个 for 循环:思考一步 → 行动一步 → 观察结果 → 再思考下一步。提供明确的工作轨道(如 ReAct 循环中的步骤指引),避免长链任务跑偏 |
| 4. 记忆与状态 | 模型跨轮该记住什么? | Agent 的状态不应该放在上下文窗口里,而应该外化到文件系统。记忆需要分层存储(任务状态、会话缓存、长期记忆) |
| 5. 评估与观测 | 模型做得好不好?有没有尺子? | Eval 集(标注答案,对比成功率);Trace(记录每一步决策与工具调用) |
| 6. 约束与恢复 | 模型出错了能不能爬起来? | 硬约束(不允许做的事);输出前后自动校验;要有典型失败的恢复预案(重试、落盘、进度保存) |
注意:这六层不是一次就搭完的任务清单,而是一张路标。它告诉你下次 Agent 犯错时,修复该落到哪里。随着时间推移,每一层被一点一点填充、加固,这样Harness 就可以进行一步一步的迭代优化变得更好。