Agent的进化之所以成立更多是控制层的进化而非知识层,如果给agent分层自下而上依次是表现为权重的模型层也就是后训练仙人发力的地方,然后是装规划知识流程脚本与边界条件的能力层,再往上是负责决定什么时候注入什么内容与登记痕迹以及推进状态的控制层,最后是负责调用工具与产生副作用的执行层,让系统显得在进化的正是控制层而不是在能力层的内容本身
有两种截然不同的设计风格,
- 一种是更厚的设计语言将可复用的东西封装成技能包且把可挂载的行为暴露成钩子并把所有钩子上的逻辑做成插件,直观表达就是文件非常庞大且在层面上表达了工程化建设,
- 另一种是以reasonix或者opencode为代表的以对话驱动agent的设计风格依赖对话上下文或通过简单的会话文件来驱动开发。但opencode亦引入了plugin的设计尝试将二者的优势融合起
重点不应该放在一切skill的背景里,而是把能力与触发彻底拆开以单纯设计与匹配的触发层,其中技能包负责装领域脚本和验证方法而触发层负责在什么时机注入与清理以及推进状态。这种设计风格实际上自然语言探索出来同样是可能的。
比如下面的例子,尤其是在opencode这种遵循工作指令文档能力相当出色但在web search以及读取pdf时常抽风的agent设计中,其实我认为正是harnes以后会发展的道路或者说这都是harnes本身架构设计上的思路。
我在oc的设计思路是这样的,一个负责记忆的注入与清理且把会话开始与工具调用之后与会话结束与压缩之前四个钩子全部复刻成插件也就是在会话开始时装配地图规则与云端及项目记忆并在工具调用之后登记新建的临时文件且在会话结束统一清理并在压缩之前告诉模型保留哪些关键信息。一个负责闭环目标与经验且每轮开始注入目标架里的到期提醒与经验库里的领域唤醒和待审的进化候选并在工具失败时把坑沉积进经验库且在会话收尾推进目标状态并追加差分日志。实际上差分日记的设计我借鉴的是workbuddy三层记忆方式
还是专注到这两个文件本身,只是决定什么时候把什么拿进来与什么时候把什么写下去,地图规则注入与云端记忆与项目记忆与临时文件登记与压缩指导看起来像技能在进化,技能包只是被迭代的静态对象,而是在钩子层在会话开始装配上下文并在工具调用之后登记失败与痕迹且在会话结束清理并写日志并在压缩之前决定保留什么且在收尾时推进状态。
也就是技能包是被管理的库而钩子和插件是管理库的运行时,库会因为人的经验增删但让系统每运行一次都留下痕迹且都能在下一轮用上这些痕迹的正是运行时那一层。经验写进文档是静态的而触发机制把它变成动态的,这两层不能混在一起叫技能自我进化。技能包这条路补的是已知知识的复用与流程的硬化而堆参数补的是世界知识的广度与泛化,如果harnes只是不断复用人类已经探索出来的知识其进化就是收敛式的向着已知最优做法收敛却无法产出未知的新知识,这让智能体在已知领域更可靠与更少犯错却不会让模型本身懂得更多
这种增长方式与拥有海量世界知识完全不同。唐杰说规模化不只有堆参数这一条路而万亿参数只是行业早期的探索,glm5.3在参数量不变的前提下性能继续提升可以来自训练侧的完善比如预训练与后训练做得更充分以及对齐做得更好,也可以来自运行侧的设计比如harnes的编排与技能包的累积以及钩子的迭代,参数不变而性能继续提升说明能力的增长本来就有一部分住在运行层而不是全住在权重层。
但此处存在悖论,设计风格更重的智能体也就是编排厚重与技能包成体系以及钩子复杂的harnes依赖一个能可靠执行这套协议的基础模型,而设计风格更轻的智能体则只能轻装上阵。换句话说harnes的设计重量与模型的训练完成度互相咬合,模型越完善越扛得住重型编排且重型编排也越能兑现完善模型的潜力,模型越弱则硬套重型编排反而处处失灵,这解释了为什么技能包与插件体系往往出现在更强的模型之后而不是之前。
技能包加运行时与堆参数是两条腿,堆参数解决模型懂不懂而harnes加技能包解决模型会不会用与用得好不好以及把经验存不存得下来,前者是知识层后者是控制层。可持续进化的智能体定义应当是知识层靠规模化不断拓宽且控制层靠harness不断累积与验证以及淘汰与组合技能包,单靠技能包不会通向可持续进化因为其知识边界是人类的既有探索,单靠堆参数也不会因为运行层没有沉淀机制。真正可行的是唐杰所指的方向即模型在训练侧不断变强且harnes在运行侧吸收变强模型的红利并同时用更重的编排兑现更强模型的潜力,技能的自我生成与验证以及淘汰与组合只有在这样一个咬合系统里才谈得上成立。
对同类项目的借鉴有几条核心思路,首先能力与触发必须分离即技能包只装能力而钩子只装触发且二者用契约连接,其次要把经验落成可执行的状态文件即目标架与经验库以及差分日志与待审候选都是运行时状态而不是技能,再次进化要有审计与淘汰即新技能走写审批与留回滚轨迹以及防规则通胀而不是无节制地堆技能,最后是分级进化即记录型经验当场沉淀而判断型规则必须评审加批准以避免把个例过拟合为普遍规律。
尽管opencode就是一条蛆