13-02 以AI Coding为例说明Harness Engineering
✅以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 真正接管繁琐的编码和测试闭环。
