Harness Engineering(驾驭工程)简单的演化过程
一、提示词工程(Prompt Engineering)
提示词工程解决的是,模型的引导问题。
1、角色
你作为一名前端开发工程师;
2、任务
你的任务是根据接口文档和产品原型开发美观,具备科技风格的前端页面;
3、样例
如图所示;
4、限制
你只负责前端认任务开发,使用技术栈Vue3;
5、输入
需求文档、接口文档、产品原型;
6、输出
生成的代码美观,适当换行添加注释(或者某个输出以JSON格式输出)
二、上下文工程(Context Engineering)
上下文工程解决的是上下文组织的问题。
提示词 + 其它资料,模型上下文大小有限,容易打满,引入以下方法:
1、召回
来源:外部新闻、过去聊天技术、当前代码环境、程序运行报错等;
涉及技术:RAG、Memory
2、压缩
将信息分开发给大模型进行总结。
3、组装
因为信息内容会直接影响输出的内容,比如模型更关注最后的内容。
所以进行多个信息的组装排序
三、驾驭工程(Harness Engnieering)
1、执行层
给模型加入Bash沙箱、文件系统、MCP等能力,像人一样执行命令做测试、读写代码文件、操控操作外部工具,以上共同构建一个执行层。
2、记忆层
任务根据下图迭代
当迭代次数过多的时候,一些信息比如目标约束会被冲淡,所以可以将这部分内容放到一些文档里面,如ClaudeCode的Claude.md和它的rule.md文件。这些文件统一称为规则文件,规则文件在每次调用大模型的时候自动作为系统提示词注入上下文。但是有时候规则文档也会很多,所以将其分为多个小文档,比如背景就另开一个bg.md,技术栈就另开一个stack.md,这些文件通过路由查看,一般情况下只需加载文件路径,想要某一部分内容就主动根据路径读取。
将它和提示词工程和上下文工程加到一起称之为记忆层。
3、反馈层
执行层之后的结果传入到记忆层,这个过程称之为反馈层。
4、编排层
如果执行的大任务没有明确的标准,Agent容易进入死循环,所以我们需要将大任务拆分多个小任务进行编排,这叫编排层。
5、Harness
从上图可看出Harness Engineering就是Agent除大模型之外的内容。
6、Harness落地
以ClaudeCode为例,ClaudeCode软件本身已原生支持Harness的四层能力(记忆层、编排层、执行层、反馈层),所以最轻量的做法就是在ClaudeCode的Claude.md文档里写清除项目背景、你希望大模型做什么、别做什么、做完之后要跑哪写lint、单测和CI、执行哪些skill就行。
可以引入一些插件比如spec-kit这类扩展,它会根据项目加需求拆成多个阶段(生成约束-明确需求-定制计划-拆解任务-开始实现-测试)每一个阶段都会刷新Claude.md,这套开发方式也叫Spec-Driven Development(SDD),本质上也是Harness工程落地。
Harness的工程使程序员从代码转变为写规则写Skill。
