

























三个月Harness Engineering实践
2026年2月,OpenAI发布了一篇Harness Engineering文章
构建并交付一款软件产品,其中没有一行代码是人工编写的
人类掌舵,智能体执行
五个月后,该代码仓库已经拥有约一百万行代码,从应用逻辑、基础设施、工具、文档到内部开发者工具应有尽有
3月开始我做一个阅读产品的side project,计划实践一下Harness Engineering
三个月过去,同样没有一行代码是我写的,项目已经完全由Agent接管
不只是开发,而是包含设计、开发、测试、运维的全流程
3个月是因为这是side project,另外就是纯token有限
统计了一下代码整体30+万行,大部分都是文档,生产代码和测试代码各占一半
| 语言 | 类型 | 文件 | 行数 |
|---|---|---|---|
| Markdown | 任务类(SDD文档) | 800+ | 17w+ |
| - | 说明类 | 100+ | 1w+ |
| - | 合计 | 900+ | 18w+ |
| TypeScript/TSX | 生产代码 | 400+ | 7w+ |
| - | 测试代码 | 200+ | 7w+ |
| - | 合计 | 600+ | 14w+ |
统计才发现它们有着合理的文件行数,平均200-300行
整个的技术栈非常简单透明,同时证明了Harness Engineering可以非常朴素
这8个里面有3个是我写的(广告)
整个项目是Spec-Driven Development(SDD)模式,目前人和Agent都会提需求(issue),然后进入开发流程,人只决策做什么?怎么做?以及验收有没有做好
早期用的是superpower,后来发现这个流程实在太重了
随着模型能力提升,在文档中塞太多内容/代码已经没有太大必要,于是我迁移到一个更轻量的自定义SDD上
所有任务只有两个文件,要做什么和要怎么做
因为项目是纯本地的,没有任何外部系统依赖,也没有GitHub issue
统一使用文件夹+markdown metadata语法管理,所有的内容都在本地
1 | - docs |
readme记录一些说明、规范和模板,比如目前的issue模板,利用metadata语法建立文档/代码之间的关联关系
模板其实都是Agent自己设计慢慢迭代出来的
1 | title: "Short issue title" |
除此之外,要保持文档更新,像维护项目代码一样维护文档,每个plan里都会要求更新相关文档
像OpenAI一样通过外部定时任务检查和更新文档也是一个好办法,但我发现在plan中加入自动更新文档机制,并且让文档们链接起来,模型在更新文档的时候就不容易遗漏,定时任务能发现的内容就比较有限了
issue和plan驱动开发本身很简单,但要做好的工程还很远,模型很容易犯错
目前每个plan写完和开发完都都有一个独立的review,去检查plan是否完善,去检查实现是否完善
这两个Agent其实站在不同视角,这能很大程度上提高准确性和稳定性
众所周知测试是很重要的质量保障工作,所有的plan都需要补充相关的测试,以及后续每个bug case都需要对应有测试补全,来持续保持质量
另外除了常规的单元测试和e2e测试来保障质量之外,我还补充了一个意图测试,像真实用户一样把产品功能都使用一遍,利用模型的“直觉”来发现问题
这里必须有视觉模型,像真实用户一样就要求多截图去看,文本模型这块只能猜效果很差
首先独立建立整个产品的功能梳理,对齐当前产品预期(需要同步更新文档)
相比e2e测试,文档在全不在细,需要列清楚预期的功能,但不需要写细节,比如只需要写在xx处有添加入口,支持输入文本和链接
同时还要生成对应的测试环境数据,并且为支持并行测试(在一个意图测试环境中可以并行多个测试agent,比如一个跑首页,一个跑设置页),还需要对所有不可逆的测试项(比如删除某个配置)设计独立的测试数据
另外这里callback回文档中的areas字段,是为了标识任务的改动范围,在plan完成后就只需要跑对应的测试来节省时间
项目早期我还会看spec和plan文档,甚至有code review,但随着项目变得复杂(有些看不懂),任务变多(看不过来)
现在流程里,人只做两件事
但不再看各种文件或者代码本身,而是查看摘要,查看结果,以及对话询问去检查(有点像面试)
以此做到即使不写一行代码,也对项目的所有关键逻辑和流程都有清晰和准确的认知
确保做决策的人对这件事有足够的认知,才能做出正确的决策
当第一次建设并跑完整个意图测试之后,Agent一次写了20多个issue,我就知道这个人是看不过来的
于是尝试让Agent自己管理去解决这些任务,就有了多agent架构
所谓:人只需要和一个主Agent交流,这个Agent会管理好其他所有Agent干活
由于许多任务都是异步的,比如可以开5个线程去研究issue,再开3个线程去开发已经批准通过的plan,只要有线程空着,就可以自动找一个任务分配去做
此时就会发现这个主Agent的上下文会由各种不太相关的任务交织在一起,这对模型的要求非常高,尤其是指令遵循能力,以至于目前只有GPT-5.5能干,而且干的也不是很好,GPT-5.4直接没法用
看来暂时只有人类能做好这种八爪鱼的工作
比如目前Agent在和用户讨论一个plan的设计,此时有一个agent开发完了,要用来批准合并,理想情况下Agent在和用户讨论完之后,就应该把合并的事情拿出来了给用户看了
问题之一是丢任务(低概率),Agent有时候会直接忘记不管这个事情(说我以为这是干扰通知)
问题之二是主动性不够(高概率),Agent在和用户讨论完之后不会主动的把这个事情拿出来给用户,一定得要用户问“看看下一个任务”
丢任务的问题harness能解决,但主动性迭代了很多轮都没有显著提升,可能得靠模型迭代了
另外一个方向就是把主动性的问题交给程序,比如看板流程驱动(类似multica的产品)
Harness仍然是围绕上下文的工作,只是上下文变成的项目文档,Agent的上下文从人类组织,到人类提供Agent组织
Harness不是一次建成的,而是文档和工作流的自然迭代
Harness去迭代项目,也需要有另一个外部循环去迭代Harness,优化现有的工作流(某种意义上来说也是一种项目级别的自我迭代)
最简单就是如果发现当前对话执行得不是很好,就可以再开一个Agent,让它去检查当前对话有什么可以优化的地方,进而优化整个工作流
当然也可以做成定时任务,定期回顾对话去迭代Harness
Harness也不是标准答案,更像是对这个项目的量体裁衣
不同的项目可能会有不同的Harness,但可以有预制的版型,再辅助一些定制化改动,而且不止是软件工程领域,还会有各种领域的Harness
有了各种领域的Harness,也会有做Harness模板套用工作的Meta Harness
突然也理解为什么FDE(Forward Deployed Engineer前沿部署工程师)会火了
Harness Engineering无疑在软件开发上带来巨大变革,但仍然是人类掌舵,智能体执行
短期看,一方面是需要阻止Agent在项目里堆屎山,积极的引导AI重构,另一方面是验收测试,模型视觉能力还是比较弱的,很难发现交互体验和UI上的问题,比如某些交互体验是连续动画,仅靠代码/截图也很难发现问题
长期看人只需要做产品和技术的关键决策,Agent可以提供各种的产品/技术方案让人来选
只要产品是给人用的,就需要人来对齐,想要什么样的产品,来提需求和砍需求
关于技术决策可能存疑,为什么人能做出更好、更对的决策呢?为什么Agent做不出来?(难道你比模型聪明?)
我觉得Agent做不出来不会是模型能力问题,而是缺少上下文,因为人会对这个产品有一个虚拟的未来预期,也就是这个产品未来会变成什么样子,但是这个预期没有变成上下文写在文档里,或者说它甚至很难变成一个文档,就像乔布斯说的“很多时候,人们在看到产品之前,并不知道自己真正想要什么”
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。