你让智能体学会了自己写技能文档、存对话记忆、跨会话召回,可它学完的东西,隔壁那位完全用不上!
Hermes Agent是Nous Research在2026年2月开源发布的自主智能体框架,采用MIT许可证。它的核心设计是“闭环学习回路”——每次完成任务后,智能体会自动生成一份可复用的操作文档,还会为对话历史建立跨会话召回索引。翻译成大白话:它不像普通聊天机器人那样关掉窗口就忘干净。GitHub星标突破20万,OpenRouter个人智能体应用排名第一。听起来像是用越多越聪明的完美方案。
但有一个数据把这张完美的包装撕开了。一份对某套完整会计系统的生成文件统计显示:72个文件中42个是系统模板,29个是年度实例,而29个年度实例里22个除了年份数字外结构完全一致。85%到90%的架构是重复的,真正承载业务差异的只有6个文件。这不就是造了60个一模一样的轮子吗?
这套会计系统来自一个真实的使用场景,用户不是程序员,整个系统花了30小时让智能体生成并调试完成。系统跑通了,但那个重复比例让人没法假装没看见。
“技能”这个词,说出来的和做出来的根本不是一回事
语言有个奇怪的现象:你说出一个词,和这个词实际指向的东西,中间隔着一条河。
Hermes Agent管那些沉淀下来的操作流程叫“技能”。官方定义是“封装特定任务流程、知识文档、工具调用逻辑的可复用模块”。每次智能体完成一个复杂任务,它会自动把执行轨迹提炼成一份标准化的SKILL.md文件,存放在本地的智能体目录下。下次遇到同类任务,智能体读取这个文件,照着步骤再来一遍。
但一个被反复验证的问题是:每个技能都是一座孤岛,不能互相调用,不能共享代码或逻辑。同一个逻辑被反复复制粘贴到不同技能里,因为技能之间没有组合机制,没有继承关系,没有依赖管理。一个技能管“发邮件”,另一个技能管“整理收件箱”,但没人告诉这两个技能可以串成一条“处理邮件”的工作流。
“技能”这个词暗示的是一套可以积累、可以组合、可以传递的能力体系。你学游泳的时候不会每次重新发明换气,你是在已有的技能基础上叠加新动作。但Hermes的“技能”实际干的是另一回事——它更像一个书签:把一个操作流程存下来,下次点开照着做。书签和书签之间不会对话,不会继承,不会组合。
而“书签”这个词,从来没有人用它来指代“可以互相调用的能力模块”。但Hermes用“技能”这个字眼,让所有人都默认了它能干的事,远比它实际能干的多。
这不只是一个命名问题。当一个生态里所有人都用同一个词指代不同的事情,沟通成本就开始指数级上升。你说“我发了一个技能”,我以为是可以组合的模块,结果发现只是一个只读的操作手册。你说“技能库在扩张”,我以为生态在变强,结果发现扩张的只是互相看不见的孤岛数量。
索绪尔当年拆过一组概念:能指和所指。他说语言符号分两层——你发出的那个声音或写下的那个词是“能指”,这个词实际指向的那个东西是“所指”。两者之间没有天然联系,全靠约定俗成。而当约定含混不清的时候,你说出来的和对方理解的就可能完全不是一回事。Hermes生态里“技能”这个词的能指和所指,就在持续错位。
记忆系统记住了对话内容,却没记住设计结构
再来看另一个词:“记忆”。Hermes团队管这个功能叫“记忆”,但它的实际指向是什么?
是一套能找回历史对话片段的检索系统。它维护着两个核心文件:MEMORY.md记录智能体对环境的认知——项目结构、工具习惯、学到的经验教训,默认2200字符;USER.md记录用户画像——偏好、沟通风格、期望,默认1375字符。两个文件加起来大约1300个token。每次会话开始时,Hermes会把这两个文件冻结成系统提示词的一部分。会话中智能体可以随时修改记忆,改动立即落盘,但到下一次会话才生效。
除了这两个文件,还有另外三层存储:一个可搜索的SQLite历史会话归档、由智能体管理的技能作为程序性记忆、一个可选的Honcho层用于更深层的用户建模。系统用FTS5做全文搜索,能找回几周前的对话片段。
这确实比普通聊天机器人强太多了。普通聊天机器人的上下文窗口一关就没了,Hermes至少能把碎片捡回来。
但“记住内容”和“记住结构”是两件事。
它能找回你三周前说过的那句话,但它记不住你三周前设计那个系统时走过的思维路径——为什么先选了A方案又放弃了,为什么B方案在测试到一半的时候暴露了问题,那个被你否决的C方案在什么条件下其实更优。这些思考过程没有变成可传递的知识。
MEMORY.md只有2200字符的限制。它装得下“项目用Rust写、运行在Ubuntu上”这类环境事实,装不下“为什么我决定用不可变证据链而不是可变账本”这类设计决策。后者才是别人复用你架构时最需要的东西。但这些东西没有被结构化成可共享的知识。
用个简单比喻:你用笔记本记了100页内容,每页都写满了,但你没法告诉别人这些页之间是什么逻辑关系。你自己翻得懂,因为你写过一遍。但另一个人拿起这本笔记,他看到的是一堆零散的信息,不是一张地图。Hermes的“记忆”提供的正是这样一本写满的、但没有地图的笔记本。它记住了“内容”本身,却没有建立“内容之间如何组织成一个系统”的索引。
隔壁那个也在做会计系统的开发者,他的文件系统里有另一套完整的会计架构,但你的智能体看不到他的,他的也看不到你的。智能体的“记忆”各自记住了各自的对话内容,但它没法让你俩互相看见对方的架构设计。“记忆”这个词的所指,被限定在了单用户的文件系统边界内。
同一个架构被反复生成,开源的老办法卡在哪了
有人会说:这不就是开源该解决的事吗?公共代码仓库就是共享库,代码都在上面,拿去用就行。
但事情没这么简单。
传统开源逻辑是:我写了一段代码,你复制过去改,改完提交合并请求,大家合并到一起。代码是显式的、可读的、可以逐行对比差异的。一个人花三个月写的东西,另一个人花三天就能看懂并接手。
但智能体生成代码的逻辑完全反过来了。我让智能体写了一段代码,你也让智能体写了一段代码。咱们的智能体各自独立生成了同一类东西,但谁也没看到谁的版本。共享的媒介从“这段代码本身”变成了“那个能生成代码的模型”。模型记住了“会计系统”的一般模式,但记不住任何一个人为特殊规则做的特殊处理——荷兰增值税规则、锁定期边界条件、审批流程的异常处理,这些细颗粒度的东西散落在每个人的对话历史里。
更直接的问题是:你没法把智能体生成的东西直接发到公共仓库就当“通用方案”用。因为它太定制了——里面的路径、规则、假设条件全是针对你一个人场景写的。但你也懒得把那个“通用层”剥离出来再发,因为剥离本身是另一项工程。结果就是公共仓库里堆满了单点技能的SKILL.md文件,但几乎没有“会计智能体完整架构蓝图”这种东西。
前者像菜谱里的一句话——“把锅烧热”。后者像一整本菜谱,包含备料、火候、失败补救、变种做法。每个人都想做饭,但每个人都在独自编撰同一本菜谱。公共仓库里的那些单点技能文档,谁也不挨着谁。
等等,不是说Hermes Agent不行
千万别误会。一个不会写代码的人30小时能做出一套能跑、能通过攻击性测试的会计系统——放在三年前,这绝对是天方夜谭。
Hermes的技术设计确实解决了一个真实问题:智能体不应该每次对话都从零开始。它的记忆系统、技能自动生成、跨会话召回——这些功能都硬核地实现了“不让智能体失忆”。在防止智能体忘记前文这件事上,它做得比绝大多数同类产品都好。
但“不让智能体失忆”和“不让人类重复劳动”是两件不同的事。前者是技术问题,解决了。后者是生态问题,还没人认真解决。
有开发者提过一个思路:用版本化的、带测试的完整配方代替散装的技能文件。不是丢一个SKILL.md就完事,而是包含示例输入输出、预期行为、权限清单、迁移说明的完整包。用户安装后先跑一遍测试,确认和自己的环境兼容,再修改业务规则。Docker、Homebrew、APT都在用这套逻辑——“能跑”变成一个可验证的状态,而不是一句“你自己试试看”。这个思路不新鲜,但智能体生态里还没有人把它落地。为什么?因为做这件事本身不产生直接价值。花时间把架构剥离、打包、写文档、做测试,受益的是别人,而你自己的业务还等着继续往前跑。
造系统的人没空抽象,有空抽象的人没造过系统
那个会计系统的统计数字暴露了一个结构性的矛盾:85%到90%的架构是可重用的,但只有一小部分被剥离出来了。剩下的部分还锁在原始文件里,和具体的年度账目、具体的增值税规则、具体的审批流程缠绕在一起。
为什么没人剥离?因为剥离这件事本身是一项系统工程。你要识别出哪些部分是可通用的,哪些是定制的。然后把通用部分抽象成接口、配置项、可替换模块。接着写文档——不仅写“怎么用”,还要写“为什么这么设计”和“什么情况下会出错”。最后还要配上测试用例,确保别人改了之后还能跑通。
这一整套工作,花的力气可能不比“从零造一个系统”少。区别在于:造系统的时候你在解决自己的问题——每一小时都直接服务于“让我的账跑起来”这个目标。而剥离通用层的时候,你每多花一小时,都是在为一些你不认识的人解决他们可能永远不会遇到的问题。
所以你看到的现象是:造系统的人造完了,跑去用系统了。没空抽象。有空抽象的人,往往没亲手造过那个系统,抽象出来的东西隔着一层,用起来不对劲。
那个会计系统的使用者最终发了一条记录,里面有一句话格外扎眼:“一旦那个通用层被发布和解耦,下一个用户可能真的只需要几个指令就能达到85%到90%的完成度。”注意那个“一旦”。他没有说“我会发布”。他说的是“一旦……被发布”。这个“一旦”的主语是谁,他没写。
72个文件还留在他电脑里。22个重复的年度文件还躺在原来的位置。那个曾经被准确计算过的85%可重用率,至今还是一个数字,不是一份可下载的压缩包。这整件事——数字算了、分析做了、结论有了——但最后一步,把通用层从72个文件里抽出来、打包、命名、上传、写说明、回答Issues——这一步,没有人走完。