在 Manus 的时候跟同事一起推动过一次研发部的「AI 工具使用」大跃进,这个大跃进的主要工作之一是要设计好给 ai 看的规则,好让 ai 完全接管写代码的流程,大概在 2025 年 6 月份整个 manus 内部已经达成了所有新代码全部都由 ai 生成。
当时能用的 ai 工具还不多,我们主要用的是 cursor,claude code,code rabbit,规则就是给他们几个做的,我们工程团队每个方向排了一个人维护所有的这些 harness,我当时负责 iOS 端的这块工作,每天会有 30% 的工作时间用来 review code rabbit 根据 mr 和 mr comment 自动产生的一条一条式的记忆,维护每位同事加的 cursor rules,根据之前设计好的代码架构和大家的开发习惯/约定补 rules,在项目里的各种位置思考要不要加一个 rules,这个维护工作现在可以新潮一点的叫法就是 harness 设计。
回到从工程师的工作内容角度看这个事情,首先 Coding Agent 没带来代码运行逻辑上的变化,以前运行在机器上的 if else 现在还是 if else,他改变的是工程师的工作重心,工程师之前的工作宏观来说是两部分,第一部分是分析产品需求、沟通、设计抽象和架构,第二部分是写代码落地,验证以及 review。这两部分之间是由“设计抽象和架构”串联起来的,harness 设计工作的目的就是为了方便 agent 完全接管后面的部分(然后随着大家用的越来越熟练可以逐渐进化成让前面的除了沟通外的部分也由 ai 辅助来做),所以设计 harness 其实也就是在做这个“设计抽象和架构”工作。
这块工作是工程师工作中最难做的一部分,架构讨论在研发工作里非常难达成一致,往往大家都要吵架吵很久,最后效率高一点的方式很多时候是老板拍个板;这个工作有一些前人总结出来的经验,可以根据实际的项目节奏选择,但实际基本没法原样完全套用,基本上都要为了项目节奏再进行调整。有本老书管这个类似的情况叫“没有银弹”。
现在各种关于 skills,soul.md,agents.md,自进化,design.md 等等 harness 的讨论是一场扩圈到程序员圈子外的项目通用性架构设计讨论,结合前面的工作经验分析,这些讨论可能最终也不会有个能解决所有问题的结论,大家根据自己的使用需求以及服务场景自己定制,大家各自去考虑自己要做的 trade-off。Agent 是一台精密的仪器,人需要习惯他就是个会来带思考负担的东西。
当时能用的 ai 工具还不多,我们主要用的是 cursor,claude code,code rabbit,规则就是给他们几个做的,我们工程团队每个方向排了一个人维护所有的这些 harness,我当时负责 iOS 端的这块工作,每天会有 30% 的工作时间用来 review code rabbit 根据 mr 和 mr comment 自动产生的一条一条式的记忆,维护每位同事加的 cursor rules,根据之前设计好的代码架构和大家的开发习惯/约定补 rules,在项目里的各种位置思考要不要加一个 rules,这个维护工作现在可以新潮一点的叫法就是 harness 设计。
回到从工程师的工作内容角度看这个事情,首先 Coding Agent 没带来代码运行逻辑上的变化,以前运行在机器上的 if else 现在还是 if else,他改变的是工程师的工作重心,工程师之前的工作宏观来说是两部分,第一部分是分析产品需求、沟通、设计抽象和架构,第二部分是写代码落地,验证以及 review。这两部分之间是由“设计抽象和架构”串联起来的,harness 设计工作的目的就是为了方便 agent 完全接管后面的部分(然后随着大家用的越来越熟练可以逐渐进化成让前面的除了沟通外的部分也由 ai 辅助来做),所以设计 harness 其实也就是在做这个“设计抽象和架构”工作。
这块工作是工程师工作中最难做的一部分,架构讨论在研发工作里非常难达成一致,往往大家都要吵架吵很久,最后效率高一点的方式很多时候是老板拍个板;这个工作有一些前人总结出来的经验,可以根据实际的项目节奏选择,但实际基本没法原样完全套用,基本上都要为了项目节奏再进行调整。有本老书管这个类似的情况叫“没有银弹”。
现在各种关于 skills,soul.md,agents.md,自进化,design.md 等等 harness 的讨论是一场扩圈到程序员圈子外的项目通用性架构设计讨论,结合前面的工作经验分析,这些讨论可能最终也不会有个能解决所有问题的结论,大家根据自己的使用需求以及服务场景自己定制,大家各自去考虑自己要做的 trade-off。Agent 是一台精密的仪器,人需要习惯他就是个会来带思考负担的东西。