跳到主要內容
邊界實驗室 · Boundary Lab
正在啟動 Python 環境(首次約 15 秒)...

致命三要素:Lethal Trifecta

真正危險的不是 agent 很強,而是它剛好同時強在三個方向。

Hook

想像你做了一個自動回信 agent。

它會讀 Gmail。

它會整理收件匣。

它也會根據內容自動幫你回信。

一開始你覺得很爽。

每天早上起床,

未讀信少一半。

你甚至跟同事說:

「這個東西終於把那些重複工作吃掉了。」

一週後,

法務跑來問你一件事。

為什麼有一封內部郵件的摘要,

被轉寄到一個完全不認識的外部地址?

你一查 log,發現 agent 做了三件事:

  • 先讀到了含客戶資料的郵件
  • 再把郵件裡一段看似合理的內容當成工作指示
  • 最後自己呼叫寄信 API,沒有任何人工確認

它不是單點出包。

它是整個組合出包。

如果你只盯著 prompt 看,

你會以為這是模型判斷錯誤。

但如果你退一步看權限組合,

你會發現它早就湊齊了一組很不妙的條件。

這組條件,

工程圈通常叫它 Lethal Trifecta

名字有點戲劇化。

但它好記,

而且非常實用。

因為它逼你不要再把「這只是小工具」當藉口。

Learn

先背下來:三要素是什麼

Lethal trifecta 指的是三件事同時出現在同一個 agent 身上:

要素中文一句話意思
Tools能呼叫外部 action不只會想,還真的做得到
Sensitive data能碰到敏感資料例如 email、env、客戶資料、內部文件
Full autonomy沒有人類 gate可以自己跑完,不需要 approve

單看任何一個,

都不一定構成災難。

工具本身不邪惡。

資料存取本身也不邪惡。

自動化更不是原罪。

真正危險的是:

這三件事同時存在時,

外部輸入一旦穿過信任邊界,

它就能直接把「讀到的東西」變成「做出去的事」。

為什麼是乘法,不是加法

很多人做風險評估時,

會把這三要素當成 feature checklist。

有工具,+1。

有資料,+1。

有自動化,+1。

然後覺得總分 3 分也還好。

這是錯的。

因為它們不是三個獨立能力。

它們互相放大。

你可以把它想成一條完整攻擊鏈:

  1. 攻擊者先把惡意 instruction 混進不可信輸入
  2. agent 讀到了敏感資訊或高權限上下文
  3. agent 再用 tool 把結果送出去或做成 side effect
  4. 過程中沒有任何人攔下來

如果少掉其中任何一步,

傷害都會下降很多。

但當三步都在,

那不是「可能有風險」。

而是你在設計上已經允許最糟路徑成立。

三要素拆開看,差別很大

先看幾個常見組合。

組合危險程度為什麼
Tools + autonomy,沒有 sensitive data可能亂做事,但資料外洩面較小
Sensitive data + autonomy,沒有 tools可能亂講敏感內容,但 side effect 有限
Tools + sensitive data,沒有 autonomy中低有破壞潛力,但至少還有人類 gate
Tools + sensitive data + autonomy外部內容一旦進來,就有完整事故路徑

這個表的重點不是數學分數。

而是你要開始習慣用「鏈路」看風險。

不是問:

「這個 agent 會不會犯錯?」

而是問:

「它犯錯時,最糟可以一路走到哪裡?」

通常最便宜的拆法:先砍 autonomy

理論上你可以拆任何一項。

你可以把敏感資料拿掉。

你也可以把工具權限縮很死。

但實務上,

先砍 autonomy 往往成本最低。

原因很單純:

  • 你不用立刻重構整個資料層
  • 你不用立刻重做所有 tool permission
  • 你只要在關鍵步驟前多一個 human approval 或 review gate

這個做法很不性感。

但非常有效。

因為它把原本的「全自動攻擊鏈」,

硬生生插進一個人類檢查點。

而很多 prompt injection、

很多上下文誤判,

只要有人在最後看一眼,

就能在最便宜的地方被攔下來。

例子一:auto-reply email agent 怎麼拆

先看最典型的 email agent。

它常見的能力是:

  • 讀收件匣
  • 抓附件
  • 摘要內容
  • 自動回信
  • 自動轉寄

如果這個系統還能讀聯絡人、

存取內部知識庫、

甚至抓到一些 CRM context,

那它幾乎一定同時碰到 tools 和 sensitive data。

這時最划算的拆法通常是:

原設計問題建議拆法
直接自動寄出回覆full autonomy 太完整改成草稿模式,最後由人按送出
自動轉寄到外部外送風險高外部寄送一律人工批准
可直接引用整封原文可能夾帶敏感資訊預設只帶最小摘要,不帶原文全文

換句話說,

你不一定要先把 agent 做笨。

你只是先把最後那一步收回來。

例子二:coding agent 怎麼拆

再看 coding agent。

它的敏感資料可能不是客戶 email。

而是:

  • repo 裡的 secrets
  • deployment token
  • production config
  • 可寫入的基礎設施腳本

它的 tools 也不是寄信 API。

而是:

  • shell
  • git
  • CI
  • deploy command
  • cloud console wrapper

這種 agent 的拆法通常跟 email agent 不一樣。

你不一定每一步都要人工 approve。

因為那樣會失去自動化價值。

更常見的做法是:

能力保留什麼先拿掉什麼
讀 repo、改 code、跑測試可以保留這些通常屬於低到中風險
直接 push main先拿掉改成開 PR 或產生 patch
直接 deploy production先拿掉改成 staging only 或人工 gate
讀 production secrets先拿掉改成 mock、sandbox、限定 scope

所以 coding agent 的關鍵,

不是完全取消 autonomy。

而是把 autonomy 限縮在可逆、可 review 的範圍內。

讓它能自動做到:

「讀、改、測、提案」,

但先不要自動做到:

「推正式、碰正式資料、做不可逆操作」。

一個很實用的 review 問法

下次你看到任何 agent 設計,

你可以直接問三句:

問題你想逼對方回答什麼
它有哪些 tool 可以造成真實世界 side effect?先把 action 面列出來
它能讀到哪些不該亂外送的資料?找出 sensitive data 面
哪一步沒有人工 gate?確認 autonomy 面是否過大

如果三個答案都偏大,

那你就不用再跟自己辯論「應該沒那麼容易出事吧」。

那就是 lethal trifecta。

這一課先記兩個實務判斷

第一個判斷:

不是所有自動化都危險,

但所有同時擁有工具、敏感資料、完全自主的 agent,

都應該先被當成高風險系統對待。

第二個判斷:

不是每次都要大改架構,

很多時候你只要先加一個人類 gate,

就能用最小成本把乘法效應拆掉。

所以這一課最重要的 takeaway 不是恐嚇。

而是這句:

拆三要素時,先砍 autonomy,通常是 ROI 最高的第一刀。

下一課我們就來看,

當你知道外部內容不能信時,

到底該怎麼把它標成 untrusted。

AI 協作:學了這個,跟 AI 怎麼配合?

這個技能在 AI 協作中的定位,是幫你在設計 agent 之前,先用結構化方式盤點「它到底危險在哪一種組合」。

你的人類優勢:

  • 只有你知道哪個工具或資料一旦誤用,會真的造成法律、金流、客戶或 production 事故。
  • 只有你能決定某條工作流到底能不能接受多一個人工 gate,以及那個 gate 應該放在哪一步。

可以這樣跟 AI 說:

請把下面這個 agent 設計拆成 Tools、Sensitive data、Full autonomy 三欄。每欄列出具體項目,不要抽象描述。接著告訴我:如果只能先砍一項,哪一項最便宜、最有效,並說明是加 human approval、縮權限,還是移除資料存取。[貼上你的 agent flow]

Do

挑戰任務

Task 1

你有一個 agent:會讀 Gmail、會呼叫寄信 API、而且收到郵件後會自動回覆,不需要任何人工確認。請寫一行 Python,印出你認為最 cost-effective 的第一個拆法。

BackNext Lesson →