返回所有文章
發佈於 · 作者 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 日)