✅以AI Coding为例说明Harness Engineering



结合程序员日常的 AI Coding 场景,这三者的区别会变得非常具体和生动。我们可以把 AI 想象成你的一个“AI 结对编程伙伴”,来看看这三种工程手段分别是如何驱动它的:



Prompt Engineering:怎么给 AI 下达“单次指令”



这就像你给身边的同事口头布置一个具体的小任务。你的指令越清晰,他干活越利索。

  • 日常表现:

  • 你在 IDE 的 AI 聊天框里输入:“帮我用 Python 写一个快速排序算法,要求加上详细的中文注释。”

  • 或者:“这段代码报错了,帮我分析一下原因并给出修复建议。”

  • 核心动作:你通过角色扮演(“你是一个资深架构师”)、明确约束(“不要用递归实现”)、指定格式(“输出 Markdown 格式”)来引导 AI 生成你想要的代码片段。

  • 局限:如果你只靠 Prompt,AI 就像一个刚入职、对你项目一无所知的新人。他写出来的代码可能语法完美,但变量命名风格跟你团队完全不符,甚至重复造了你项目里已经存在的轮子。



Context Engineering:给 AI 投喂“项目说明书”



这就像你给这位 AI 同事配了一台电脑,里面装好了公司的代码库、技术文档和设计规范。在他干活前,你不仅下达指令,还确保他“看”到了正确的背景资料。



  • 日常表现:

  • 你在 Cursor、Windsurf 等 AI 编辑器里,通过 @ 符号引用了项目里的 utils.ts 文件或 API接口文档.md,然后再提问:“参考这个工具函数,帮我实现一个新的业务接口。”

  • 项目根目录下有一个 .cursorrules 或 AGENTS.md 文件,里面写满了团队的代码规范(比如“统一使用 Tailwind CSS”、“禁止使用 var 声明变量”)。AI 在生成代码时,会自动读取并遵守这些规则。

  • 核心动作:你通过挂载代码库、提供架构文档、投喂相关代码片段,让 AI 具备了“项目记忆”。它写出的代码不仅逻辑正确,而且风格统一、符合业务语境。

  • 局限:虽然 AI 看懂了代码,但他写完就完了。代码能不能跑通?会不会把其他模块搞崩?他自己是不会主动去验证的,依然需要你来审查和测试。



Harness Engineering:搭建 AI 自主干活的“自动化流水线”



这就像你不再把 AI 当同事,而是把他变成了一个全自动的流水线工人,并且给这条流水线装上了各种传感器、质检仪和机械臂。



  • 日常表现:

  • 你不再是一句句跟 AI 聊天,而是在任务面板里输入一个宏大需求:“给项目增加一个用户积分系统”。

  • AI 开始自主行动:它先读取需求文档(Context),拆解任务,然后自主修改多个文件,接着自动在终端运行单元测试和 Lint 检查(工具调用)。

  • 如果测试报错,AI 会自动读取报错日志(反馈传感器),自己分析原因并修复代码,直到所有测试通过,最后自动发起一个 Pull Request 等你验收。

  • 核心动作:你搭建了一套系统(Harness),包含了工具权限(允许 AI 读写文件、跑命令)、自动化质检(CI/CD、单元测试)、任务编排(拆解步骤、死循环检测)和安全护栏(禁止 AI 删库、禁止触碰生产环境配置)。

  • 结果:AI 从一个“聊天机器人”进化成了能独立闭环完成复杂需求的“AI 员工”。



总结一下三者的区别

Column 1 Column 2 Column 3 Column 4
维度 Prompt Engineering Context Engineering Harness Engineering
AI 的角色 一个
听话的实习生
,你拨一下他动一下。
一个
懂业务的正式员工
,熟悉公司代码和规矩。
一个
全自动的机器人团队
,自带质检和纠错能力。
你的操作 在聊天框里
打字提问
。
在提问时
引用文件
、配置项目规则文档。
设计一套工作流
,让 AI 自主跑测试、改代码、发 PR。
产出物 一段
孤立的代码片段
(可能跑不通)。
一段
符合项目风格的代码
(需要你来跑测试)。
一个
经过测试验证的完整功能
(直接可以合并上线)。



在日常开发中,绝大多数程序员目前主要停留在 Prompt 和 Context 阶段(比如熟练使用 Cursor 的 @ 引用功能)。而 Harness Engineering 则是目前各大厂和顶尖 AI 编程工具正在全力攻克的方向,目的是让 AI 真正接管繁琐的编码和测试闭环。