跳至主要內容
技術

AI Agent 系統架構:正式上線前要補齊哪些元件

AI Agent 系統架構:正式上線前要補齊哪些元件
Updated: 2026-06-05
從 PoC 到 Production:企業 AI Agent 系統工程 第 2 / 12 篇 ,前往系列總覽

本篇是「從 PoC 到 Production:企業 AI Agent 系統工程」系列的第 2 / 12 篇。你可以從系列總覽開始閱讀,也可以直接接著看本文。

這是「從 PoC 到 Production:企業 AI Agent 系統工程」系列第 2 篇(共 12 篇)。上一篇:企業 AI Agent 為什麼卡在 PoC?

上一篇列出 demo 到正式上線之間的六個問題。這次換個角度,把它們放回系統架構裡,看每一層該負責什麼。

先說清楚,下面是一份 reference architecture,也就是設計時可以拿來討論的參考圖,不是我在某家公司上線過的成品。實際使用時當然可以按規模刪減;這張圖的用途,是讓大家知道刪掉某一層之後,連帶少了哪一道保護。

一張圖

企業 AI Agent 系統架構參考藍圖:使用者經 API Gateway / BFF 把身分帶進 Agent Runtime(plan→act→observe),分流到 Tool Registry / MCP、帶權限的 Retrieval、Memory,配上 Model Router,並由橫跨一切的 Observability · Eval · Audit Log · Cost 旁路記錄每一步

下面會依序看每個方塊的用途、拿掉後的影響,以及怎麼接回現有後端。大多數公司不需要為了 agent 另蓋一套孤立的系統。

API Gateway / BFF:把「使用者是誰」帶進整條鏈

不少 PoC 從入口就弄丟了使用者身分:前端直接呼叫 agent service,後面的檢索和工具則一律用高權限服務帳號執行。到了正式環境,這很容易變成越權存取。

這層做的仍然是熟悉的認證、授權、rate limiting 和輸入驗證。額外要顧好的是身分資訊:這個請求來自誰、擁有哪些權限,都要一路傳到檢索與工具層,不能中途換成一個什麼都能做的共用帳號。

  • 少了它會怎樣:agent 變成一個權限放大器,任何人問都能拿到任何資料。
  • 怎麼整合:它就是你現有的 API Gateway / BFF,agent 只是它後面的一個新 upstream。不要為了 agent 另外開一個沒人管的後門。

這不是架構潔癖。曾經有團隊讓 agent 用高權限服務帳號處理客服工單,攻擊者只要在工單內容裡藏一段指令,就能誘使 agent 把內部憑證貼到公開討論串。Simon Willison 把「能接觸私有資料、會讀不可信輸入、又能把內容送出去」這個組合稱為 lethal trifecta。保留原始使用者身分,並在每一層重新檢查權限,至少能拆掉其中一條危險路徑。

上下兩條請求路徑從同一位使用者出發:上方的身分與權限封套從 Gateway 開始一路黏在請求上,依序通過 runtime、私有資料櫃、工具櫃與對外出口,每一站只開啟符合個人鑰匙的小門並留下稽核印記;下方則在入口把個人封套撕掉、換成萬用服務帳號主鑰,讓藏有鉤子的惡意輸入同時碰到私有資料保險箱與對外管道,秘密被自動拉出公開出口,而底下斷裂的鏈條標出身分遺失正是權限放大的起點

Agent Runtime:那顆「決定下一步」的大腦

這是整張圖的核心,也是和傳統後端最不一樣的地方。傳統 service 是「請求 → 固定流程 → 回應」;agent runtime 是一個 plan → act → observe 的迴圈:看現在的狀態 → 決定下一步(檢索?呼叫工具?回答?)→ 執行 → 看結果 → 再決定。

它本身要負責的,是這個迴圈的紀律:

  • 迴圈最多跑幾輪(不然會無限想下去,燒錢又卡住)
  • 每一步的決策要被記錄(不然就是鴻溝三的黑盒)
  • 錯誤要能收斂,而不是把例外往上丟就當機

把這三條紀律接起來,迴圈長這樣。真正要看的不是中間那圈 happy path,是兩條岔出去的線:輪數用完要停得下來,出錯要收得回來。

flowchart TD
    A["收到請求<br/>帶著使用者身分"] --> B["Plan<br/>看現在的狀態<br/>決定下一步"]
    B --> C{"還有輪數<br/>可以跑嗎?"}
    C -->|"用完了"| D["停下來收尾<br/>不然會無限想下去<br/>燒錢又卡住"]
    C -->|"還有"| E["Act<br/>檢索?呼叫工具?回答?"]
    E --> F["Observe<br/>看結果<br/>這一步的決策寫進紀錄"]
    F --> G{"這一步的結果?"}
    G -->|"目標達成"| H["回答使用者"]
    G -->|"還沒完成"| B
    G -->|"出錯"| I["收斂成失敗結果或轉人工<br/>不是把例外往上丟就當機"]

這層可以用 LangGraph、AutoGen、Semantic Kernel,也可以自己寫 while 迴圈。小系統用後者有時反而比較好查。選哪個框架其次,真正要確認的是:迴圈有狀態、可能失敗,而且每一步都留得下紀錄。

我自己的判斷方式是:如果流程需要跨請求記住進度,掛掉後還得從中間接著跑,那它已經比較像 durable workflow 或狀態機。這時該拿出 job queue、狀態持久化與 retry 策略,不必再疊更多 agent 抽象。Agent 框架可以省掉 plan-act-observe 的樣板,但流程的可靠性仍然得自己負責。

中央 agent runtime 由指南針決策台、戴手套的執行台與放大鏡觀察台三站組成循環,每跑一站都把決策卡依序送進下方 trace 帳冊;上方的剩餘步數插銷、沙漏,以及 token 線軸與硬幣三組有限資源會逐步消耗,目標達成可走向答案出口,錯誤可收斂到失敗盒或人工鈴鐺,耗盡預算仍想繼續的紅色車廂則被柵欄阻擋;右側另把中間狀態存進 checkpoint 櫃,遭遇閃電故障後由新車從最後存檔點續跑

Tool Registry / MCP:agent 的手,要戴手套

Agent 真正有用,是因為它能「動手」——查資料庫、開工單、改設定。但這也是它最危險的地方。所以工具不該是散落在 code 裡的一堆 function,而該是一個有登記、有邊界、有審批的 registry

我自己寫過 MCP server。工具改用標準介面接給模型後,最有感的其實不是少寫了多少串接,而是 agent 能做的事終於有一份清單可以盤點、審核和版本控制。對企業來說,這比「接得快」更重要。

選 MCP 並不等於把系統綁在 Anthropic。它雖然由 Anthropic 在 2024 年底提出,後來 OpenAI、Google 與多個開發工具也陸續採用,現在已由中立基金會治理。對架構比較實際的好處是:工具介面不用跟著模型供應商一起換,日後要調整底層模型會輕鬆很多。

每個工具至少要標:

  • action boundary:它是唯讀(查詢)還是會改變世界(寫入、刪除、送出)?

  • approval flow:會改變世界的,要不要人類按一下確認(human-in-the-loop)?

  • idempotency:同一個呼叫不小心跑兩次,會不會送出兩張訂單?

  • 少了它會怎樣:上一篇鴻溝六——agent 用錯工具,真的會動到錢、改到資料。

  • 怎麼整合:tool 後面接的就是你現有的內部 API。MCP / registry 是包在外面那層「戴手套」的設計,不是要你重寫後端。

還有一個 2026 才被認真對待的維度:工具的「描述」本身就是攻擊面。MCP 把工具描述塞進模型 context,等於把一段文字直接餵給大腦——如果這段描述被動過手腳(tool poisoning),它可以在模型不知情下夾帶指令,而近年針對真實 MCP server 的測試顯示這類攻擊的成功率高得驚人。所以 registry 的審核不只是「盤點 agent 能做哪些事」,還包括「這些工具的描述是誰寫的、有沒有被改過」——把工具當成依賴(dependency)來管,連同描述一起進版控與審查,而不是裝上就信。

每個工具都和描述卷軸、版本封蠟及來源鏈綁成不可拆分的套件,進 registry 前依序通過四道圖示檢查:眼睛審查描述內容、放大鏡與槌子區分唯讀或改變世界、手掌決定是否需要人工核准、盾牌吸收重複呼叫以保證只產生一次效果;左下看似正常的扳手套件其描述卷軸藏有紅色枝狀鉤子且封蠟破裂,因此在進櫃前被隔離,右側 agent 最後只取得已核可的最小工具盤並透過既有 API 管線工作,未登記工具則鎖在圍欄外

(第 6 篇會專門拆 tool use 與 MCP,第 11 篇談把它升級成完整治理框架。)

Retrieval Layer:RAG,而且是帶權限的 RAG

這層讓 agent「知道公司的事」。文件、知識庫、資料庫,先變成向量存起來,問問題的時候檢索出最相關的幾段,餵給模型當依據。

但企業版的 RAG 跟 demo 版差一個關鍵字:權限。檢索的時候,必須用「上面那層傳下來的使用者身分」去過濾——只檢索這個人本來就有資格看的東西。這是一道過濾器,不是事後再補的 nice-to-have。

  • 少了它會怎樣:要嘛 agent 不知道公司任何事(沒用),要嘛它什麼都知道、包括不該讓這個人知道的(資安事故)。
  • 怎麼整合:向量庫可以從你既有的 PostgreSQL + pgvector 開始,不一定要先上專用向量庫。

(第 3、4、5 篇是這層的三連發:RAG 架構、向量庫與 embedding、權限感知檢索。)

Memory Store:讓 agent 記得,但別記錯人的事

Retrieval 是「公司的知識」,memory 是「這個對話 / 這個任務的脈絡」。兩者不一樣。Memory 又分短期(這輪對話)、長期(這個使用者的偏好)、episodic(這個任務做到哪、試過什麼)。

關鍵原則跟檢索一樣:記憶也有權限。A 使用者的長期記憶不能洩進 B 使用者的對話。聽起來理所當然,但在共用向量庫的設計裡很容易出包。

兩位使用者各自帶著不同肖像封印、幾何範圍記號與鑰匙,把請求送進同一個 scope 分流器;相同的身分範圍同時往上套在企業知識檢索櫃、往下套在 memory 保險箱,知識櫃可以讓兩人各自打開有權限的文件,也能共享雙方本來都可看的公司資料,而短期線軸、長期偏好吊飾與 episodic 任務照片則分別鎖在兩排互不相通的個人抽屜;底下對照若先用相似度磁鐵從混合碗撈資料,會吸到另一人的記憶珠,但先套 scope 篩網就會在搜尋前擋下越界項目

(第 7 篇專講 memory 與狀態管理。)

Model Router:不要每件事都用最貴的模型

把「呼叫哪個模型」抽成一層,而不是 hardcode。為什麼?因為 production 你會想要:

  • 小模型優先:分類、抽取、簡單問答,用便宜快的模型就好
  • 必要才升級:複雜推理才動用大模型
  • fallback:主模型掛了或回垃圾,自動換一條路

這層直接對應鴻溝五(成本與延遲)。在 demo 全用最強模型沒事,乘上 production 流量就是帳單。給個量感你就懂為什麼這層值得蓋:同一個分類或抽取任務,旗艦模型和它的小型版之間,每百萬 token 的價差常常是一個數量級——把不需要推理的雜活全丟給最強模型,等於用頭等艙的票價在寄明信片。Model Router 的工作,就是讓 80% 的便宜雜活走便宜的路,只把真正需要深推理的那 20% 升級上去。

路由本身不難,難的是那兩條不在主線上的路:便宜的路走出不確定的答案要能往上升級,貴的路掛掉要有地方去。

左側混合任務卡進入鐵路轉轍器後,分類、抽取與短答等簡單卡走上方短軌,通過體積小、時計快且硬幣少的模型引擎;多步驟與證據整合卡走下方重軌,交給較慢較貴的大型引擎,輕量路徑後的品質探針若發現不確定輸出,會把該卡沿坡道升級到大型引擎;大型主路若被 circuit breaker 關閉,保留結構化請求封套的轉接台會改送不同的 fallback 引擎,所有成功答案最後匯回同一出口,成本仍分別記在原始路徑上

(第 10 篇談這層背後的延遲 / 可靠性 / 成本三角。)

橫跨一切的旁路:可觀測性、Eval、Audit、Cost

圖底下這條線不是單獨一個服務,而是前面每個元件都要留下的紀錄:

  • Observability / Trace:每個請求的完整足跡——檢索了什麼、呼叫了哪些工具、每步多少 token / 多少秒。

  • Eval:一組黃金題庫,每次改 prompt / 換模型 / 調檢索,自動跑回歸。

  • Audit Log:誰、在什麼時間、透過 agent 存取了什麼資料、做了什麼動作。企業合規的底線。

  • Cost Monitor:每個功能、每個使用者燒多少錢,要看得見。

  • 少了它會怎樣:鴻溝二和三——你不知道它有沒有變好,出事也查不到根因。

(第 9 篇把這條旁路整個建起來。)

上方一個請求依序穿過身分閘門、決策迴圈、檢索櫃、工具櫃、memory 抽屜與模型引擎六站,每站都同步把事件膠囊往下投入貫穿全系統的透明證據管;管線再分成四種互補紀錄:依時間巢狀排列的 trace span、把當前輸出和固定黃金卡比較的 eval、綁住操作者封印與資源及動作的不可變 audit 鏈、以及按來源站點歸屬的 token 線軸與成本硬幣,右側答案出錯且成本暴增時,放大鏡可沿四條證據反查到確切的內部紅點;右下對照若只監看最終答案,中間只剩無法解釋的黑盒

回頭看整張圖

把這些元件放在一起看,AI agent 系統和一般後端沒有想像中那麼不同。Latency、retry、idempotency、狀態管理、queue、cache、權限與可觀測性,一樣都不能少;只是流程裡多了一個輸出不完全確定的模型,所以邊界要畫得更清楚。

也因此,這類系統最後考驗的仍是系統工程能力。Prompt 當然重要,但它只是整張圖裡的一部分。

下一篇從圖右側的 Retrieval Layer 開始,看看一批公司文件要經過哪些步驟,才能變成附得出來源的回答。

文章簡報

AI Agent 正式上線前要補齊哪些元件:第 1 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 2 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 3 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 4 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 5 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 6 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 7 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 8 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 9 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 10 張,共 11 張AI Agent 正式上線前要補齊哪些元件:第 11 張,共 11 張
1 / 11

延伸閱讀

留言討論

esc
輸入關鍵字搜尋文章...
查看收藏 →