用工程化方法驾驭AI,提升任务执行可靠性
让AI帮你写代码,它写着写着开始删你的核心文件;让AI帮你做调研,它越跑越远,最后给你编了一堆不存在的信息;让AI跑个多步任务,它跑到第三步就忘了第一步要干嘛。
你第一反应是什么?换个更强的模型?写更详细的Prompt?
都没用。
因为问题不在模型,问题在你没有给AI套上"缰绳"。
今天聊一个很多人还没听过但特别重要的概念——Harness Engineering,驾驭AI的工程实践。 读完这篇,你就知道怎么让AI从"看着挺聪明但不敢用",变成"又聪明又靠谱"。
大模型很强,没有人否认。但你直接用它、尤其是做成Agent的时候,你会发现四个让人头疼的问题:
① 幻觉——它会编
你问它一个不知道的事,它不会说"我不知道",它会一本正经地给你编一个。编得还挺像那么回事。
② 行为不可预测——它乱跑
同样的Prompt,今天回答A,明天回答B。你以为它理解了你的意图,其实它只是在"概率上"给了你一个看起来对的答案。
③ 工具滥用——它乱来
Agent可以调用外部工具对吧?但你没约束它的时候,它可能随手删个数据库、改个核心配置,你拦都拦不住。
④ 任务偏离——它忘事
让它做5步任务,做到第3步就开始"自由发挥"了,根本不是你想要的结果。这在行业里叫Goal Drift——目标漂移。
这四个问题,光靠更强的模型解决不了,光靠更长的Prompt也解决不了。
怎么办?给它套缰绳。
记住这个公式:
AI Agent = Model(模型)+ Harness(缰绳框架)
Model是大脑——通义千问、DeepSeek、ChatGPT,提供理解、推理和创造力。
Harness是骨架——围绕模型构建的工程化体系,提供任务控制、安全防护和稳定性保障。
打个比方:Model是一匹快马,Harness是缰绳和马车。没有缰绳的马跑得再快,你也骑不了;没有马车的马载不了货。
只有Model + Harness,AI才真正能干活。
AI应用开发不是一天变成现在这样的,它经历了三代进化:
第一代:Prompt Engineering
核心思路:写好提示词,让模型听话。
局限:提示词是"软约束",模型想不听就不听。你写"请先做计划再执行",它可能直接跳过计划开干,你拿它没辙。
第二代:Context Engineering
核心思路:给模型更多的上下文信息——文档、示例、知识库,让它"知道更多"。
局限:信息多了,模型可能被淹没;而且再多的上下文,也管不住模型的行为。
第三代:Harness Engineering
核心思路:用工程手段,在代码层面建立硬约束,让模型"不能不做"和"不能乱做"。
从"请你这样做"到"你必须这样做",从"希望你别犯错"到"犯错会被自动拦截"——这就是Harness的本质。
Harness不是一个单独的工具,它由三个支柱撑起来:
你有没有给新员工丢过一本员工手册?AGENTS.md就是给AI的"员工手册"。
如果说README.md是给人看的,那AGENTS.md就是给AI看的。它告诉AI:这个项目是什么、技术栈是什么、怎么跑、怎么测、哪些文件不能动。
但这里有个关键:别把AGENTS.md写成百科全书。
很多团队的误区是往里面塞了几千行内容,以为信息越多越好。其实AI和人一样——信息太多反而抓不住重点。
正确的做法是:AGENTS.md控制在100行以内,当目录索引用。 具体细节放在结构化的docs/目录里,让AI按需查阅。这叫"渐进式揭露",不是信息堆砌。
这是最重要的一个支柱。
很多人以为,在Prompt里写"请先做计划"、"不要修改核心文件"就够了。
对不起,这是软约束——写在Prompt里的建议,灵活但不可靠。模型想听就听,不想听就不听。
Harness要做的是硬约束——写在执行代码层的强制规则,模型无法绕过。
具体有哪些硬约束?
① 状态机锁定阶段
把AI的执行过程分成几个阶段:Research(调研)→ Plan(规划)→ Exec(执行)。每个阶段只能做该阶段的事,不能越界。调研阶段不能直接改代码,执行阶段不能跳过规划。
② 防"嘴上完成"
AI说"我已经测试了"——你信吗? Harness的做法是:在执行层严格检查,是否真的调用了工具、运行了测试。不看它说什么,只看它做了什么。
③ 熔断器防死循环
AI执行失败了,它会反复重试同一个失败动作,无限循环。熔断器检测到重复失败,直接拦住,不让它继续。
④ 严格权限边界
代码层限制AI对敏感文件和目录的访问。不能改的文件,AI就是改不了,不是"不建议改",是"改不了"。
一句话:用代码的强制力,替代语言的不确定性。
Harness不仅要"挡错",更要帮AI"吃一堑长一智"。
① 自动化流水线验证
AI提交代码后,自动触发类型检查、代码规范检查、单元测试。不通过?直接打回,拒绝"带病"运行。
② 生成与评审角色拆分
Agent A负责写代码,Agent B负责审代码。写的人容易当局者迷,审的人能发现潜在问题。多轮对话,修复直到通过。
③ 错误经验持久化沉淀
维护一个lessons-learned.md,把历史错误记录下来,转化为系统约束或知识库文档。
一次犯错,终身免疫。 下次遇到同样的问题,系统直接拦截,不用再犯一次。
理论讲完了,怎么落地?五步走:
第1步:写一个AGENTS.md
定义项目定位、核心技术栈、依赖环境、常用命令、代码规范、禁止修改的核心目录。控制在100行以内。
第2步:加一条硬约束
最简单也最有效的一条:"只要修改了业务代码,就必须先跑单元测试。"
就这一条,AI的输出质量和稳定性就能明显提升。
第3步:引入反馈回路
AI写代码→自动触发Lint检查+单元测试→失败则反馈给AI修复→循环直到通过。
建立最小闭环是关键。 很多团队只做到这一步,效果就已经很好了。
第4步:处理长任务的上下文问题
AI跑长任务的时候,上下文越攒越多,性能下降。别让一个会话死打到底。
正确做法:结构化交接+新会话继续。 把当前进展总结成结构化文档,开新会话接着干。让任务具备"可交接、可重置、可续跑"的能力。
第5步:形成持续改进飞轮
AI犯错→归因分析→系统改进→同类问题更少。
缺信息?补文档和知识库。缺约束?补规则和校验逻辑。缺验证?补人工复核和自动检查。
** Harness不是一次建好的,是一点一点长出来的。**
最后,分享三个来自真实工程的启发:
AI能承担更多工作,不是因为它看起来聪明,而是因为外围有类型检查、测试、Lint等足够厚的验证层兜底。你敢让AI放手干,是因为你知道就算它搞砸了,验证层会拦住。
底层模型能力一样,但Harness的差异会导致最终产出质量差几个量级。Harness是决定AI可用性和稳定性的关键因素,不是模型。
模型变强了,旧的约束可能冗余,需要清理;模型探索新边界,又会催生新的约束需求。Harness不是一劳永逸的,它得跟着模型一起进化。
Harness不是限制AI的能力,而是让AI的能力真正可靠地释放出来。
缰绳不是为了勒住马,是为了让马跑得更远。
觉得有用?点个在看。下期聊聊怎么用AGENTS.md和状态机,做一个可控的代码生成Agent。