一旦明白harness诞生的初衷,就会理解为什么Harness要这么做,以及怎么改进它。
参考A社的两篇关于Harness的文章标题都写了“long-running”(图1)
从开发者角度,harness 是为了达到无人值守开发的目的。推而广之,需要长期维护的项目也需要用harness。
比如今天有朋友问:
“如果用AI Coding工具在之前很大的一个系统上去迭代,应该怎么做呢。不可能把之前的页面全部做一遍吧。”
那么一旦涉及“长”时间和“长”期项目,就需要保证AI Agent 发挥的稳定性。所以你会看到,在Open AI 和 Anthropic的实践中,看到以下步骤。
其中的基础步骤我已总结成skills,放在这里分享:
claudeleakage.com。
大家拿到后安装,直接调用skills就可以完成项目基础的harness engineering建设了,定期跑一下,对项目的长期维护有很大好处。
第一步(图2): 做一个项目地图,像一个索引一样。 Agent每开始一个任务,首先来这个看索引,找到它应该去看的内容。比如Agent要新增一个页面,它看到这里会有一个design标准、前端框架文档,就会倾向于从众多文档中读这两个文档。
第二步(图3):在地图里的各个文档中查找具体标准和详细内容。比如架构文档architecture.md中,会有项目采用的前、后端框架等等。
前两步解决了横向的内容广度问题。
接下来的一步要完成纵向的时间维度问题,也就是长任务会拆成若干个子任务,如果把一个长任务都放在一次对话中,会产生记忆爆炸的问题,这时候任务的衔接就会需要用到第三步。
第三步(图4):对话管理。它像一个项目进度记录一样,记录了现在有什么任务还没有完成,当前进行的任务的进度 Progress.md等等。 这样,每次开始新任务,Agent可以触发总结之前的任务进度,以便后续任务作为上下文使用。
以上三步是基础步骤,harness engineering的进阶版需要引入评估器,但这玩意还是挺消耗token的,因为每次都要对已经完成的任务进行评估、测试,耗时、耗力、耗钱,一般情况下我理解用这三步基础的就够。