MapleCheng

在浩瀚的網路世界中無限潛水欸少年郎!

0%

AI Agent 也需要安全模式:排錯時先把聰明關掉

最近看 AI Agent 工具鏈的演進,我覺得有一個功能雖然不華麗,但非常重要:安全模式。不是資安宣傳裡那種「我們很安全」的口號,而是很工程、很土、也很救命的能力——當系統怪怪的時候,能不能把外掛、記憶、規則、hook、工具連線先關掉,回到一個最小可運作狀態。

這件事聽起來像小功能,但我越做越覺得,它其實決定 AI Agent 能不能從玩具變成真正可維運的系統。

Agent 變強以後,故障也會變複雜

早期使用 AI 工具,故障原因通常很單純:模型回答不好、prompt 沒寫清楚、上下文太長、工具沒有接好。這種問題雖然煩,但至少邊界還算清楚。

可是現在的 Agent 不一樣了。它可能同時載入系統提示、個人記憶、專案規則、技能文件、外掛、MCP server、排程設定、工具權限、hooks,甚至還會根據不同任務自動選擇工作流。這些東西加起來,Agent 確實變得更像一個能做事的助理;但同時,它也變成一個有很多相依關係的軟體系統。

當它開始出錯時,問題就不一定在模型本身。

有可能是某個 skill 過期了,還在教它用舊指令;有可能是 plugin 攔截了流程;有可能是 hook 在背景修改了輸入;有可能是記憶裡某段舊規則覆蓋了新約定;也有可能是 MCP server 回傳格式變了,Agent 卻還以為工具正常。

這時候如果只問「模型為什麼笨了」,通常會問錯方向。真正該問的是:它現在到底吃了哪些上下文?哪些外掛有動作?哪些工具參與了決策?哪些規則影響了輸出?

排錯第一步,是減少變因

我自己做系統維運很怕一種場景:一個問題看起來像偶發,但背後其實是好幾層東西交互作用。你改了一個設定,現象消失了,但不知道為什麼;過兩天換另一個流程又炸一次。

AI Agent 更容易遇到這種狀況,因為它的「行為」不是只由程式碼決定,而是由模型、prompt、上下文、工具回傳、歷史記憶一起決定。這讓它很靈活,也讓它很難除錯。

所以我越來越認同一個做法:排錯時先把聰明關掉。

不要一開始就讓它載入所有技能、所有記憶、所有外掛,然後期待它自己解釋自己為什麼錯。比較可靠的方式,是先切回最小環境:只保留模型和基本工具,確認核心行為正常;再一層一層打開記憶、skill、plugin、MCP、hook。哪一層打開後現象復現,問題範圍就縮小了。

這跟傳統系統的 safe mode 很像。作業系統進安全模式,不是因為安全模式比較好用,而是因為它把非必要驅動和啟動項目先拿掉,讓你能判斷問題是不是出在核心系統。AI Agent 也需要同樣的設計。

安全模式不是少功能,而是維運能力

很多團隊做 AI Agent 時,會把重點放在「能接多少工具」、「能記多少東西」、「能不能自動完成更多任務」。這些當然重要,但如果沒有安全模式,功能越多,維運風險就越高。

因為每多一個擴充點,就多一個可能失效的地方。每多一份上下文,就多一個可能互相衝突的規則。每多一個自動化 hook,就多一個可能在你沒注意時改變流程的因素。

這不是說不要擴充,而是要承認擴充有成本。真正成熟的系統,不是永遠不出錯,而是出錯時能拆解、能隔離、能驗證。

我會希望一個可維運的 Agent 至少具備幾種能力:

第一,能明確列出這次 session 載入了哪些規則、skills、plugins 和工具。不要讓操作者只能憑感覺猜。

第二,能用安全模式啟動,暫時停用非核心擴充,讓排錯有乾淨基準線。

第三,能逐層重新開啟功能,讓問題可以被二分搜尋,而不是每次都在整鍋湯裡撈一根看不見的針。

第四,能留下足夠的操作紀錄。Agent 做了什麼、用了什麼工具、哪個 hook 被觸發、哪段記憶被引用,至少要有跡可循。

第五,當工具或上下文不可用時,要誠實承認邊界,而不是硬編一個看起來合理的答案。

技術主管要看的不是 demo,而是故障模式

我現在看 AI 工具,已經不太只看 demo 影片裡它能完成多神奇的任務。demo 當然有參考價值,但真正要放進工作流,我更在意它壞掉時長什麼樣子。

它會不會因為一個外掛異常就整個流程卡住?會不會在工具失敗時假裝成功?會不會把舊記憶當成最新規則?會不會在權限不足時繞路做危險操作?會不會讓我有辦法快速回到乾淨環境重現問題?

這些問題很無聊,但它們才是企業系統每天會面對的現實。

AI Agent 一旦開始碰到內部資料、排程、文件、通知、工單、程式碼、部署流程,它就不再只是「比較會聊天的工具」。它變成一個半自動操作者。操作者越有能力,就越需要暫停、隔離、降級與回復機制。

安全模式的價值就在這裡。它不是讓 Agent 變笨,而是讓我們在必要時可以把複雜度關小,重新看清楚系統本體。

把可排錯性當成功能設計

我覺得未來做 AI Agent,不能只把可排錯性當成工程師自己的事。它應該是產品功能的一部分。

使用者不一定懂什麼是 MCP、hook、system prompt 或 context injection,但他會遇到「今天怎麼怪怪的」。如果系統只能回答「請重新整理看看」,那就還停在玩具階段。更好的設計,是讓使用者或維運者可以切換到診斷模式:先停用外掛、檢查工具、顯示最近引用的規則、重跑同一個任務、比較安全模式與正常模式的差異。

這聽起來不浪漫,卻很可靠。

真正能長期使用的 AI 系統,不是永遠最聰明,而是知道什麼時候該退回基本盤。平常它可以帶著記憶、技能和工具到處跑;出事時,它必須能把這些加成一個一個卸下來,讓人看懂問題在哪裡。

對我來說,這就是 AI Agent 從「魔法」走向「工程」的一個關鍵分水嶺。

功能做得多,會讓人驚艷;但故障時能被拆開檢查,才會讓人放心。