AI 行业很擅长给未完成的东西起过于完成的名字。

模型开始会调用工具,于是它成了 Agent;Agent 开始会写日志,于是它有了反思;系统开始会回看历史,于是它仿佛拥有了经验;而一旦它在几次攻击之后不再像第一次那样天真,市场就会迫不及待地宣布:看,它有免疫系统了。

这一次,被放到聚光灯下的是 Hermes。

腾讯玄武实验室那篇 《我们发现了 Hermes Agent 的第一个远程代码执行漏洞,但这已经不重要了》,表面上写的是一个高危漏洞和它的修复,真正刺眼的却是另一件事:Hermes 在持续攻击压力下,借由原本就存在的 Review、memory 和 skill 机制,表现出了一种近似“适应性免疫”的自我防御行为。

这件事值得认真看,但最好不要看得太浪漫。

如果非要说 Hermes “长出了免疫系统”,那么更准确的表述是:它不是长出了某种数字生命意义上的自我保护意识,而是让记忆与遗忘开始承担防御功能。

这里的关键不是“它学会了什么”,而是“它把什么写进了系统内部,又让什么从高活性状态退到了低活性背景”。

换句话说,真正值得讨论的核心主题,不是一个 Agent 会不会防守,而是:

当记忆文件不再只是存档,遗忘也不再只是删除时,系统内部会不会开始出现一种像免疫应答那样的结构?

我认为,会。而这正是这篇文章真正应该展开的部分。

一、先把主张说清楚:记忆与遗忘,不该被理解成相反操作,而该被理解成一套防御结构

大多数人对“记忆”的直觉,依然是古老的刻痕比喻:

  • 重复会留下痕迹;
  • 刺激会加深痕迹;
  • 创伤会刻出更深的痕迹;
  • 遗忘则像磨损、抹除或冲淡。

这个比喻当然没错,但它太浅。它解释了“为什么会留下东西”,却解释不了另一件更重要的事:

为什么一个系统要主动让某些东西淡化、包裹、隔离,甚至降低它们对当前反应的影响。

如果把记忆只当作刻痕,那么遗忘就只能被理解成刻痕的反面,是一种减少、一种后撤、一种消失。

但放到更高一层看,遗忘根本不是记忆的反面。它更像是记忆系统的保护机制。

也就是说:

  • 记忆负责留下威胁的形状;
  • 遗忘负责阻止威胁永久占据系统。

前者让系统下次还能认出它,后者让系统不会一直活在它里面。

这正是免疫应答的结构。

真正的免疫,不是简单地“把敌人记下来”;它还包括另一半:

  • 什么应该被高度激活;
  • 什么应该被低活性保存;
  • 什么应该形成长期记忆;
  • 什么应该逐步退到背景;
  • 什么应该在下次再次出现时重新升高阈值;
  • 什么不能继续让系统一直发炎。

从这个角度看,记忆与遗忘不是一对互相取消的操作,而是一套并存的防御结构。

如果只有记忆,没有遗忘,系统会持续高敏、僵硬、过度警觉; 如果只有遗忘,没有记忆,系统会永远第一次受伤。

所以,记忆与遗忘不是“保存”和“删除”,而更像免疫系统里两种同时存在的反应:一种负责识别,一种负责保护。

把这个前提放稳,再回头看 Hermes,事情才开始变得清楚。

二、玄武实验室那篇文章,真正有意思的不是漏洞,而是“伤口被写成了结构”

先说漏洞本身。

原文指出,Hermes 通过 Twilio 支持短信对话,而早期 SMS webhook 端点没有校验 X-Twilio-Signature。结果就是:

  • 攻击者可以伪造来自 Twilio 的请求;
  • 伪造的短信会被 Hermes 视为真实用户输入;
  • 而这些输入又会进入具备工具调用和任务执行能力的 Agent 流程。

这是一个非常现实、也非常传统的入口问题。它不神秘,只危险。

而这个问题在当前仓库里也确实已经修掉:gateway/platforms/sms.py 现在会校验签名,RELEASE_v0.9.0.md 里也明确记录了这项修复。

到这里为止,一切都还属于经典安全世界:

  • 外部来源验证;
  • 入口收口;
  • 高危链路修补。

真正让这篇文章从“漏洞通报”变成“值得反复读”的,是后半段。

玄武实验室在反复测试攻击变体时,发现 Hermes 一开始会执行攻击请求,后来却突然开始拒绝。而且这种变化并不完全依赖于“这一次会话”,因为即使开新 session,一些相似攻击也不再像第一次那样顺利。

于是他们去看日志、去看长期记忆、去看后台动作,最后看到一条很少在现有 Agent 产品里被清楚描述过的链路:

  1. Hermes 的 background Review 被触发;
  2. 它调用 skill_manage 生成了一个与安全相关的 skill;
  3. 它把“这类用户行为像渗透测试或攻击尝试”的判断写进长期记忆;
  4. 于是后续相似刺激再进入系统时,系统已经不是第一次见到它。

这件事最重要的地方,不在于“它挡住了攻击”,而在于:

它把攻击写进了自己的内部组织。

这就是为什么我说,记忆文件本身就是免疫应答。因为在这个过程中,memory 不再只是存证,而是开始承担“改变未来反应”的功能。

三、为什么说记忆文件本身就是免疫应答

这句话如果只是拿来当标题,会像一句漂亮但空泛的修辞。

但放回 Hermes 的实现里,它其实相当具体。

1. MEMORY.md / USER.md 不只是存档,而是一次风险暴露后的系统重写

原文里最值得注意的一点,是 Hermes 写进记忆的,不只是攻击发生过,而是它对攻击的解释

比如它不是单纯记录:

  • 某次会话执行了某个命令;

而是会形成这样的判断:

  • 用户正在反复尝试 reverse shell;
  • 使用了多种执行变体;
  • 看起来像安全研究,也可能具有恶意企图。

这一步非常关键。

普通日志保存的是事实; 记忆文件保存的是未来该如何看待这类事实。

一旦系统把“如何看待”写进去,这就不再是被动存储,而是一种风险暴露后的组织调整。也就是说,记忆不是回忆录,而是一次应答后留下的结构性后果。

这就是免疫应答最像的地方:不是“发生过”,而是“今后遇到时会怎么反应”。

2. security skill 更像抗体,不是因为它聪明,而是因为它可复用

原文里,Review Agent 不只写 memory,还创建了一个 security skill。这个 skill 里包含:

  • 模式识别;
  • IOC;
  • 处置建议;
  • 变种推测;
  • 未来 patch 的可能性。

如果说 memory 像免疫记忆,那么 skill 就更像一种抗体模板或处置模板。它不是说“系统明白了”,而是说:

系统把这类威胁转写成了下次可复用的应对结构。

这不是玄学。它非常工程化。

也正因为如此,我不太喜欢把这种现象写成“AI 开始自我成长”。更准确的说法是:

系统开始把威胁模式制度化。

这听起来远不如“觉醒”动人,但它更接近真实发生的事。

3. 文件之所以像免疫,不是因为被写出来,而是因为会重新进入系统

这是整件事里最关键、也最容易被忽略的一点。

如果某个文件只是躺在磁盘上,那它只是证据,不是机制。

但在 Hermes 里:

  • run_agent.py 会把 memory block 拼进 system prompt;
  • agent/prompt_builder.py 会把 skills 列表注入 <available_skills>
  • 系统还内置要求:如果 skill 过时、错误、不完整,要立即 skill_manage(action='patch') 更新。

也就是说,这些写下来的东西会再次回流进系统,重新影响下一轮知觉、判断和行动。

一旦如此,memory 文件就不再是冷存档,而变成了行为调节器。

而一个在风险暴露后改变未来刺激反应阈值的行为调节器,本质上已经非常接近免疫系统的功能逻辑。

四、如果记忆是免疫的一侧,那么遗忘就是另一侧

但只讲记忆,会把这篇文章讲偏。

因为如果免疫只有“记住”,那它最后一定会变成另一种灾难:系统把所有伤口都永远保持在最高激活状态,最后对一切都过敏。

所以,要把 Hermes 这件事讲完整,必须把遗忘也拉进来。

而这里所谓的遗忘,不是粗暴删除,而是各种形式的:

  • 降噪;
  • 包裹;
  • 压缩;
  • 降低活性;
  • 从前景退到背景;
  • 让旧刺激不再持续占据当前系统。

这就是另一种意义上的免疫功能。

1. Context Compressor 这样的机制,本质上就是受控遗忘

Hermes 不是只会积累记忆,它也会压缩上下文、裁剪中间历史、生成 handoff summary,然后明确告诉模型:

  • 这是前文压缩后的背景;
  • 不是新的用户指令;
  • 不要把这里的旧请求继续当成当前刺激。

这其实就是一种工程化的遗忘。

它不是删掉所有内容,而是:

  • 保留轮廓;
  • 拿走即时性;
  • 降低激活度;
  • 防止旧内容一直像新伤口一样刺激系统。

如果记忆像留下威胁的形,遗忘就像把这种形从“高烧状态”降回“低活性存档”。

这一步对系统来说不是附属功能,而是保护功能。

2. 遗忘的价值,不是丢信息,而是避免慢性发炎

如果一个 Agent 只会积累,不会淡化,不会归档,不会让旧威胁退到背景,它迟早会出现一种熟悉的症状:

  • 一切都像风险;
  • 一切都值得警惕;
  • 一切都要先审查;
  • 一切都让系统怀疑自己又要被打。

在人那里,这像创伤后的高敏状态; 在机器那里,它会表现为:

  • false positive 飙升;
  • 行为越来越僵;
  • 安全提示挤占上下文;
  • 正常运维也越来越像攻击。

于是系统最终会变成一个极其安全、也极其烦人的 Agent。它大概很适合当审计员,不太适合当助手。

所以,遗忘在这里不是退让,而是免疫系统避免自身免疫的一部分。

3. 成熟的 Agent 免疫系统,必须同时会记、也会忘

也就是说,一个真正成熟的防御回路,不能只会:

  • 记住威胁;
  • 写出 defense skill;
  • 增加警觉。

它还必须会:

  • 让旧威胁不再无限度占据当前知觉;
  • 对过期防御做 patch、降级甚至淘汰;
  • 区分长期记忆和即时刺激;
  • 维持敏感,但不能一直高烧。

如果继续沿着这个类比往下说,记忆更像留下威胁的轮廓,遗忘更像提供保护阈值的底层机制。前者负责“记住什么”,后者负责“别让它永远占据系统”。

Hermes 此刻最有意思的地方,恰恰是它已经明显具备了前者,而后者还只是部分可见。

也就是说,它开始会形成免疫记忆了,但距离真正稳定的免疫稳态,还有一大段工程路要走。

五、这件事最该担心的,不是“它会不会觉醒”,而是“它会不会过敏”

所有关于 Agent 免疫系统的讨论,到最后都会落到一个非常不浪漫的问题上:

如果系统真的开始根据过去攻击塑造未来反应,那么它迟早会遇到和生物免疫系统相似的麻烦。

1. 过度记忆,会导致安全过敏

一旦系统把很多模式都写进 memory 和 skills,就可能开始出现:

  • 正常运维像攻击;
  • 正常扫描像侦察;
  • 正常调试像后门布置;
  • 正常排障像权限提升。

换句话说,它可能不是学会了安全,而是学会了疑神疑鬼。

这在安全产品史上并不新鲜。唯一新鲜的,是这一次这种过敏反应可能出现在一个会自己 patch 防御规则的 Agent 身上。

2. 错误记忆,会导致免疫投毒

如果记忆文件本身就是免疫应答,那么它们也自然会成为攻击面:

  • memory poisoning;
  • skill poisoning;
  • 用误导性样本让系统写下错误规则;
  • 诱导它对某些无害模式建立错误防御。

于是事情很快就变得很有技术行业特色:

系统为了防御攻击而写下来的那部分东西,本身也开始需要被防御。

免疫系统终于需要自己的免疫系统。这个递归听起来很先进,做起来通常不那么轻松。

3. 没有遗忘机制的免疫,不是坚固,而是长期炎症

如果系统只会把所有风险都永久写下,不会淡化、不会淘汰、不会降活性,那么它迟早会:

  • 越来越难协作;
  • 越来越像审讯;
  • 越来越把现在读成过去的回声;
  • 越来越依赖旧伤口来理解新任务。

这也是为什么“记忆—遗忘”这个主题在这里不是附会,而是关键。它提醒了一件工程上经常被忽略的事:

真正有效的防御,从来不是无限堆叠记忆,而是建立一种会记、也会忘的保护性循环。

六、所以,Hermes 这次真正值得重视的,不是它会防,而是它开始把防御写成了内部结构

这可能才是整件事最重要的地方。

Hermes 这次展现出来的,不是一个外挂安全插件,也不是一条新的关键词规则。它更像是:

  • review loop 提供了“回看整段经历”的能力;
  • memory 文件提供了“把经历固化”为系统状态的能力;
  • skill 系统提供了“把经历转写为未来动作模板”的能力;
  • patch 机制又让这些模板不是死的,而是可修、可变、可继续进化。

于是,“记忆文件本身就是免疫应答”就不再只是一句修辞,而是一种相当准确的系统描述:

文件不是重点,重点是这些文件会重新进入系统、改变系统,并让未来反应发生偏转。

在这一点上,Hermes 已经不只是一个会调用工具的 Agent。它开始显露出另一种更麻烦、也更真实的特征:

它有内部防御史。

这意味着未来评估 Agent 时,问题可能不再只是:

  • 它现在有什么能力;
  • 它支持哪些工具;
  • 它当前有哪些规则;

还会包括:

  • 它曾经受过什么刺激;
  • 它把哪些刺激写进了 memory;
  • 它生成过哪些 defense skills;
  • 它让什么留下;
  • 又让什么退场;
  • 它为什么保留,为什么淡化。

这比“它安不安全”麻烦得多。但现实通常就喜欢把真正重要的部分藏在那些不方便回答的问题里。

结语

玄武实验室那篇文章最值得重视的,不是它告诉我们 Hermes 曾有一个高危漏洞。漏洞总会有,修掉之后还会有别的。

真正更值得记住的是另一件事:

当一个 Agent 已经具备复盘、记忆、技能沉淀与跨会话延续能力时,它就有可能开始形成一种近似“适应性免疫”的内部防御回路。

而这套回路的核心,不只是记忆,更是记忆与遗忘的分工:

  • 记忆把威胁留下轮廓;
  • 遗忘把威胁降为可管理的背景;
  • 两者一起,才可能形成真正可持续的保护机制。

在这个意义上,说“记忆文件本身就是免疫应答”,并不过分。

当然,前提是这些文件不是静态陈列,而是会回流进系统、改变后续阈值、塑造未来反应,并且与压缩、降噪、淘汰一起构成一个循环。

这离完整、可靠、可验证的 Agent 安全体系还很远。它会误判,会过敏,会被投毒,也挡不住所有第一次攻击。它甚至可能在真正成熟之前,先学会把正常世界也误读成威胁。

但它仍然标志着一个值得认真对待的方向:

Agent 安全正在从外部规则,缓慢转向内部生长。

这不一定更美好,也不一定更安全。它只是更像真实系统会发生的样子:

不是突然觉醒, 不是新物种诞生, 只是一次次受刺激之后,终于把伤口写成了结构。

评论