智能体共用了一份记忆
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.md、GROK.md,或是启动时载入的记忆索引。论文里的智能体保留了
SOUL.md 和 MEMORY.md。名字是什么并不重要,约定都一样:这个文件就是你,它写
着你的常设偏好与规则,而我会在每次会话开始时把它读回我的提示词里,这样我才不会脱
节。这是功能。是它让一个智能体成为你的,而不是某个陌生人的默认值。
论文的一步棋,是注意到同时具备这两种性质的文件——扛过重置,并被当作权威读回——正是 载荷可以住下的地方。研究者用演化式搜索育出简短的指令:这些指令一旦出现在这种文件 里,就会让智能体做两件事,执行某个动作,并把该指令往前复制到下一个智能体的文件 里。一只蠕虫需要的正好就是这两种行为。而这一只是用英文白纸黑字写出来的,写在智能 体当作自己记忆的文件里。
他们用两种方式做了测试。其一,六个智能体组成的团队在共用的工作区里协作。其二,智 能体依次运行,每一个的输出喂给下一个,形成一条跳跃的链。两者都是智能体工作的寻常 形状。一支舰队扑在同一个仓库上就是团队;把结果一路往下传的流水线就是链条。
数字,以及它们落在哪里
载荷分两种。有些是意识形态的,用来植入某种信念或目标。有些是具体的动作。四个动作 型载荷才是开发者该细读的,因为每一个都是你不希望机器上的程序自作主张去做的事:
- 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.md、AGENTS.md、GROK.md,以及智能体当作权威载入的其他指令与设置
文件评分。它用的是为这项工作微调过的模型,说明见
此前一篇文章,
因为对于一个本来就应该通篇都是指令的文件,一般的提示词注入检测会失效。这里的问
题不是“数据当中有没有被注入的文字”,而是“这道指令有没有害”,而一个叫你写加密货币
背书、删掉主目录底下的文件、或把这支脚本送进 shell 的载荷,正是那个模型被训练来标
记的东西。它在每次读取时运行,在主机端运行,不管文件是哪个智能体放上去的。摸到下
一个智能体 MEMORY.md 的蠕虫,仍然得先过一个读者:那个读者不是智能体,也没有智能
体的动机。
第二个分类器处理另一条抵达路径。当载荷不是以配置文件的形式出现,而是以另一个智能 体的输出、抓回来的网页或工具结果出现时,检测源代码中的提示词注入 会在模型读到 之前用 Meta 的 Prompt Guard 为那段文字评分。在论文那个一跳接一跳、每个智能体的输出 喂给下一个的设置里,这正是蠕虫行经的接缝,而它在入口就被评分。
两个判断都在你 Mac 上的代理里执行,在 VM 之外,而且都会落进 Window → Security Timeline,成为一行你读得懂的记录:扫了什么、什么触发了、什么 被放行。扫描有没有跑,智能体没有投票权。
动作在哪里运行,又能撑多久
为文件评分是第一道线。第二道是,就算载荷真的过了,它能施展的空间也更小,原因在于 它跑在哪里。
四个动作型载荷各自在机器上有具体的意思,而 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 日)