✅以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,然后再提问:“参考这个工具函数,帮我实现一个新的业务接口。”

  • 项目根目录下有一个 .cursorrulesAGENTS.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。
产出物 一段
孤立的代码片段
(可能跑不通)。
一段
符合项目风格的代码
(需要你来跑测试)。
一个
经过测试验证的完整功能
(直接可以合并上线)。



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