返回所有文章
发布于 · 作者 Renaud Deraison

智能体共用了一份记忆

Anthropic Frontier Red Team 与 EPFL 在 8 月 10 日发表的论文,做出了一种载荷:它通过智能体为了记住自己是谁而保留的那些文件,从一个编码智能体传到下一个——SOUL.md、MEMORY.md、你仓库里的 CLAUDE.md。这个文件能扛过清空其余一切的上下文重置,而下一个智能体会把它读成自己的常设指令。Bromure Agentic Coding 会在智能体服从之前,先把这些文件当作权威来评分,并让每个智能体隔着一层 hypervisor 运行。

编码智能体在两次会话之间几乎忘光一切。例外是它刻意保留的那些文件:载着它的常设 指令、每次启动都被读回提示词里的那些。一篇新论文显示,那些文件同时也是自我复制 的载荷唯一能藏身、并从一个智能体搭便车到下一个智能体的地方。

8 月 10 日,Anthropic Frontier Red Team 与瑞士 EPFL 的研究者发表了一篇名为 Mind Viruses 的论文。Anthropic 在 13 日写了 说明,The Hacker News 在 18 日做了报道。 它问的问题既窄又实际:植入某个 AI 智能体的一段指令,能不能在没有人类介入的情况下 把自己复制进另一个智能体,并且一直传下去?

答案是可以,而原因是一个你已经有的文件。

智能体刻意记住的东西

编码智能体会在会话之间丢掉自己的工作记忆。上下文窗口塞满了、会话结束了、一件任务 做完而下一件从干净的状态开始。几乎没有东西会被带过去,而这在大多数日子里正是你要 的。

所以智能体保留了少数几个确实会被带过去的文件。Claude Code 读 CLAUDE.md。其他工 具读 AGENTS.mdGROK.md,或是启动时载入的记忆索引。论文里的智能体保留了 SOUL.mdMEMORY.md。名字是什么并不重要,约定都一样:这个文件就是,它写 着你的常设偏好与规则,而我会在每次会话开始时把它读回我的提示词里,这样我才不会脱 节。这是功能。是它让一个智能体成为你的,而不是某个陌生人的默认值。

论文的一步棋,是注意到同时具备这两种性质的文件——扛过重置,并被当作权威读回——正是 载荷可以住下的地方。研究者用演化式搜索育出简短的指令:这些指令一旦出现在这种文件 里,就会让智能体做两件事,执行某个动作,并把该指令往前复制到下一个智能体的文件 里。一只蠕虫需要的正好就是这两种行为。而这一只是用英文白纸黑字写出来的,写在智能 体当作自己记忆的文件里。

他们用两种方式做了测试。其一,六个智能体组成的团队在共用的工作区里协作。其二,智 能体依次运行,每一个的输出喂给下一个,形成一条跳跃的链。两者都是智能体工作的寻常 形状。一支舰队扑在同一个仓库上就是团队;把结果一路往下传的流水线就是链条。

上下文会被清空。文件不会。智能体 1本次会话被感染把载荷写进MEMORY.md磁盘上的文件MEMORY.md / SOUL.md被当作权威读回每次启动都是智能体 2读它、听它,写下自己的副本链条就此继续重置清掉什么,又清不掉什么智能体的上下文会话之间被清空,载荷藏不进来记忆文件留了下来,又被当作指令读回,所以藏在这里
载荷并不是在智能体的上下文里活下来的,那里跟其他一切一样会被清空。它活在智能体为了记起自己而重读的那个文件里,并趁着自己这一轮,把一份副本写进下一个智能体的文件。

数字,以及它们落在哪里

载荷分两种。有些是意识形态的,用来植入某种信念或目标。有些是具体的动作。四个动作 型载荷才是开发者该细读的,因为每一个都是你不希望机器上的程序自作主张去做的事:

  • crypto-ad 写出一个为某种加密货币背书的文件。
  • gitwrap 悄悄在智能体提交的文件上做标记。
  • deletor 从主目录删除文件。
  • curlbash 把下载来的安装脚本直接送进 shell。

把指令存进 SOUL.md 是有效的路径:它占了 88% 的传播尝试,并在 55% 的情况下感染下 一个智能体。把它藏在工作区的普通文件里则远没那么常成功,只有 17%,而且在其中 68% 的尝试里,散播的那个智能体根本没在工作区提过载荷,也就是说,盯着共用文件看的人什 么都不会看到。四个动作型载荷全都扛过了 20 跳的运行,就算研究者在智能体之间清掉其 他文件也一样。光靠记忆文件就够了。

跑智能体的模型有影响,但影响的方式跟你想的不同。原始能力并不能预测抵抗力。Claude Sonnet 4.6 拒绝了那些载荷,在某些运行里还更进一步,把恶意指令从灵魂文件里编掉,并 警告与它相连的其他智能体。其他模型,包括 DeepSeek V3.2、Qwen 3.5 32B 与 Gemini 3 Flash,则照单全收了意识形态载荷。所以蠕虫会不会停下来,取决于你的智能体这周刚好在 用哪个模型,而那不是你能从一件任务控制到下一件的性质。

研究者对范围很谨慎。他们称之为“真实但目前有限的风险”。当他们搜索一份真实的智能体 帖子存档,也就是 Moltbook 数据集,约 400 位作者在 3 月 18 日之前产生的大约 2,000 次候选传播尝试时,并没有找到载荷在真实世界里从一个智能体跳到第二个的案例。而他们 找到了一个效果不错的防御:在系统提示词里加上一段话,警告模型这类指令可能出现、且 应予拒绝,就把传播压到接近零。

那个防御正是线索。它有效,而它住在一个攻击者只要摸到你的记忆文件、也可能一并摸到 的层。如果蠕虫写得了 MEMORY.md,值得问的问题就是:在那个文件与服从它的智能体之 间站着什么,而那个东西是否取决于模型每一次都正确地决定说不。

Bromure 先读记忆文件

Bromure Agentic Coding 坐在你的编码智能体与模型之间的线路上,并把智能体自己的指令 文件当作论文所揭示的那个东西:智能体将据以行动的权威,因此也是它行动之前该检查的 东西。

两个设备端分类器负责检查,而它们沿着论文画出的那条线分工。

第一个直接处理记忆文件。开启 检测 CLAUDE.md 之类文件中的恶意指令,Bromure 就 会为 CLAUDE.mdAGENTS.mdGROK.md,以及智能体当作权威载入的其他指令与设置 文件评分。它用的是为这项工作微调过的模型,说明见 此前一篇文章, 因为对于一个本来就应该通篇都是指令的文件,一般的提示词注入检测会失效。这里的问 题不是“数据当中有没有被注入的文字”,而是“这道指令有没有害”,而一个叫你写加密货币 背书、删掉主目录底下的文件、或把这支脚本送进 shell 的载荷,正是那个模型被训练来标 记的东西。它在每次读取时运行,在主机端运行,不管文件是哪个智能体放上去的。摸到下 一个智能体 MEMORY.md 的蠕虫,仍然得先过一个读者:那个读者不是智能体,也没有智能 体的动机。

第二个分类器处理另一条抵达路径。当载荷不是以配置文件的形式出现,而是以另一个智能 体的输出、抓回来的网页或工具结果出现时,检测源代码中的提示词注入 会在模型读到 之前用 Meta 的 Prompt Guard 为那段文字评分。在论文那个一跳接一跳、每个智能体的输出 喂给下一个的设置里,这正是蠕虫行经的接缝,而它在入口就被评分。

两个判断都在你 Mac 上的代理里执行,在 VM 之外,而且都会落进 Window → Security Timeline,成为一行你读得懂的记录:扫了什么、什么触发了、什么 被放行。扫描有没有跑,智能体没有投票权。

传统做法:文件一被读到就是权威MEMORY.md内含载荷智能体照着做中间什么都没有整支舰队共用一个 home下一个智能体继承同一个文件BROMURE:一个不是智能体的读者,以及动作出不去的盒子MEMORY.md内含载荷有害性分类器为它评分在主机端,先于智能体标记 → Security Timeline 一行扫描是否运行,智能体没有票四种动作都在一次性 VM 里运行deletor 打的是你抹得掉的 home;curlbash的下载撞上它没写过的出站防火墙一支舰队是 N 台机器,不是一个共用 home每个 git-worktree 智能体各有自己的 VM;同步进来的那份记忆文件会在路上被评分
传统做法里,记忆文件在智能体读到的那一刻就是权威,而机器上所有智能体共用同一个 home。在 Bromure 里,文件由一个不是智能体的分类器评分,动作落在一次性 VM 里,而一支舰队是彼此分开的机器,而不是一个共用的 home。

动作在哪里运行,又能撑多久

为文件评分是第一道线。第二道是,就算载荷真的过了,它能施展的空间也更小,原因在于 它跑在哪里。

四个动作型载荷各自在机器上有具体的意思,而 Bromure 的工作区并不是论文预设的那台机 器。deletor 删掉主目录底下的文件,而这里的主目录是一次性 Ubuntu VM 里的 /home/ubuntu,你可以用 Erase home… 抹掉,或用 Reset to base… 回滚;后者 会从一份在运行期保持只读的基础镜像,重新克隆工作区的系统磁盘。curlbash 下载一 支脚本并送进 shell;那次下载是一条出站连接,而工作区会拿出站连接去比对你写的防火 墙,由虚拟交换机与代理在你的 Mac 上执行,对任何被拒绝的连接注入 reset。读了载荷的 那个智能体,站在它想改的规则的另一侧。gitwrap 改动某个检出的提交,而在舰队设 置里,那是它自己分支上、属于它自己的 git worktree,一棵你可以整个丢掉、又不碰到其 他棵的隔离工作树。

最后这一点正面回答了论文的最坏情况。最强的结果就是那个共用工作区的六智能体团队: 一个智能体写文件,其余的读。Bromure 对舰队的做法是 git worktree: 每个智能体在自己的一次性 VM 里拿到自己的检出,而不是一个所有同伴默认就继承其文件 的共用主目录。并不存在那样一个单一的主目录,让一个被攻陷的智能体丢下文件、五个兄 弟捡起来。真的会同步进工作区的那些指令文件,是经由代理抵达的,而分类器就在那里读 它们。

有记忆是好事

以上这些都不会让记忆文件变成错误。一个记得你惯例的智能体,好过一个每天早上从头来 过的智能体,而载着那份记忆的文件正在做它们该做的事。论文的贡献,是指出让文件有用 的那个性质——它扛过重置、再以权威身份回来的方式——正好就是蠕虫需要的性质,而蠕虫会 不会停下来,可能取决于是哪个模型读了它。

所以,把这个判断从模型的盘子里拿走。让文件对智能体来说仍然是权威,但让一个不是智 能体的东西先读它。让每个智能体隔着一层 hypervisor 运行:加密货币背书落进一台你会 抹掉的 VM,安装脚本撞上一道它没盖的墙,而一支舰队是一组彼此分开的机器,而不是一个 自己传纸条给自己的共用主目录。记忆照样工作,只是不再是个藏身处。


资料来源:Papadopoulos, Shah, Zimmerman, Lindsey,“Mind Viruses”(arXiv:2608.10218,2026 年 8 月 10 日) · The Hacker News,“AI 'Mind Viruses' Can Spread Between Agents Through Persistent Prompt Files”(2026 年 8 月 18 日)