抓住你的 AI 代理
在它開始幻覺之前
與 AI 程式設計代理的長會話很少會一下子崩掉。它先是悄悄跳過一條指令,再過一兩輪,就編造出從未存在的檔案、API 或決定。AgentsRoom 的 canary 會及早捕捉到這個上下文漂移的時刻,讓你在幻覺抵達程式碼之前就行動。
它依靠的是你的代理本就會產生的訊號,所以無需配置,也無需記住任何事。Claude Code、Codex、Antigravity CLI,以及 AgentsRoom 操縱的每一家廠商都被覆蓋。

當 canary 沉默下來,AgentsRoom 會在代理終端上方彈出這條警告:在乾淨的上下文裡重啟,或者壓縮會話。
context rot 是長會話裡那個沉默的殺手。每一輪,模型都會重讀整段對話,從零重建它的理解。隨著上下文視窗被填滿,最先鬆動的就是對指令的遵守。模型聽上去依舊自信,卻已經開始丟掉它認為最不重要的約束來勉強跟上。
這就是 canary 背後的關鍵洞見。退化不是從幻覺開始的,而是從模型悄悄忽略一條小指令開始的。埋下一條唯一職責就是在消失時被你注意到的指令,你就得到了一根會在真正破壞出現之前觸發的絆線。
AgentsRoom 早已把這條指令交給了每一個代理。每個代理在每輪結束時都會寫一行狀態,就是你在側邊欄和手機上看到的那段簡短摘要。這次每輪的寫入就是 canary。只要它還在更新,代理就還在讀、還在遵守它的指令。它消失的頭幾輪,就是你的提前預警。
為什麼 canary 勝過盯著輸出看
面對單個代理,你可以讀完每條回覆,憑感覺察覺它何時漂移。面對一支並行工作的代理隊伍,沒人能實時重讀每條回覆。canary 給你一個你絕不會錯過的被動訊號。
context rot 和 lost-in-the-middle 效應都有充分的文獻記載:上下文越長,模型就越難可靠地遵守埋在其中的某一條指令。canary 把這種脆弱變成一聲看得見的警報。
canary 走在幻覺前面。狀態會在代理開始編造之前一兩輪就停止更新,而那正是你想要出手的視窗。
沒有要跑的測試,沒有要敲的命令。當你在另一個代理或另一個專案上忙活時,檢測會自己進行。
canary 如何工作
一個內建的提前預警閉環,架在每個代理本就會報告的狀態之上。
每個代理都自動獲得 canary
當你透過 AgentsRoom 啟動一個代理時,會話指令會被注入它的提示詞裡:在每輪結束時往它的會話檔案寫一行狀態。你什麼都不用加。canary 就是那條驅動側邊欄和行動版推送的同一份狀態。
AgentsRoom 在每輪開始時為狀態拍快照
一個代理開始思考的那一刻,AgentsRoom 就記錄下當前狀態。這就是它在本輪結束後用來對比的參照。
等本輪平息後它會再查一次
本輪結束後留出一小段寬限延遲,AgentsRoom 再重讀代理的會話檔案。這段時間足夠代理寫入、也足夠狀態輪詢器把它取到,所以一次寫得慢的更新絕不會被誤當成 canary 已死。
一次漏更會推高連擊計數
如果狀態沒有變化,漏掉的輪次計數器就往上走。如果代理寫了一條新狀態,計數器歸零,任何警告都會清除。一輪安靜還不足以報警,因為一個短促而正當的輪次可能讓狀態保持不變。
連續兩輪安靜才拉響警告
當代理連續兩輪跳過它的狀態,那就是遺漏的清晰訊號,而不是噪聲。一條警告橫幅會出現在那個代理的終端上方:canary 已死,代理很可能正在漂移。
乾淨重啟,或者壓縮,然後繼續
橫幅提供一鍵重啟,它會殺掉代理並在全新的上下文上重新拉起,外加一條壓縮會話的提醒。當代理重新開始報告狀態時,警告會自己消失。
礦井裡的 canary(金絲雀),為你的 AI 會話而設
礦工把 canary 帶下井,是因為它對毒氣的反應遠早於他們。這裡是同一個思路。
提示詞裡的 canary,是一條代理本該每輪都遵守的微不足道的指令。只要它還在遵守,你就知道模型還在從頭到尾讀你的指令。第一條忘掉它的回覆,就是你的絆線。
AgentsRoom 不會在你的代理上硬塞一個單獨的小花招。它複用每個代理本就為側邊欄和手機通知寫下的狀態,所以 canary 不花任何成本,也不可能忘記去裝它。
重點從來不是狀態的文字,而是時機。一個帶著精煉簡報的乾淨上下文視窗,每次都勝過臃腫的那個。當 canary 死去時,你並沒有丟掉進度,你是在甩掉一直拖累模型的累贅。
先做狀態跟蹤,再做漂移檢測
大多數駕駛艙只告訴你一個代理在幹活還是幹完了。canary 告訴你它開始走樣了。
沒有 canary
- : 只有當你讀到一個幻覺出來的檔案路徑或一個錯誤的 API 時,才注意到代理出了問題。
- : 到那時,最近幾條回覆早已可疑,你在除錯代理,而不是你的程式碼。
- : 同時跑好幾個代理時,那個正在漂移的會大大方方地藏在眼皮底下。
- : 你重啟得太晚,糟糕的輸出已經落地。
有了 AgentsRoom 的 canary
- : 代理一停止報告狀態,終端上方就立刻出現一條警告。
- : 你在幻覺開始之前一兩輪就抓住漂移。
- : 你只重置那個走樣的代理,而不是整個專案。
- : 你在乾淨、簡短的上下文上重啟,代理變得更犀利、更快。
用提前預警取代事後覆盤。這就是 canary 的全部意義。
為什麼一個全新的上下文能造就更好的代理
你往一個代理裡堆的資訊越多,它就越容易漂移、幻覺和變慢。一個大半都是過期探索、死衚衕和已解決問題的上下文視窗,每一輪都在跟模型作對。
當 canary 死去時,解法很少是在同一條線上更使勁地推。停止信任最近那兩三條回覆,然後壓縮會話或開一個新會話,只重新注入要緊的東西:你正在編輯的檔案、目標,以及已經做出的決定。
壓縮會總結會話,讓代理保留要點而不揹負冗餘。重啟則給它一張白紙。兩者都把你帶回一份精煉的簡報,那正是程式設計代理表現最好的地方。AgentsRoom 的 canary 會告訴你哪個時刻才是對的。
這在設計上就與廠商無關。Claude Code、Codex、Antigravity CLI 以及其他代理都受同樣的上下文限制,也都透過 AgentsRoom 報告狀態,所以同一個 canary 守護著它們每一個。漂移檢測活在 AgentsRoom 裡,而不在任何單一的 CLI 裡。
讀完整的 canary 攻略
我們寫了一篇關於 canary 技巧的深度文章:代理為什麼會跑偏,如何親手在你的 CLAUDE.md 或 AGENTS.md 裡埋下一個 canary,以及它死去的那一刻該做什麼。AgentsRoom 把盯梢這件事自動化,覆蓋你的整支隊伍。
閱讀 canary 文章FAQ
AgentsRoom 裡的 canary 是什麼?
它是一個針對上下文漂移的提前預警訊號。每個代理在每輪結束時都寫一行狀態。當一個代理連續兩輪停止更新該狀態時,AgentsRoom 就把 canary 視為已死,並提醒你這個代理很可能正在丟失上下文,通常是在它開始幻覺之前。
我需要配置什麼嗎?
不需要。canary 複用的是每個 AgentsRoom 代理本就為側邊欄和行動版通知寫下的、每輪的狀態。啟動一個代理,檢測就開著。沒有什麼要配置,也沒有什麼要記住。
什麼是 context rot?
隨著對話變長,模型每輪都重讀一切,對指令的遵守開始退化。它先是悄悄丟掉一些小約束,然後開始幻覺:編造的檔案、錯誤的 API、你已經否決的決定。與之相關的 lost-in-the-middle 效應意味著,埋在長上下文裡的指令被遵守得更不可靠。
為什麼要等兩輪漏更而不是一輪?
單獨一個短輪次完全可能正當地讓狀態保持不變,比如代理只是讀了個檔案、簡短作答。連續兩輪安靜,才是代理確實停止遵守指令的清晰訊號,這樣能壓低誤報。
警告出現時我該做什麼?
兩條路。一鍵重啟代理,換來一個全新、乾淨的上下文;或者輸入 /compact 來總結會話,保留要點而不揹負冗餘。兩者都把代理帶回一份精煉的簡報,那正是它表現最好的地方。
它能配合 Codex 和其他廠商用,而不只是 Claude 嗎?
能。canary 只依賴每個 AgentsRoom 代理都遵循的會話狀態協議,無論底層是哪個 CLI。Claude Code、Codex、Antigravity CLI 等等都被覆蓋。檢測活在 AgentsRoom 裡,而不在任何單一廠商裡。
警告會自己消失嗎?
會。代理一重新寫下新狀態,漏掉的輪次計數器就歸零,橫幅會自己清除。你也可以為該會話手動把它關掉。
我只跑一個代理時它有用嗎?
有用,但它在同時跑好幾個時才真正出彩。面對單個代理,你能讀完每條回覆。面對一支並行的隊伍,沒人能實時重讀每條回覆,所以一聲被動的漂移警報,正是不讓一個悄悄退化的代理溜過去的關鍵。
canary 會拖慢我的代理嗎?
不會。它搭在代理每輪本就會寫的那一行狀態上。沒有額外的提示詞,沒有額外的模型呼叫,也不增加任何延遲。
為什麼乾淨的上下文能讓代理更好?
一個代理背的過期上下文越多,它就越漂移、越幻覺、越慢。重啟或壓縮會甩掉累贅,把代理帶回一份簡短、聚焦的簡報,那裡正是程式設計代理最可靠、最快的地方。
你可能還喜歡
在上下文漂移讓你付出代價之前抓住它
在一個會在某個代理開始走神時提醒你的駕駛艙裡執行你的 AI 程式設計代理。下載 macOS 版 AgentsRoom。
配套應用:隨時隨地監控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接傳送到您的公開待辦清單。
AgentsRoom 實際執行一瞥。