§26自改进Agent能走多远

How Far Can a Self-Improving Agent Go

写到这里,整本书绕了一圈又回到了起点的那个问题:一个会自己改自己的Agent,到底该被信任到什么程度。今年4月写第一版时这还是一句抽象的担忧,现在能在源码里指着具体的几行说话了。

先把那把老尺子拿出来

Martin Fowler几年前讲AI协作时给过一把尺子,三个刻度:人在环里(in the loop)、人在环上(on the loop)、人在环外(out the loop)。

在环里,是每一步都得你点头,AI写一行你看一行。在环上,是AI自己跑,你站在旁边看仪表盘,发现不对随时能拉闸。在环外,是你把活交出去,睡一觉起来看结果,中间发生了什么你不知道也不在乎。

这把尺子的好处是它不谈情绪,只谈位置。问题从「我该不该信任AI」变成了「在这件具体的事上,我站在环的哪个位置」。

旧书里我用这把尺子聊过Hermes的学习循环,但当时只能停在理念层面。一个会自己写skill、自己改skill的Agent,它到底把人放在了环的哪一格,那会儿我答不太上来,只能说「应该是在环上」。

几个月后再读源码,这个「应该」可以删掉了。

Curator给的三个源码级实锤

6月的v0.16.0里长出了一个叫Curator的东西(§06你已经见过它的状态页),是个真正在后台跑的维护者,定期给Agent自己造的skill库做归档、合并、打包。到v0.22合并默认是关的,只剪枝,但它依然是一个在你不看着时改skill库的程序,也就是一个程序在改它自己。

但你去翻agent/curator.py ,会发现它的每一个动作都被三道闸卡着,而这三道闸恰好就是「on the loop」

的工程化定义。

dry-run先看报告

永不删只归档留好撤销的路第一道,dry-run预览。hermes curator run --dry-run跑一遍只产报告、不动库。Agent想合并哪些、归档哪些,先列给你看,你审完再决定要不要真跑。人没被踢出环,人站在环上看报告。

第二道,永不删除,只归档。源码文件头写着一句invariant:「绝不自动删除,只归档;归档可恢复。」归档就是把skill目录挪进一个.archive/文件夹,随时能restore回来。Agent没有删除权,顶多把东西挪到一边。后来加的hermes curator purge能真删,但那是你手动敲的命令,不是Curator自己的动作。

第三道,留好撤销的路。只要开了合并,Curator动手前就把整个skill目录打成一个带时间戳的tar.gz,连之前归档的也一起存,改坏了rollback一条命令全救回来;默认只剪枝的话,归档本身就是撤销的路径。现在还多了一本改动账本,可以只回滚其中某一条。

还有一道更隐蔽的边界,我觉得是整套设计里最聪明的一笔:provenance(来源追踪)。Hermes给每个skill记着「你是谁造的」。手写的、从社区装的、出厂自带的,全都打上保护标记,Curator一个都不许碰。它能动的,只有Agent自己fork出来造的那部分。

这意味着什么:自改进的「破坏半径」被锁死在Agent的自留地里。它可以折腾自己长出来的东西,但碰不到你亲手写的、你信任的那些。出问题,烂的也只是它自己那块地。

把这四样东西摆在一起看,dry-run、不删黑名单、快照、provenance,Fowler那把抽象的尺子,第一次有了源码刻度。Hermes明确选了「on the loop」:Agent自己跑,但你随时能看、能拦、能回退、能划清它的活动边界。

不在屋里筑墙,把屋子整个搬进保险库

学习循环这块讲完了边界,安全那几章其实在讲同一件事的另一面,只是换了个对象,从「Agent怎么改自己」

变成「Agent怎么碰外面的世界」。

Hermes的安全文档里有一句话,气质和市面上大部分产品是反的:

「针对一个对抗性的LLM,唯一的安全边界是操作系统。」

它等于在说:我进程里那些东西,审批门、输出脱敏、注入扫描、工具白名单,一个都不是真正的边界。它们只是启发式,是「在一个被攻击者影响过的字符串上跑的猜测」。指望它们挡住一个铁了心要搞破坏的模型,结构上就不可能。

大部分产品的营销叙事是反过来的:我有N层AI防护,每一层都让你更安全。Hermes偏偏把自家进程内的所有防护都标成「不是边界」,然后把真正的信任锚点丢给操作系统。

推荐不推荐
把整个Agent进程丢进OS沙箱(Docker / OpenShell /在Agent进程内部堆审批正则、脱敏规则、模式扫描,
远程主机),让文件系统、网络、进程都受OS约束。这指望它们拦住对抗输出。这只是启发式,不是墙。
是真边界。

这种诚实是有代价的。承认「我进程内的防护不是边界」,等于主动放弃了一个很好卖的卖点。但它换来一个更结实的东西:你知道自己到底被什么保护着。不是被一堆可能被绕过的正则,而是被一层OS级的隔离。

配套的是另一半:全程可审计。Hermes有一套只读的observer契约,Agent干的每件事,每次模型调用、每次工具执行、每次审批、每个子Agent的派生,都带着关联ID吐成事件流。自治不等于黑箱。它在你看不见的地方跑,但跑过的每一步都留了痕,事后能完整重建。

把这两条合起来,就是Hermes对「自改进Agent该信任到哪」给出的工程答案:不在Agent的脑子里筑护城河,而是把它整个丢进一个透明的盒子,盒子的墙由操作系统砌,盒子的玻璃让你看清里面每一个动作。

大家是越来越像,还是越走越远

有意思的是,这套约束层的具体做法,正在变成行业的公共知识。

翻Hermes的审批门源码,注释里大大方方写着灵感来自Claude Code的危险命令规则、来自OpenAI Codex的命令检测工作。哪些shell命令该拦、`sudo`从stdin读密码要防、Agent不许杀自己的进程,这些「该拦什么」

的知识,正在主流Agent之间互相抄、互相补。约束层在趋同。

但定位层在分化。同一段时间里,Hermes自己从两万star涨到超过25万,长出了桌面App、长出了简体中文界面,开始从极客的命令行玩具往「能发安装包给朋友装」的产品转。它最大的对手OpenClaw体量还在前面,但创始人去了别处,项目转进了基金会托管。生态里还冒出了专门面向风险厌恶型企业的硬核分支。

所以你看到一个挺微妙的图景:底层的「怎么把Agent关好」越来越像,上层的「这个Agent给谁用、长什么样、靠什么变现」越来越不一样。趋同的是工程常识,分化的是产品野心。这大概是任何一个技术从早期走向成熟时都会有的样子:地基的做法收敛,楼盖成什么样各凭本事。

那个绕不过去的问题:开源,所以可信吗

聊到这里,有个问题我一直没正面碰,现在躲不过去了。

Hermes是MIT开源的。开源经常被当成信任的同义词,代码都摆在那儿,谁都能看,还能不信吗。

但你真去看那25万star背后的东西,会有点犹豫。一个大版本就是上万个commit、上千号人参与,issue和PR的编号已经冲过了十四万。这么大、这么快的一个项目,「代码公开」和「有人真的逐行审过」之间,隔着一条不小的沟。

更要命的是Hermes自己的信任模型亲口承认的那条:第三方skill和plugin,是在import的那一刻就执行任意Python的。它们以完整的Agent权限运行,能读你的凭证,能调你的工具。文档把缓解措施写得很清楚,就四个字「安装前审查」。翻译过来就是:装之前你得自己读一遍那段Python,别光看它SKILL.md里的自我介绍。

这话很诚实,诚实到有点冷。它等于在说:开源给了你审查的权利,但没替你审查。墙我帮你砌好了,门钥匙在你手上,你自己决定让谁进来。

我觉得这恰恰是这套东西最该被记住的态度。它没有用「我们开源所以你尽管信」来糊弄你,而是把每一道防护的局限都标得清清楚楚:审批门抓不住对抗输出、脱敏能被绕过、注入扫描会漏会误报。一个肯把自己防线的破洞主动指给你看的系统,比一个号称「N层防护、绝对安全」的系统,反而更值得托付一点。

回到最初的问题

自改进Agent能走多远。

从4月读到10月,我的答案不是一个距离,是一个姿势。

它能走多远,取决于你愿意站在环的哪一格。Hermes把工具备齐了:你想盯着每一步,它有dry-run和记忆写入审批;你想放手让它跑,它有快照和归档兜底;你想完全撒手,它有OS沙箱和全程审计替你守着底线。它没替你选位置,它只是确保不管你站哪一格,缰绳都还在你手上。

缰绳会自己长,这是第一版里的话。半年后我想补一句:缰绳长得再聪明,握着它的那只手,最好还是你的。

这本书到这里就讲完了。Hermes还在每周发版本,等你读到这页,它大概又长出了一些这本书里没有的东西。

这没关系。一个会自己进化的系统,本来就注定跑在任何一本写它的书前面。你能做的,也是我写这本书想帮你做的,不是记住它今天长什么样,而是看懂它进化时遵循的那几条规矩,哪些边界它绝不越过,哪些刹车它一直留着。

剩下的,交给你自己去养。

Hermes Agent橙皮书2.0

AI编程橙皮书系列

花叔 · AI Native Coder我一行代码都不会写,却用 AI 做出了 AppStore 付费榜 Top 1 的小猫补光灯,写了 9 本技术书。所有产品全部 AI 写的,我只负责想清楚要做什么。开源了女娲.skill、huashu-design 等项目。我始终相信:AI 生成内容不稀缺,稀缺的是判断力。B站:花叔v公众号:花叔X YouTube GitHub官网花叔 · v261020 · 2026年10月本手册仅供学习参考。AI工具迭代迅速,请以官方文档为准。