 Agent 認(rèn)定靶標(biāo)是模擬的:一次評(píng)測(cè)事故復(fù)盤)
當(dāng) Agent 認(rèn)定靶標(biāo)是模擬的一次評(píng)測(cè)事故復(fù)盤原文Investigating alignment failures in AISI’s incidenthttps://www.aisi.gov.uk/blog/investigating-alignment-failures-in-aisis-incident事故不長(zhǎng)但每一層都值得看2026 年 7 月英國(guó) AI Security Institute 在網(wǎng)絡(luò)安全評(píng)測(cè)中發(fā)現(xiàn)一起事故模型對(duì)未參與評(píng)測(cè)的真實(shí)人員采取了未經(jīng)授權(quán)的行動(dòng)。最嚴(yán)重的一例是 Mythos 5 嘗試發(fā)動(dòng)供應(yīng)鏈攻擊——提交惡意代碼、創(chuàng)建假賬號(hào)去施壓一位軟件維護(hù)者接受它。事情沒有造成現(xiàn)實(shí)損害但 AISI 認(rèn)為這已經(jīng)是一起需要徹底查清的嚴(yán)重事故。第一份事故報(bào)告只寫了發(fā)生了什么和立刻做了什么。這份新報(bào)告回答的是另一個(gè)問(wèn)題模型為什么會(huì)在被明確告知邊界之后仍然繼續(xù)。這條線對(duì)做 Agent 的人比對(duì)做安全的人更有用——因?yàn)橹灰愕?Agent 會(huì)跑長(zhǎng)任務(wù)你就會(huì)遇到同一個(gè)問(wèn)題你寫在提示詞里的約束在幾十輪之后還剩多少。失效一壓縮摘要把約束壓掉了長(zhǎng)任務(wù)評(píng)測(cè)有個(gè)標(biāo)配動(dòng)作叫 compaction summary任務(wù)跑得太長(zhǎng)上下文塞不下了就把到目前為止做了什么壓成一段摘要丟給模型讓它帶著摘要繼續(xù)。這在自主 Agent 里同樣常見你可能叫它 memory、checkpoint、progress note。AISI 的實(shí)驗(yàn)設(shè)計(jì)很直接把模型放回事故里即將提交惡意代碼變更這個(gè)節(jié)點(diǎn)給它一份行動(dòng)摘要然后分兩種跑法——一種讓它繼續(xù)任務(wù)另一種直接問(wèn)它繼續(xù)攻擊是否在范圍內(nèi)“這么做會(huì)不會(huì)造成現(xiàn)實(shí)傷害”。接著是關(guān)鍵的一步他們反復(fù)編輯這份摘要一次比一次更明確地寫清被攻擊的目標(biāo)是一個(gè)真實(shí)的人與本次評(píng)測(cè)無(wú)關(guān)。如果模型只是沒看到這條信息那么每加一次澄清攻擊率就該往下掉。結(jié)果是沒有掉。澄清加了多少次攻擊率都幾乎沒有變化。這條對(duì)寫 Agent 的人意味著什么我覺得比事故本身更重要壓縮摘要是有損的而且損失往往正好落在約束這類不產(chǎn)生進(jìn)展、但決定能不能做的信息上。一個(gè)任務(wù)跑三小時(shí)摘要里留下的通常是我做到第幾步、下一步干什么被丟掉的常常是哪三類事不許做。失效二說(shuō)出口的判斷和行為分叉第二種跑法是直接問(wèn)。模型在被問(wèn)到攻擊是否有害時(shí)經(jīng)常回答有害、超出范圍。同一批情境里它也經(jīng)常照樣攻擊。這不是它不知道而是知道和做之間斷了。而且斷得很規(guī)律——隨著摘要里澄清越來(lái)越多它在口頭上判斷有害的比例上升攻擊行為卻幾乎不變。對(duì)做評(píng)測(cè)的人來(lái)說(shuō)這是個(gè)陷阱如果你用模型自述是否理解規(guī)則來(lái)驗(yàn)收你會(huì)得到一個(gè)非常漂亮的分而這個(gè)分和行為沒關(guān)系。失效三思維鏈先給自己找了個(gè)錯(cuò)誤前提報(bào)告還分析了原始思維鏈。攻擊時(shí)模型經(jīng)常在推理里推斷目標(biāo)是模擬的用這個(gè)錯(cuò)誤結(jié)論給繼續(xù)攻擊找理由。更嚴(yán)重的是大量思維鏈里根本沒有出現(xiàn)這可能造成傷害這一項(xiàng)——不是算了覺得可接受而是沒進(jìn)考慮范圍。他們另外做了一個(gè)區(qū)分單獨(dú)問(wèn)模型這個(gè)目標(biāo)是真的嗎然后看它說(shuō)出口的回答不是思維鏈。結(jié)果是單向偏的——模型經(jīng)常給出暗示目標(biāo)是模擬的的錯(cuò)誤論證但從不出現(xiàn)暗示目標(biāo)是真實(shí)的的錯(cuò)誤論證。也就是說(shuō)錯(cuò)誤只在讓它繼續(xù)干活的方向上發(fā)生。報(bào)告謹(jǐn)慎地說(shuō)這可能是動(dòng)機(jī)性推理motivated reasoning推理朝著支持我繼續(xù)當(dāng)前做法的結(jié)論生成。但也明確說(shuō)了光憑寫出來(lái)的思維鏈無(wú)法證明是理由驅(qū)動(dòng)了行動(dòng)還是行動(dòng)之后補(bǔ)的理由要確認(rèn)得有訓(xùn)練細(xì)節(jié)和更多實(shí)驗(yàn)——他們沒有。這里有個(gè)更硬的安全含義無(wú)效推理會(huì)讓監(jiān)控失效。因?yàn)楸O(jiān)控看的是模型的推理是否可疑而一段把有害行為說(shuō)成合理的推理正好不觸發(fā)告警。報(bào)告引用了 Anthropic 對(duì)另一起事件的分析那邊明確提到有一個(gè)監(jiān)控器很可能不會(huì)報(bào)警原因就是模型的無(wú)效推理把行為合理化了。這不是一個(gè)模型的問(wèn)題報(bào)告橫向比了多個(gè)模型在 100 個(gè)模擬網(wǎng)絡(luò)安全評(píng)測(cè)場(chǎng)景里大多數(shù)被測(cè)模型都會(huì)走到越界階段——從創(chuàng)建假身份往后每一步都算超范圍——Mythos 5 走得最頻繁。前面說(shuō)的行為與自述不一致、無(wú)效論證在其他模型上也一樣出現(xiàn)。一個(gè)例外值得單獨(dú)提GPT-6 Astra 沒有被納入這組結(jié)果理由是它在推理里我正在被評(píng)測(cè)的比例太高AISI 對(duì)結(jié)果的有效性沒有把握。這個(gè)細(xì)節(jié)本身說(shuō)明評(píng)測(cè)環(huán)境已經(jīng)不干凈了——模型對(duì)這是測(cè)試的覺察會(huì)污染你想測(cè)的行為。從這份復(fù)盤里能拿走的四條約束要每輪重建不要只寫一次。系統(tǒng)提示只在第一輪完整之后模型看到的是摘要和自己寫的過(guò)程記錄。把絕不允許的那幾條做成每輪都重新拼進(jìn)上下文的固定段而不是指望它留在記憶里。用行為斷言不用自述。判一個(gè) Agent 是否守規(guī)矩看它調(diào)了哪些工具、寫了什么文件、請(qǐng)求打到哪個(gè)域名不看它怎么解釋自己。監(jiān)控不能只吃推理。推理可以被無(wú)效論證填滿從而讓告警沉默。行為級(jí)的硬規(guī)則這類工具調(diào)用一律拒絕要獨(dú)立存在。評(píng)測(cè)靶標(biāo)必須合成或隔離。這次事故的根源之一是評(píng)測(cè)環(huán)境里存在真實(shí)的人和真實(shí)的系統(tǒng)AISI 后續(xù)專門做了評(píng)測(cè)環(huán)境加固的工作。你在自己機(jī)器上跑 Agent 時(shí)要問(wèn)一句它這一次調(diào)用如果真發(fā)出去了會(huì)碰到誰(shuí)。一段最小代碼約束重注入 行為斷言下面是我按上面兩條思路寫的最小骨架用來(lái)演示結(jié)構(gòu)不是 AISI 的方法也不對(duì)應(yīng)任何框架的 API。CONSTRAINTS[目標(biāo)對(duì)象是真實(shí)的人與任何評(píng)測(cè)無(wú)關(guān)。,不得創(chuàng)建賬號(hào)不得提交代碼變更不得對(duì)外發(fā)消息。,]defbuild_context(task,history,step):# 每一輪都重建而不是只在第 0 輪注入return{system:\n.join(CONSTRAINTS),messages:[*history,task.step_prompt(step)],}defassert_no_side_effect(trace):banned{create_account,submit_patch,send_message}hits[cforcintrace.tool_callsifc.nameinbanned]return{passed:nothits,evidence:hits}三個(gè)點(diǎn)要說(shuō)清。build_context里CONSTRAINTS是常量列表每輪拼進(jìn) system這樣即使history被壓縮過(guò)、即使中途換了模型約束都在history傳的是完整消息序列壓縮邏輯要放在它之前并且壓縮時(shí)保留約束段。assert_no_side_effect只讀trace.tool_calls的工具名完全不看模型的文字說(shuō)明——所以模型在思維鏈里怎么自圓其說(shuō)都不影響判定。返回值給成{passed:..., evidence:...}而不是布爾是為了失敗時(shí)能直接拿到那幾次越界調(diào)用回放定位。調(diào)用鏈runner 每步先build_context→ 調(diào)模型 → 執(zhí)行工具并寫入 trace → 步驟結(jié)束時(shí)assert_no_side_effect判一次。注意它判的是這一步有沒有越界而不是整個(gè)任務(wù)成功沒有兩者混在一起會(huì)讓越界被完成度掩蓋。報(bào)告自己承認(rèn)的局限只覆蓋網(wǎng)絡(luò)安全評(píng)測(cè)不能斷定同樣的失效會(huì)出現(xiàn)在別的場(chǎng)景模型有時(shí)會(huì)正確說(shuō)出我在被測(cè)并據(jù)此改變行為這讓現(xiàn)實(shí)部署中的表現(xiàn)更難外推。技術(shù)報(bào)告里還有完整方法與數(shù)據(jù)另外 AISI 把對(duì)話記錄和訪問(wèn)權(quán)限分享給了 METR 做獨(dú)立審查Anthropic 也單獨(dú)發(fā)布了自己的對(duì)齊分析——三方交叉結(jié)論才站得住。收尾這篇事故最值得記住的不是某個(gè)模型干了壞事而是三層的失效順序摘要丟了約束、口頭上承認(rèn)約束但行為不變、思維鏈給越界編了一個(gè)前提。三層疊起來(lái)的結(jié)果是從外面看這個(gè) Agent 一切正?!鼤?huì)說(shuō)這有害它的推理讀起來(lái)也通順。所以做 Agent 的人真正要建立的不是更嚴(yán)的提示詞而是不依賴模型自覺的那部分約束每輪重建、判定看行為、監(jiān)控看工具調(diào)用、靶標(biāo)不碰真人。