市面上的 AI(ChatGPT/Claude)本質上是一個很聰明、但會失憶、沒有紀律、也沒進過你公司廚房的實習生。這篇不從技術架構講起,而是照「一般人怎麼真的用起來」的順序,拆給不寫程式、但要做決策的主管聽:① 先從聊天框升級到會幫你做事的 agent、用起來就算得出 ROI;② 要認真做、要穩定,才需要那套鷹架(SPEC/Harness/Workflow);③ 再讓 agent 接上你的知識(RAG/GraphRAG/CAG)與系統(A2A);④ 最後是企業落地、治理、還有怎麼用一個請來的人。輕度用,你看前面就夠;重度才往下。
重點摘要(TL;DR)
- 先分清楚:聊天框(問一句答一句、每步你驅動)vs agent(給它一個目標、它自己跑多步+用工具+把整件事做完)。一般人先用一個唯讀 agent 幫你做「最煩、最多步」的活、你核准,就能算 ROI(省多少工時)。
- ROI 用你本來就會算的數:省工時/卸掉 % 工作量/省下不用開發。導入順序別搞反——先有人用出效益 → 再收整成知識庫 → 最後才換自己的算力省 token(知識庫是「結果」不是砸下去的「起點」)。
- 只有要「認真做、要穩定、開團隊」才需要那套鷹架:SPEC → Harness → Workflow → Agent → 大腦,由下往上疊;輕度可跳過。(其中 Harness 價值最高最被忽略——讓 AI 不失憶;本地小模型關鍵決策要寫死契約,否則它偷偷把 bcrypt/JWT 改成明文還說做好了。)
- 方向反過來了:過去「資料 → 煉出模型」;現在模型是現成起點,反過來吃你的資料去產出。你的知識才是護城河。
- 讓 agent 接上你的知識:看知識形狀選——問答固定→CAG、一堆文件→RAG、講關係與流程→GraphRAG;接舊系統/ERP 用 A2A/MCP。
- ⭐ 企業落地的分水嶺(全篇重點):把三個門檻壓低——引用(MCP 一行連、零檢索碼)、建立(老手「改」不是從零寫+charge 幾秒改一條)、理解(附出處、可追溯);再配上成本/ROI、上線後維運、治理與資安(給 agent 裝了手就要人閘),以及怎麼用一個請來的人(信任靠結構、不靠賭人品)。
從聊天框到 agent:先用起來(一般人這步就夠)
大多數人第一次碰 AI 是「聊天框」——問一句、答一句,每一步還是你在驅動。真正改變工作的是 agent:你給它一個目標,它自己跑多步、用工具、把整件事做完。這一部先讓你「動起來、算得出帳」,不用先懂後面那一整套鷹架。
問一句答一句;複製、貼到下一步、決定下一步——都你自己來。適合「單輪:幫我想/幫我寫」。
給目標,它自己跑多步+用工具+會動手。適合「多步驟、重複、要跨系統搬資料」的活。
怎麼開始(就三步):下載一個 co-working/agent 工具 → 挑你最煩、最多步、現在都手動的一件活 → 讓它做給你看。它幫你把 5 步做完,就是 agent 特有的「有感」(聊天框給不了)。
怕它「亂搞」?別跳,爬梯子——越爬越放手:
| 階 | agent 能做什麼 | 為什麼敢用 |
|---|---|---|
| 1 唯讀/只提議 | 跑多步「讀+整理+起草」,但不動手,最後你按核准 | 不能亂搞——草稿錯你不送就沒事 |
| 2 帶工具、在沙盒 | 給它真工具,但在副本/非關鍵域 | 做錯很便宜、傷不到正式 |
| 3 會動手,危險步要人閘 | 能動作,但不可逆/高風險的一步要你確認 | 有人核准閘(後面「治理與資安」會講) |
| 4 熟了才自主 | 已驗證的固定流程,放它自己跑 | 有履歷、有 log 才升級 |
只有「要認真做、要穩定、要開一支團隊」的重度使用,才需要第二部那一整套鷹架(SPEC/Harness/Workflow)。非重度,第二部整段可以跳過,不影響你先用起來。
導入要花多少、多久回本?(成本與 ROI)
前面都在講「怎麼做」。老闆真正要三件事:花多少、多久回本、什麼時候該升級——三個都給你能對照的東西,而且都不用懂 AI。
- 領域內先有人「真的用 AI 處理自己的工作」(個人、探索,先不談平台)。
- 跟「這件事本來要花多少時間」比對 → 這時才量得出效益(ROI 從這裡才有意義,不是一開始)。
- 確定能放大 → 把做法收斂、標準化。
- 把這個人的經驗往上收整——關鍵一步:避免經驗跟著人走。
- 這時才建知識庫 → 讓公司服務穩定化、持久化(換誰接都在)。
- 最後換成自己的算力 → 把 token 穩定省下。
步 1 怎麼點火:讓非 IT 人快速上手(這步最難)
六步裡步 1 最難——非 IT 人要先「有感」才會動。訣竅就三個字:降門檻(像問同事一樣打字)、挑真痛(他最煩的一件重複活)、帶做一次(在他自己的活上、當場做給他看)。
① 給聊天框、不給專案——像問同事一樣打字,零安裝零設定(要架給全公司用的聊天框,見後面「落地兩件事」那節)。
② 挑他「最煩的重複活」、不是炫技——重寫同類 email、整理會議記錄成待辦、答同一種客訴。除掉真痛點才有感。
③ 帶著做一次、不辦訓練——20 分鐘在他自己的一件真工作上做給他看,他才會信。
④ 給模板、不給空白框——每個角色先備 3–5 條現成 prompt(「改」比「從零寫」容易起步)。
⑤ 拆「飯碗恐懼」(採用最大的牆)——不只「資料可試、試錯沒關係」,主管要明說「省下的時間歸你、AI 是幫手不是替補、不因此縮編」。
⑥ 找種子人、給他「受保護的工時+公開表揚」——同部門的人信同事勝過信 IT;但沒有工時與認可,種子人「這不是我的 KPI」就會燒完即停(這正是 Citi 案例的真支柱)。
ROI 用他的單位算(一個月約 3000 元,三種他一聽就懂的講法):
| 講法 | 怎麼算(以 3000/月 為例) | 判斷 |
|---|---|---|
| 省工時 | 每天省 1 小時 → 月省 ~20 小時;只要他時薪 > 150 元就回本(多數白領遠高於此) | 明顯賺 |
| 卸掉 % 工作量 | 解決他 20% 的量 → 月薪 5 萬的人=釋放 ~1 萬產能。但這 20% 的時間要真的被挪去做更高價值的事(或減量)才算數,否則只是紙上帳。對員工要講白:省下的時間歸你、去做只有你能做的事 | 挪用才賺 |
| 省下不用開發 | 用 AI+現成工具就解決 → 省掉一整套內部軟體的開發+維護(常幾十萬起),還讓整體迭代更快 | 大賺(最常被低估) |
來源:2.1×/69%(Worklytics via aiassemblylines)、Citi(Lead with AI)、Zapier 97%(官方)、Copilot 9h/月・116%(Forrester TEI)
一、花多少:分級成本表
不是報價,是幫你抓量級、避免被「先做個 PoC」拖成無底洞:
| 階段 | 一次性成本 | 經常性成本(每月) | 先證明什麼 |
|---|---|---|---|
| PoC(1 個部門、1 個痛點) | 把 1 塊知識做成 RAG/圖 + 接一個聊天框(人月級) | 雲端 token(小)或一台夠用的機器 | 單一流程真的被加速、且用戶願意用 |
| 部門級(幾條線上線) | Gateway/前端建置、初期知識萃取+校準(領域老手時間) | token 或本地 GPU 機攤提、Neo4j/向量庫/Gateway 維運、知識策展人力 | 跨流程可複用、維護撐得住 |
| 全公司(聯邦式) | 治理層(registry/權限/稽核)、各單位建圖 | 上面全部 ×N 單位 + 平台團隊 | 治理與資安過關、各單位有人維護 |
二、多久回本、省多少:量這幾個你本來就會算的數
① 單次省下人時(導入前 X 小時 → 後 Y);② 月省人時=(X−Y)×每月被做幾次;③ 需人工修正率(要人回頭改的比例)——真正決定正負的是偵錯+修正的耗時 vs 省下的時間,不是單看比例;>~20% 只是「先別擴」的經驗值,還要看每次改多貴、錯得多隱蔽(沒被抓到的錯最傷);+ 採用率(每週真的在用的人/目標人數——沒人用,再省時都是 0)。
回本點=「(月省人時 × 採用率 − 修正耗時) × loaded 時薪」累計 ≥ 建置+月維運(用可實現的省時、別只算毛值);粗抓:PoC 週級見效、部門級以季計、全公司以年計。
兩句心法:最大的經常性成本是「人」(知識策展+維運)不是 token;先做能量測的 PoC 再擴,跳過 PoC 直接全公司是最貴的錯。
三、什麼時候該升級(不用你懂技術,看症狀就好)
你不用懂 CAG/RAG/GraphRAG/A2A 是什麼。你只要認得下面這些症狀——大多數主管本來就分得出來——看到了,把中間那句話丟給工程師,換什麼是他的事。
| 你(主管)實際遇到的 | 你只要跟工程師說這句 | (工程師會做什麼,你可略過) |
|---|---|---|
| 「它常一本正經亂編我們公司的事、答不出內部或最新的」 | 「先把我們自己的資料接上」 | 建知識庫 |
| 「有份大家一直問、又很少改的手冊/規定」 | 「這份能不能讓它整份先記著、答快一點」 | CAG |
| 「答案越來越慢、越來越貴,而且那份資料常在改」 | 「這塊改成用到才查」 | 換 RAG |
| 「問到牽一髮動全身/跨部門的,它答得零落、要人自己拼」 | 「這種要能照關係一路查下去」 | GraphRAG |
| 「同一件事,員工要在好幾個系統之間手動搬資料」 | 「讓這幾個系統自己對接、別靠人搬」 | 評估 A2A |
一張圖看懂:五層堆疊,把實習生變成一支團隊
AI 開發體系是什麼?它是把「一個天才但會失憶、沒有紀律的實習生」,改造成「一支有菜單規格、有廚房水電、有出菜 SOP、有記憶、還會被師傅當場糾正的團隊」的一整套設計。先看這張堆疊圖,五層由下往上疊,愈下面愈是地基、愈上面愈換得起:
同樣一張表,供你快速對照每一層「是什麼、為什麼要它」:
| 層 | 廚房比喻 | 它是什麼 | 為什麼要它 |
|---|---|---|---|
| 1. SPEC | 點菜的菜單規格 | 需求規格 | 沒寫清楚,做出來一定不是要的 |
| 2. Harness | 廚房水電瓦斯、冰箱 | 基礎工具設施 | 讓 AI 不失憶、自動帶規則、接管工具層 |
| 3. Workflow | 出菜 SOP:誰切、誰炒、誰驗菜 | 工作流程 | 讓品質不靠某個資深廚師的直覺 |
| 4. Agent | 廚師本人(主廚/學徒) | 實際動手的 AI(Claude Code/Aider/Pi) | 有人真的下鍋 |
| 5. 大腦/模型 | 廚師的腦袋 | 雲端大腦 vs 本地小腦 | 決定廚師多聰明、貴不貴、資料外不外流 |
先用你熟悉的老架構,接上 AI 時代
如果你做過系統,這一段最快讓你「接上」——因為骨架其實沒變,只是多疊了一層腦,而且有個方向整個反過來了。先看我們都熟的傳統三層:
AI 時代,這條交易線一條都沒消失——前端還是前端、API 還是 API、DB 還是 DB。它只是多長出一條平行的「智能線」:
這條線的中樞是 Agent——它負責發起與 orchestrate(決定要查什麼、問模型什麼、答案怎麼用)。它做事時往兩邊接:一邊查 GraphRAG(新的「知識庫」,像 DB,但放的是判斷與關係)當根據,一邊透過後端 API(Ollama/vLLM)叫 Model(運算核心)幫它想跟生成。你原本的交易線沒被丟掉,只是多了這條「管理解與生成」的智能線。(Agent 到底怎麼透過 API 叫模型,下一段細講。)
講清楚定位:Agent + Model,中間就是一層 API(Ollama)
這裡有個一定要講清楚、不然定位會很模糊的點:Agent 不是「直接」跟模型講話的。AI 的運作其實就三段——Agent → 模型伺服器(Ollama/vLLM)→ Model:
決定要問什麼、答案怎麼用
把模型跑起來、對外開一個接口
真正的權重與運算
跟傳統架構一模一樣的道理:前端不直接碰 DB,要透過後端 API;AI 這邊,Agent 也不直接碰模型,要透過 Ollama/vLLM 這一層 API。三者定位對照如下:
| AI 元件 | 傳統對照 | 它到底是什麼 |
|---|---|---|
| 🤖 Agent | 前端(發起請求的那端) | 決定要問什麼、拿到答案怎麼用 |
| ⚙️ Ollama/vLLM | 後端 API | 把模型跑成一台「模型伺服器」(像網站的 Web Server),對外開接口 |
| 🧠 Model | DB/資源 | 真正的權重與運算,被 API 載入執行 |
Agent 是「身體」、模型是「腦」——兩邊要相襯
再往下看 Agent 到底在做什麼。過去,我們自己就是那顆「腦」:寫 crontab 排好固定時間跑、寫 bash 或程式把每一步寫死、甚至動態產生 Python 再執行——指令都是「人」事先寫好的。AI 時代換模型當腦:
所以Agent 的角色,是「聽」後面那顆模型(透過 API)吐回來的 JSON 指令,然後忠實執行。模型當場寫腳本、Agent 當場照做。模型是出主意的腦,Agent 是動手的身體。
關鍵:腦跟身體要相襯,才能相輔相成。配不好會出現兩種毛病:
指令高強、身體不行
🧠 很聰明的模型 + 🤖 工具太少/harness 太弱 → 模型叫你做的事,Agent 根本做不到。
身強體壯、聽不懂指令
🤖 一堆工具的 Agent + 🧠 太弱的模型 → 工具再多,模型給不出正確指令去指揮。
腦與身能力相配
🧠 模型 ⟷ 🤖 Agent 難度相當 → 指令做得到、工具用得上,相輔相成。
AI 時代最重要的轉變:方向反過來了
這是整個 AI 時代最該搞懂的一件事。過去二十年,資料庫的世界從交易(OLTP)、分析(OLAP)一路走到機器學習(ML)。OLTP/OLAP 本來是給人看報表、做決策;ML 是後來(2010 年代)才疊上來、想「從自己的資料煉出一個模型」的野心——而模型一直是最難、最貴、最後才拿得到的東西。
第 1 層 SPEC:把「要什麼」蒸餾成機器能驗的規則
SPEC 就是需求規格,也是最常被跳過、最致命的一步。一般人給 AI 的需求是「幫我做個登入功能」——這對 AI 等於沒說,它會自己腦補。我們的做法是把模糊需求,一路蒸餾成「機器可以驗證對錯」的規則(我們叫 INV,invariant/不變量):
「做個登入」
brainstorm 定錨
說清楚要什麼
違反就亮紅燈
判斷一條規格好不好,標準很簡單:
| 規格寫法 | 例子 | 能不能驗 |
|---|---|---|
| 好規格 | 「沒登記的手機號,絕對不能換到登入權限」 | ✅ 可以寫測試,違反就亮紅燈 |
| 壞規格 | 「登入要安全」「要順」 | 🚫 「安全」是什麼?驗不了=等於沒說 |
關鍵心法:規格的金礦不在「要做什麼」(happy path),而在「絕對不准發生什麼」(負空間)。安全問題幾乎都藏在沒寫出來的禁止事項裡。
第 2 層 Harness:廚房的水電,讓 AI 不失憶
這是最容易被外行忽略、但價值最高的一層。AI 的致命傷是每次對話都失憶。Harness 就是一組自動化機關(技術上是 hooks +把 hook 接到工具層的橋接腳本),幫 AI 顧三件事:
每次開工自動把「規則、踩過的坑」灌回它腦子
一進廚房就知道家規,不用每次提醒
AI 下的指令先過一層腳本,改寫、擋危險、記帳
這層幾乎是一次性建好、之後所有專案共用。它不讓 AI 變聰明,它讓 AI 不會蠢。要把 Harness 換輕量一點、接本地模型的實戰細節,可以看 本地 Agent 踩坑實錄:Claude Code 接 Ollama 為何要換輕量 Harness。
Harness 裡面到底裝了什麼:hooks 與橋接程式
講白一點,hook(掛鉤)就是「在 AI 工作的某個時刻,自動幫你執行一段小程式」的機制。你不去改 AI 本身,只在它的生命週期上裝感應器和開關。設定寫在一個設定檔(settings.json)裡,AI 平台會在對的時刻自動觸發。AI 一次任務的生命週期,大概是這幾個時刻:
我們在每個時刻掛一段小程式,讓 AI「自動守規矩」:
| 時刻(hook) | 我們掛上去做什麼 | 解決什麼 |
|---|---|---|
| 開對話 | 自動把公司家規+踩過的坑灌進它腦子 | ✅ 不失憶 |
| 用工具前 | 跑測試前先把「上萬行冗長輸出」改寫成只留失敗那幾行 | 省錢、不塞爆記憶 |
| 用工具後 | 偵測到「修了一個 bug」就提醒把教訓寫回 BUG 腦 | 知識不流失 |
| 壓縮記憶前 | 先把目前進度存檔,免得壓縮後忘記做到哪 | 接得回去 |
| 回應結束 | 每輪記一筆帳(花了多少 token)、檢查有沒有漏更新腦 | 花費看得到 |
hook 只是「時刻」,它本身不做事——真正動手的是它在那個時刻去呼叫的一段 shell 腳本。這段夾在「hook 事件」和「AI 真正要跑的 Bash 指令」中間的黏合腳本,就是橋接程式。它把 AI 想下的指令攔下來改寫(例如把 npm test 改寫成「輸出導到暫存檔、只回傳失敗那幾行、保留原本的結束代碼」),再讓工具去跑改寫後的那條指令——等於在 AI 和它的工具(終端機、Bash)之間插了一層可控的關卡。(技術上 Claude Code 的 hook 是用 updatedInput 改寫指令、讓工具只跑一次,不是 hook 自己跑一遍再把結果塞回去。)
最實用的例子就是「跑測試」。AI 想下 npm test,如果直接跑,上萬行輸出會一次灌進它的記憶、又貴又把腦塞爆。橋接腳本在指令真正執行前把它接管掉:
npm test這一層要小心一條紀律:只對「會噴一大堆字」的窄名單指令(跑測試、編譯)動手,一般讀檔、撈資料的指令原封不動放行。不然把 AI 需要的完整內容也截掉,反而害它拿到殘缺資訊。同樣的橋接,也能拿來擋危險動作、或在指令跑完後記一筆帳。
第 3 層 Workflow:出菜 SOP,用「對抗迴圈」保品質
一個廚師從頭做到尾,你不知道哪一步會出包。所以我們設一條「產出 → 找錯 → 打回重做」的對抗迴圈,外加兩道人工關卡:
動手做菜
專門找它的錯
過關才 merge
- 動手的 AI 做完,另一個 AI 專門找它的錯,打回去重做(這叫 Generator-Verifier,產出者 vs 驗貨者)。
- 關鍵:驗貨的那個不能跟產出的那個共用同一套想法,不然等於自己改自己考卷,一定看不出錯。
- 要有明確的「什麼條件才算做完」(stop 條件),否則 AI 會無限迴圈——我們真的燒過一整天,就是 QA 沒有停止條件、找 bug 找了 21 輪停不下來。
那條迴圈為什麼不會空轉一整天?關鍵是有一個「PM 角色」把守兩道閘。少任何一道,迴圈就會發散、永遠收不完。完整流程長這樣:
沒有這份契約,驗貨的 AI 沒有比對基準,會把每個觀察都當 bug 報
✅ 通過 ❌ 違反(附重現步驟) ⚠️ 怪怪的說不上來
幾條反直覺、但用血換來的規則:
| 規則 | 為什麼 |
|---|---|
| 驗貨 AI 不准自己蓋章「這是嚴重 bug」,只能標三種結果 | 不然它會把「規格根本沒寫的需求」也當 bug,工程師被牽著鼻子走、永遠修不完 |
| 派兩個驗貨 AI、第二個不准看第一個的報告 | 兩個獨立都說綠=真綠;結論不一致=規格還有洞,該回去補規格,不是狂派更多人 |
| 「派 10 個都能挑到問題」不是工程師爛 | ⚠️ 是規格還沒長硬 → 回頭把紅線寫清楚,別再加人 |
| 真人親手點過一遍,永遠是最後一道防線 | 🚫 AI 驗貨跟 AI 做事同一個腦系,會一起漏;真人實測才抓得到 |
還有一個關鍵:這套流程靠三份分開的文件撐著,混在一起就會亂——規格(要做什麼,改得慢)、紅線清單(絕不能違反的事,每修一個 bug 補一條)、SOP(誰在什麼時候做什麼,方法論成熟後鎖死)。
很多人把 AI 團隊命名成「PM Agent、架構師 Agent、QA Agent」,搞得像公司部門。這是幻覺。職稱標籤對 AI 沒有「讓它更專業」的效果,只有「讓它拒絕越界」的壞處。Stanford 有一篇資訊理論的論文指出:在多跳推理任務、同算力預算下,單一 AI 常打平或勝過一堆分工的 AI(每次 agent 交接只會流失資訊)。很多「多 agent 比較強」的宣稱,只是偷偷花了更多錢(token)而已。所以我們拆團隊是看資訊邊界拆,不是看職稱拆。
第 4 層 Agent:一張決策樹決定「這件事派給誰」
Agent 就是「動手的廚師」,差別在貴不貴、聰不聰明、資料外不外流。同樣一顆會用 GPT 的腦,差別只在有沒有手(工具)——這個觀念在 會用 GPT 就會用 Agent:同一顆腦,差在有沒有手 講得更白。到底一件事該派給誰?照這張決策樹走:
否 → 還是先回雲端主廚(模糊的活別丟弱腦)
| 廚師 | 定位 | 適合的活 |
|---|---|---|
| Claude Code(CC) | 雲端主廚,最聰明,但貴+資料要送出去 | ✅ 架構、安全設計、複雜邏輯 |
| Pi / Aider | 本地學徒,跑在自己機器上,資料不外流、不用錢 | 規格明確的小事(腦子小) |
實測結論:在我們這台機器上,配本地小模型時 Pi 表現最好,CC 對小模型反而太重。
第 5 層 大腦:換腦袋能力天差地別,本地小腦會偷偷降級
claude mcp add)目前綁 Claude Code——換別家 agent 這層要重做。這是可接受的取捨,不是「零鎖定」。
同一個廚師(agent),換不同腦袋(模型),能力天差地別。雲端大腦(Claude 的 Opus/Sonnet/Haiku)聰明,但貴+資料外流;本地大腦(Ollama 跑的 qwen3:8b 等)免費、資料留在公司內,但小、慢。要落地一台自己的私密 AI 分身,可以參考 DGX Spark 打造私密 AI 分身:選一台、跑哪個模型、Day 1 落地。
我們用 A2A 實驗驗過一件對企業很重要的事:把一份「production 等級的登入系統設計稿」丟給本地小模型做,它會分岔成兩種結果——
誠實超時
做不完,至少沒騙你
偷偷降級腦補
嫌 bcrypt、JWT 太難,自作主張全丟掉、改成明文存密碼,還跟你說「做好了」
進階:什麼時候該從「一個廚師」升級成「一支團隊」?
前面說 Agent 是動手的廚師。但有些菜一個廚師就做得完,有些要一整個團隊。「什麼時候開團隊、怎麼開」本身就是 SPEC 和 Workflow 的變種——決定「派幾個人、各做哪一小塊、做完怎麼算數」,就是在寫一份規格和流程。這件事我們做過非常多次,也失敗過非常多次:開了團隊反而越改越亂、改了一整天收不了尾,甚至為了收拾平行改檔的爛攤子動用到特殊的版本控制工具。這一段把踩過的坑講白。
先搞懂:「開很多代理」不等於「Agent Team」
先破一個超常見的誤會。很多人跟 AI 說「幫我開很多代理」,看到一堆代理在跑,就以為這是 Agent Team。其實不是。「一堆各做各的代理」跟「一支真正的團隊」,差在四件事:
| 開一堆子代理(很多人以為的) | 真正的 Agent Team | |
|---|---|---|
| 有沒有指揮 | 沒有,各做各的 | 有「控球中心」統籌 |
| 開工前 | 直接開,沒定目標分工 | 先定一個共同目標 + 分工 |
| 每個代理拿到的工 | 一樣重(都扛全部) | 小而清楚(一小塊、範圍鎖死) |
| 處理方式 | 各自平行硬幹 | 分段處理、各司其職、做完交回 |
| Cost | 很高(每個都燒一份完整) | 省(小任務、用完即拋) |
這個差異,正好解釋一個很多人碰過、卻講不出所以然的怪現象——
先破迷思:多找幾個 AI,不是免費的
直覺會覺得「人多好辦事」,但這在 AI 身上常常反過來。幾個實測證據:
| 證據 | 結論 |
|---|---|
| Stanford:同樣算力預算比較 | 需要「一步接一步推理」的題目,單一 AI 常打平或勝過一堆分工的 AI |
| Google×MIT:180 種組合實測 | 可平行的任務 +81%;但要照順序的任務退化 39~70% |
| 錯誤放大效應 | 🚫 各自為政的 AI 把錯誤放大到 17 倍;有協調者也還有 4.4 倍 |
| 7 套業界多代理系統實測 | ⚠️ 失敗率 41~86.7%,多數是「設計問題」不是模型不夠強 |
Agent Team:一個人,還是一支團隊?
不要預設「大專案就開團隊」。照這張閘一路問下來:
否 → 別平行寫,改成一個人一條龍寫、其他 AI 只在旁邊給意見
我們自己歸納出來的判準(不是論文結論):只有三種情況真的值得拆團隊——① 有一堆髒資訊會污染主腦(派子代理去做髒活、只回幾十字摘要);② 要同時探索多個獨立方向(目標是「蓋得廣」不是「跑得快」);③ 工具太多或人設衝突。而且要按「資訊邊界」拆,不是按「工作類型」拆——寫功能的 AI 就該順手寫它自己的測試,因為它已經有完整脈絡;硬把功能和測試拆給兩個人,只會逼對方重新搞懂一次。
怎麼編團隊:看「視角」,不是看「頭銜」
- 不要問「我有 3 個位子,塞哪些角色」,要問「這件事需要哪些視角想過」。人數是算出來的結果,不是一開始就定的輸入。
- 每個視角打分(有多重要 × 涉及多廣):高分給專人、中分兩個視角共用一人、低分塞進別人的任務說明裡順便戴帽子。
- 反直覺:越小的任務越需要資深視角。一個 3 行的「健康檢查」端點,寫程式的風險≈1,但「這個端點決定要不要重啟正式主機」的維運視角≈6——所以那 3 行該給一個維運腦來寫,不是隨手丟給打字快的。
- 受機器記憶體限制:一台 32GB 的機器,扣掉系統,大概同時跑十幾到二十幾個混合模型的 agent。超了就把最不重要的兩個併起來。
動態派工:用完即拋、小而專注的 agent(這是解藥)
「改一整天收不完」的解藥,是不要養一排常駐團隊,改成每個回合依當下任務臨時生出、範圍鎖死、做完即丟的 agent:
臨時、當下需要才生
只驗 1~3 條紅線
「不要順便找別的」
不常駐、不累積
- 範圍鎖死是關鍵:每個 agent 只驗 1~3 條紅線、被明令「不要順便找任何其他 bug」。這樣每個 agent 有邊界、會收斂;不鎖範圍,就是「找到天荒地老」的無限迴圈。
- 現在的工具還能自動分層:主腦用最聰明的模型負責「想」跟統整,一堆掃描小工自動派便宜快速的模型負責「找」,不用手動配。
- 硬限制要知道:同時大約最多 16 個(8 核機器實測約 7 個)——注意這是平台本身的併發上限,跟前面「記憶體能撐十幾廿幾個」是兩件事、兩個都要滿足(取小的);單次累計上限約 1000 個、而且中途不能停下來問你——需要你臨場拍板的題目,別丟進這種自動流程。
Agent Team:合併,以及為什麼會用上 jj
一支團隊平行改檔,最後要把成果合在一起。這一關最容易爆,也是 Tom 提到「甚至動用到 jj」的地方。問題的本質不是工具好不好,而是「衝突發生時,需不需要你人在現場」:
| 工具 | 遇到合併衝突時 | 你能不能離開現場 |
|---|---|---|
| git | 卡住,整個停下來等人手動解 | ⚠️ 得盯著(同步注意力) |
| jj(jujutsu) | 衝突變成一筆「之後再批次處理」的紀錄,合併不中斷 | ✅ 人可以先走,回來一次收(非同步) |
所以 jj 的價值不是「比較快」,是「讓系統在你睡覺時照跑」——你不可能盯著 3 個 agent 即時解衝突。但底層有兩件事要先做對:
自己的工作區
自己的工作區
自己的工作區
- 每個 agent 一定要有自己的獨立工作區(各自的資料夾)。兩個 agent 同時寫同一個檔=檔案層的搶位子,這是 VCS 救不了的,得先隔離。
- 日常還是用 git,只有團隊合併那一刻才切 jj(少數幾個指令),零綁定、隨時拆掉、git 專案照樣完整。判準很簡單:這些 agent 需要動手寫檔嗎?純稽核/review=只讀=用 git 就好;平行開發、debug 試假設=要寫=jj 才划算。
- 踩過的血雷:解完衝突別把一長串指令串一起跑。其中一步默默失敗(例如工具說「檔案已被改」你卻當沒事)會被後面成功的指令蓋掉,結果把「衝突標記」原封不動送上去。鐵則:解完衝突、`git add` 之前,先用
grep確認檔案裡沒有<<<<<<<這種標記,才准往下走。
= 第二部第 5 層那個「大腦」。通用推理引擎、別人訓練好、可替換;很會講,但不記得你家的事。換 Claude/GPT/本地都行。
= 本部的正道腦/GraphRAG。你專屬的真相與經驗、可糾正、可追溯;換哪個 AI 都讀同一份。這才是護城河。
先搞懂三個詞:RAG、GraphRAG、CAG——以及為什麼要有它們
接下來會一直出現 RAG、GraphRAG、CAG。先用一頁把「各是什麼、為了補哪個洞」講清楚,後面幾節才好深入。
根源問題:光一顆模型不夠用。通用模型很會講,但它不知道你公司的事、會一本正經地編(幻覺)、而且知識凍結在訓練那一刻。所以你得想辦法「把你的知識餵給它」——這三個詞,全是在解這件事,差別只在「怎麼餵、餵什麼形狀的知識」。
| 名詞 | 一句話是什麼 | 補哪個洞 | 一句比喻 |
|---|---|---|---|
| RAG | 外接一份「用時才翻」的資料,把相關段落撈進 prompt 再讓模型答 | 不知道你的事、幻覺、過時 | 開書考:答之前先翻相關那幾頁 |
| GraphRAG | RAG 的「關係版」:走的是實體與關係的圖,不是找相似段落 | 不會精確串關係、看不出全局主題 | 開書考,但查的是索引與連結:照 A→B→C 走 |
| CAG | 知識有界又穩定時,事先「整份先攤進 context」(預載 context/KV 快取)、跳過檢索 | 每次都要檢索的 overhead | 開書考、但整本已翻開攤在桌上:不用臨時翻頁找 |
先有 LLM(通用腦,但有上面那些洞)→ 用 RAG 外接你的知識補洞 → 如果你的知識是「實體+關係」(合規、供應鏈、組織、ESG 框架互相對應)→ 升級成 GraphRAG → 如果某塊知識又薄又穩定、還一直被問 → 用 CAG(整本攤在 context 桌上、不用臨時翻)加速。
它們不是互相取代,是看「你的知識長什麼樣」選工具。下面幾節逐一深入。
| 你的知識長這樣 | 就是這個 | 一句話 |
|---|---|---|
| 答案就那幾條、固定、很少改(手冊、規定、FAQ、規格表) | CAG | 整本攤在桌上 |
| 一大堆文件、要翻出對的那幾份(合約庫、案例、報告) | RAG | 翻書 |
| 講關係、講流程、什麼牽動什麼(製程、BOM、法規對應、供應鏈) | GraphRAG | 走關係 |
正道腦 / BUG 腦 / GraphRAG:把知識結構化
前面五層是「怎麼做事」。這四個是「怎麼讓這套東西越用越聰明、而且不會被 AI 幻覺帶歪」。這才是跟一般「買個 AI 工具來用」最大的差別。
BUG 腦(防錯腦)vs 正道腦:兩種知識分開存
踩過的坑筆記:「上次這樣做燒焦了」
負面知識・容許模糊・被諮詢
對的做法:「這道菜正確步驟是這樣」
正面真相・要精確・不容錯
工業、醫療、長照這種錯了會出人命或賠錢的場域,必走正道腦。而最核心的一條設計哲學,是我們用血換來的判斷:把每塊知識切成「事實」和「判斷」兩半——
「我曾經錯在哪」+「現在資料庫真實是多少」→ AI 引用這個最可靠
「正確做法應該是這樣」→ 架構一改就過期,最容易幻覺
GraphRAG:真相在「圖」,不在「模型」
GraphRAG 是把知識存成一張關係網(圖),而不是塞進 AI 模型裡。最關鍵的一張概念圖:知識放在外面那張圖,模型只是「一張可替換的嘴巴」,嘴換了,腦子不變——
師傅可幾秒改一條線,並留下「誰改、何時、為什麼」
它有三個殺手級好處:
| 好處 | GraphRAG(知識放外面的圖) | fine-tune(把知識訓練進模型) |
|---|---|---|
| 換模型 | ✅ 換誰都讀同一份真相 | 🚫 綁死在那顆模型 |
| 知識過期 | ✅ 幾秒改一條線、可追溯 | 🚫 改不掉、查不到原因 |
| 成本 | ✅ 改資料就好 | 🚫 花大錢重訓 |
餵知識進圖的實務做法,是資深業界獨立驗證過、跟我們架構一致的兩階段加權:
把公開資料整理成流程樣板(基準)
領域老手「改」不是「從零寫」,所以願意動筆
前提是第一刀要挑「大方向八成像、只改細節」的領域下手,不然老手覺得「全錯不如重寫」,整個崩掉。想看 GraphRAG 跟一般 RAG 的差別、以及一個完整的實作案例,可讀 GraphRAG vs RAG + A2A:後端工程師的請假流程 AI 實作。
為什麼 LLM 需要 GraphRAG?它到底幫 LLM 補了什麼
LLM 本身已經很會講話了,為什麼還要接 GraphRAG?因為一顆「單獨的」LLM 有幾個天生的洞,GraphRAG 正好補這幾個。先打個比方:
具體來說,GraphRAG 幫 LLM 補這四個洞:
| LLM 天生的洞 | GraphRAG 補上的功用 |
|---|---|
| 🕳️ 不知道你的事 它學的是公開資料、還有截止日,不含你公司的私有與即時事實 |
給它「你家的真相」(接地氣) |
| 🕳️ 會自信幻覺 沒把握也會講得像真的一樣 |
讓它「照事實講、不准亂編」 |
| 🕳️ 不會精確串關係/給正確數字 多跳推理、精確數字是它的弱項 |
先把關係走完、數字算好,它只負責講人話 |
| 🕳️ 學到的改不動、會過期 模型權重固定,重訓又貴又慢 |
改一條關係就即時更新、可追溯,不用重訓 |
一個實例:有接、沒接 GraphRAG,答覆差多少
先看一小段「知識圖」長什麼樣——圓框是實體(節點),連線是關係(邊)。GraphRAG 回答時就是照著這些關係「走」,而不是找最像的一段文字:
現在拿同一個問題,比較「沒接圖」跟「接了圖」的答覆:
GraphRAG vs 普通 RAG,怎麼接
這裡也給一個「一定懂」的類比,因為很多人到現在還用舊的 RAG 認知去想 GraphRAG,結果就想歪了。先把兩個擺在你熟的東西旁邊:
把知識切成一段一段,問問題時找語意最像的幾段丟給 AI(比對的是「意思」不是關鍵字,所以不是全文/關鍵字搜尋)。
把知識做成有實體、有關係的圖(像資料表 + 外鍵),查的時候照關係精確地「走」出答案。就像下一句 SQL JOIN。
| 普通 RAG(≈語意相似) | GraphRAG(≈查關聯資料庫) | |
|---|---|---|
| 知識怎麼存 | 切成一段段文字塊 | 實體+關係(節點+邊) |
| 怎麼找答案 | 找「最像」的幾段(相似度) | 照關係精確走(路徑/JOIN) |
| 擅長 | 模糊找相關、單段就能回答 | 串多個關係、要精確、要正確數字 |
| 最大風險 | 抓到「看起來像、其實不對」的段落 | 前期要先定義實體與關係(建圖成本) |
那「以前用 RAG」和「現在該用 GraphRAG」的場景,差在哪?
客服 FAQ、找相似文件、內部文件問答——答案通常「一段話就講得完」,找到相關段落丟給 AI 潤飾就好,錯一點無傷。
答案要「串起好幾個事實才答得出來」(這個錯誤是哪個零件造成、牽動哪條 SOP?),或「錯了會出事」(醫療、長照、金流、法規)——這時找最像的段落會漏、會抓到像但不對的,必須照精確關係走。
怎麼把「腦」接到 AI 上:RAG 的三種接法
知識做好了,怎麼讓 AI 用到?答案是 RAG——讓 AI 開口回答之前,先去外面的知識查一遍,把查到的東西當根據再講。RAG 三個字就是這三步:Retrieval(檢索,去查)→ Augment(把查到的塞給 AI 當根據)→ Generate(AI 據此生成答案)。流程長這樣:
撈出相關事實
只負責潤飾,不負責記憶
差別在「檢索器怎麼查」。我們實作過三種接法,對應不同需求:
| 接法 | 怎麼查 | 適合 |
|---|---|---|
| 向量檢索 (對應 BUG 腦) |
「語意相近」就撈,容錯、模糊 | 找相關經驗、踩過的坑 |
| 圖查詢 (對應正道腦) |
精確走關係、要正確數字 | ✅ 這個錯誤對應哪條 SOP、不可錯 |
| 工具型 (進階) |
給 AI 幾個檢索器,讓它自己選用哪個 | 問題型態多變的成熟系統 |
接的時候有三個用血換來的紀律,不守就會踩雷:
- 關鍵路徑別讓小模型自己寫查詢語法。本地小模型常把關係方向寫反(該查「A 導致 B」寫成「B 導致 A」),語法對、卻查回 0 筆。正解是用「事先驗證過的固定查詢模板」,只讓它填空。
- 先把「確定性的事實」印出來,AI 只當潤飾層。這樣就算 AI 那張嘴當機了,核心答案照樣成立——因為真相在圖裡,不在 AI 的記憶裡。
- 查詢繞太多層就「攤平」。三段關係(A→B→C)小模型接不動,就把常查的答案直接掛在節點上,查詢從三段降成兩段,穩很多。
CAG vs RAG:知識放模型「外面」還是「裡面」?
把公司知識餵給 AI 有兩條路,差別在知識住在哪——搞清楚這個,才知道什麼時候用哪個。
知識在模型外面(向量庫/Neo4j)。問的時候才撈相關那幾條進 prompt。就是本文前面 hr-graph 那套。
知識事先塞進模型 context、算好 KV 快取。問的時候不檢索、直接用「已經在腦裡的」答。
| 面向 | RAG/GraphRAG(拉) | CAG(注入) |
|---|---|---|
| 知識住哪 | 模型外面的 store | 模型 context(KV 快取) |
| 檢索步驟 | 有:用時才撈 | 沒有:事先塞好、直接答 |
| 適合的知識 | 大、常變、要跨關係 | 有界、穩定、塞得進 context |
| 出處/可追溯 | ✅ 強(可附來源) | ⚠️ 弱(混在 context) |
| 速度特性 | 每查小 prompt、快 | 首次讀整份慢、之後快取命中極快 |
| 統一更新的地方 | 改 store 一次(如 Neo4j) | 改 Gateway 一次(見下節) |
光講不夠——我真的在地端把兩個都跑了一遍,量速度也量對錯:
ollama stop 清 KV 快取、再用「與手冊無關的填充文」暖機到穩態才量。這是「快速驗證」不是嚴謹 benchmark:4 題、n=1、單人序列、且「沒有 CAG」那列其實是 CAG 自己的冷 Q1(同一招、快取還沒熱)。看趨勢就好、別把小數點當定論。| 模式 | prefill(讀資料) | 總延遲 | 正確 |
|---|---|---|---|
| 沒有 CAG:每題冷讀整份 | 108.4s | 118.6s | ✔ |
| CAG:第 2 題起(快取命中) | 6.5s | 29.9s | ✔ |
| RAG:只給檢索到的相關段†(完美檢索、未計檢索延遲) | 8.2s | 19.1s | ✔ |
② 但 RAG 總延遲反而最低(19.1s)、而且一樣全對:它送進模型的只有 ~80 token(vs CAG 的 ~900)。註:RAG 的 prefill 其實跟暖 CAG 相當(8.2 vs 6.5s),它贏在 decode——context 短,每個 token 的 attention 都更輕;CAG 帶著整份 ~900 token,連生成都稍慢,這也是它總延遲反而輸的原因。
③ 四種模式正確率都 4/4——但這其實測不出品質差異:題目全是單句事實查找、又給了 RAG 完美檢索,三家手上都有答案。真正會分勝負的(跨段綜合、檢索漏 top-k)沒測到,所以別把「4/4」讀成「品質一樣」。
結論(誠實):CAG 真正省的很窄——「單人、對同一份固定文件連續狂問、快取又沒被驅逐」時,省掉重複 prefill(此例 prefill 16.8×,換算整體約 4×)。 註:多人並發時共用前綴快取會被不斷驅逐、退回冷讀;14B 在 CPU 上 prefill 特別重(900 token 要 108s),換 GPU 這種小 doc 本來就次秒級、省下的差距幾乎蒸發(CAG 真正回本是數萬 token 的大 context)。† RAG 那列是手動餵完美段落、未計 embedding/檢索延遲,真實 RAG 會更慢也可能撈錯。
② 不用養一整套檢索基建。RAG 要 chunking+embedding+向量庫+retriever+reranker,要建要調要維護;CAG 就把文件塞進 context,零基建。為一份 30 頁手冊架向量庫,不划算。
③ 需要「讀完整份才能答」時。要跨段綜合、總結整份規章,RAG 的 top-k 幾段可能漏;CAG 整份都在、看得到全部,也更一致(RAG 每次撈的可能不同→答案會漂)。
(澄清:CAG「在模型內」不是改模型/fine-tune,是把知識預載進 context+快取,模型本身沒動。)
而且兩者不互斥:多數企業拿 RAG/GraphRAG 當骨幹(合規、跨關係、要引用),CAG 只加速手冊類、凍結版的子集——再靠一個 Gateway 把兩者統一管(下一節)。
A2A:agent 之間怎麼互通
A2A(Agent-to-Agent)是「讓一顆腦去呼叫另一顆腦」的協定。要講清楚它,最快的方式是先跟大家比較熟的 MCP 對照——這兩個常被搞混,但方向不一樣:
兩者不衝突、是互補:MCP 讓一顆腦長出手去用工具,A2A 讓一顆腦去指揮另一顆腦。而 A2A 本身,又有兩種用法——差別在對面是「講完就散」還是「開一件任務跟你來回」。
A2A 的兩種用法:訊息模式 vs 任務模式
照 A2A 官方規格(Life of a Task),對面 agent 收到你的話之後,有兩種回應方式:
任務模式的「生命週期」長這樣——一件任務會在這些狀態間移動,一旦走到終點(完成/取消/失敗)就不能重啟,要改只能開一件新任務連回去:
官方的「follow-up 範例」最好懂:你先請它畫一艘帆船(任務 A 完成)→ 你說「幫我把它改個顏色」,這句帶著「參考任務 A」的標記(規格叫 referenceTaskIds)→ 它開一件新任務 B、掛在同一段對話(contextId)下、產出同一張圖的新版本。三個識別碼各司其職:
| 識別碼 | 作用 |
|---|---|
contextId |
綁「同一段對話/同一個 session」,把相關來回串在一起 |
taskId |
指「同一件事」,後續訊息帶上它=延續那件任務 |
referenceTaskIds |
指回「舊任務」,在它的基礎上開新任務做精修 |
A2A:把舊系統「包成一顆腦」
| 別人常拜託你系統的人… | 你就開這個 A2A |
|---|---|
| 「幫我查這張訂單到哪了」 | 查訂單狀態 |
| 「這料還有沒有貨」 | 查可用庫存(把你算庫存的規矩包進去) |
| 「幫我開一張請購」 | 開請購單(會跑簽核那種) |
這是 A2A 最實用、對企業最值錢的用法。一個跑了十年的舊系統是「死」的,它不會自己長出技能;A2A 就是補這個洞——把舊系統的能力包裝成幾個 Skill、掛上一張「Agent Card(名片)」,讓任何 AI agent 直接發現它會什麼、直接呼叫。這其實是歷史重演第三次:
| 時代 | 系統開放給誰用 | 能力說明書 |
|---|---|---|
| ① 只有畫面 | 人(自己點 UI) | 靠人自己摸 |
| ② 開 API | 程式/前端 | Swagger/OpenAPI |
| ③ 開 A2A | AI Agent | ✅ Agent Card(就是 A2A 的 Swagger) |
關鍵推論:這一層可以省掉很多「做給人點的畫面」。系統的能力直接暴露成 Skill 給 agent 呼叫,很多時候就不必再做一套 UI。要看一張真實的 Agent Card 長怎樣、以及跟 MCP 的白話對照,可讀 會用 GPT 就會用 Agent:同一顆腦,差在有沒有手。
安全分層:名片公開 ≠ 大門敞開
不管是訊息模式還是任務模式,都會碰到一個最常被誤會、務必講清楚的授權分層:
名片放在固定路徑,本來就該公開;不公開別人根本不知道你會什麼。讀名片=看菜單,沒有任何副作用。
真正無敏感的唯讀(例如「要填哪些欄位」)可以免憑證;但只要觸及分級/個資的讀取,以及寫入、傳檔、動作,一律要帶「使用者身分」的 token才放行——這樣才做得到 row-level 授權與「誰查了哪筆」的稽核。
capabilities.streaming 只代表「有沒有用 SSE 推播(push vs poll)」,不是 sync/async 的判準——真實的卡可能 streaming:false,但某支 skill 照樣回傳 Task(你自己 poll 就好)。真正要判斷只有兩招:① 看 skill 的描述(會寫「回傳 stateful Task」);② 直接呼叫它,看回的是 Message(一問一答)還是 Task(有 taskId + status)。至於 queue/worker——卡上永遠看不到,而且這是對的:卡只描述「契約」,不描述你家的「引擎」。
A2A:會不會卡死你、正名、部署
這是接 A2A 時最該問的一句:「對我來說這就是一個 API 端,會不會被你的 AI agent 佔住、把我的 thread host 卡死?」答案:訊息型不會;任務型做對不會、做錯才會。
- 訊息型(message):短連線、秒回、執行緒立刻釋放,跟一般 REST 一樣,不會卡。
- 任務型(task):危險只發生在你把它做成「開著連線、一直等任務跑完才回」。正確做法是不要 hold 連線——
要打開/守住的幾個關鍵(就是防「被佔住」的護欄):
- 立刻回 taskId、工作進 queue:背景 worker 去做,不佔請求執行緒——這正是 A2A「任務有 id + 狀態」存在的理由。
- 每個請求都有逾時:慢 agent 不能永遠佔一條 thread。
- 每個 token 的併發上限 + rate limit:一個 agent 不能狂開一萬個任務。
- queue 滿了回 429(限流),不是把人卡住:正好呼應前面那個 HTTP 429 的例子。
- 要用 SSE 推進度就限量 + 心跳逾時,別讓連線無限開著。
A2A 正名:嚴格講,是「Agent → API」
你這句點得很準。我們一直說 A2A 是「Agent-to-Agent(腦對腦)」,但拆到底層,它的實體就是「Agent → API」:
你(agent)打的就是一個 HTTP API 端點,那個端點用一張 Agent Card「自我介紹」它會什麼。之所以叫「agent 對 agent」,只是因為 API 背後那端可能自己會思考、會跑多步驟任務——但從你這條線看,就是 agent 在打 API。
那為什麼還是叫 Agent-to-Agent,不是 to-API?「做完」又怎麼判定?
你這一問,正好把上面那句「就是 API」校準成兩層——這也是照 A2A 官方 Life of a Task 的重點:
就是一個 HTTP 呼叫。所以你的 auth/逾時/限流/queue 都管得到,不會卡死你。
對面不是「無狀態的 API」,而是一個有生命週期、會自己跑、還會回頭問你的 agent。名字取 to-Agent 就是指這一層。
差別的核心,就是你點的「對方 agent 有 life cycle」。普通 API:HTTP 回 200 = 這次呼叫結束,它不記得你、也沒有「進行中」這回事。A2A 的 task 不一樣——你拿到 taskId 後,它會在自己的狀態機裡移動,走到「終點狀態」才算做完:
那「你」怎麼知道做完了?兩種:① 定時 GET /tasks/{id} 查狀態;② 訂閱串流(SSE)讓它把狀態變化推給你。一旦狀態是終點(completed/failed…)就是做完;終點不可重啟,要改就開一件新任務、用 referenceTaskIds 連回舊的。
POST /skills/…、202、GET /tasks/id)是為了好讀;實際 A2A 走 JSON-RPC:只有一個 message/send,要叫哪支 skill 由訊息內容路由,非同步是在正常回應裡直接回一個帶狀態的 Task 物件、再用 tasks/get 查(不是 202+GET)。概念(即時 vs 有生命週期)一樣,只是線路格式是 JSON-RPC。taskId + 存在 DB 的狀態就是一張「可接續的工作單」,兩邊靠它對帳、可 follow-up。真正做事的 thread 在 worker 池(有上限);web 請求池永遠秒回、不被佔——這就是為什麼 agent 佔不住你。(狀態存 DB 還有個好處:伺服器重啟、agent 斷線,工作單都還在,接得回去。)
tasks/get 查」,你把狀態算出來存 DB 就兌現了——這是主 pattern,同步、不用 worker(查詢、多輪填表都走這)。queue + worker 是備案:只有「單次做不完」(跑報表、批次那種長運算)才補,由 worker 非同步去更新同一張 DB 的 status。所以 DB+status 是骨幹,queue+worker 只是選配引擎——A2A 也沒規定一定要有 queue(背景執行緒/cron/serverless 都行)。說穿了這就是業界行之有年的「非同步作業(async job)」pattern——回 id、存狀態、輪詢查;A2A 的增量價值只是把這個信封標準化 + 配一張自我描述名片(Agent Card),不是行為上升格成新東西。所以很多場景其實 MCP/一般 REST 也做得到,A2A 的甜蜜點是「跨組織、對面 agent 你無法控制其實作」時的共同語言。
即時 vs 非同步,差異重點一張表看完:
| 面向 | 即時(sync/message) | 非同步(async/task) |
|---|---|---|
| 適合的活 | 短、馬上算得完(查規則、查狀態) | 長、要跑一陣子(送審、跑報表、多步驟) |
| 回什麼 | 直接回答案(同一個 response) | 先回一個 taskId(202) |
| 後面要不要引擎 | 不用,就是單純 API | 要背景引擎(常見 queue + worker 池) |
| 佔不佔你 web 執行緒 | 只佔一下(跟 REST 一樣) | 秒回就釋放,做事在另一個 worker 池 |
| 怎麼知道做完 | response 回來就是做完 | task 狀態走到終點(poll/訂閱) |
| 能不能接續/follow-up | 不能(講完就結束) | 能(taskId + referenceTaskIds 接續) |
| 對面比較像 | 一個「API」 | 一個「agent」(有生命週期) |
taskId + 存 DB 的狀態活成一張「可接續的工作單」——這也正是它為什麼像 agent、而不只是 API。
A2A 部署:掛在系統前面的轉接層
這個理解完全正確,而且正是推薦做法:A2A 跟你本身的系統是解耦的。你不用改你的 ERP(SAP、鼎新 Digiwin、iDempiere… 都一樣),只要另外寫一層「轉接層(adapter)」掛上去——它一邊講 A2A、一邊去呼叫你的系統。這層可以放在另一支程式、甚至另一台機器/另一個 domain:
呼叫方
(HTTP) →
REST API →
Domain A、不動
SAP/鼎新/iDempiere…
轉接層裡每個元件在幹嘛:
| 元件 | 角色 |
|---|---|
| 🪪 Agent Card | 名片/說明書,公開讓別的 agent 發現「你會什麼」 |
| 🌐 A2A API + auth | 門面+門禁:收 sync/async 呼叫,寫入型驗 token |
| 📥 Queue + 🧵 Worker 池 | 背景引擎:長工作丟這裡跑,跟 web 執行緒分開、有上限 |
| 🗄️ Task 狀態 DB | 可接續的工作單:存 taskId + 狀態,重啟/斷線都接得回 |
| 🏢 ERP(Domain A) | 真正幹活的系統,只透過它自己的 API 被呼叫(不動、不繞 DB) |
一條請求怎麼走完(對照前面 sync/async 兩種模式):
① agent 讀 Agent Card → 打
get_status② 轉接層驗 auth → 呼叫 ERP 的 API
③ 拿到結果 → 同一個 response 回 agent
① agent 打
apply_leave② 轉接層驗 auth → enqueue → 秒回 taskId(202)
③ worker 取 job → 呼叫 ERP API → 更新 Task DB(working→completed)
④ agent 之後
GET /tasks/{id} → 從 Task DB 讀狀態直到終點
所以你的 ERP 本體乾乾淨淨、根本不知道 A2A 存在——這正是前面「把舊系統「包成一顆腦」」的落地拓撲:系統不動,轉接層另外長。
共用知識服務(MCP):別讓每個人重寫
知識做好了,agent 到底怎麼「用到」它?先分清楚走哪一層:「給 agent 一個知識來源」走的是 MCP(腦 → 工具),不是 A2A(腦 → 腦)。A2A 是「你的 agent 去呼叫另一個會思考的 agent」;而 RAG/知識比較像「一個工具、一個資料源」,這正是 MCP 的守備範圍。
你擔心的「難道每個 agent 都自己寫一套 RAG?那不是很怪?」——完全正確,那就是要避免的反模式。如果每個 agent 各自寫檢索碼(連向量庫、寫查詢、處理 auth、管更新),就是每一隊重造一次輪子。企業做法是把知識做成「一個大家共用的服務」,寫一次、所有 agent 連上去用:
(MCP)→
MCP server(檢索邏輯只寫這裡一次)
向量庫 + 知識圖
檢索邏輯(連線、查詢模板、GraphRAG 走關係、auth、新鮮度)只寫在服務端一次;每個 agent 只是連上去用。知識更新也一次(charge 圖)→ 所有 agent 立刻看到新真相(呼應前面「真相在圖不在模型」)。(提醒:圖保證「事實不背叛」,但「照著講對」仍吃模型的對點與生成品質——弱模型撈對了也可能說錯。)三種做法一比就清楚:
| 做法 | 誰寫檢索 | 適合 |
|---|---|---|
| 每個 agent 自己內嵌 RAG | 🚫 每隊各寫一份 | 只有一個小專案、玩票 |
| 共用知識服務 + MCP | ✅ 寫一次(知識團隊) | 企業內部、多 agent 共用(=一次性導入) |
| 包成 A2A 知識 agent | 寫一次 | 跨組織,或知識那端本身要會多步推理 |
實戰:把知識圖包成 MCP(hr-graph)
hr-graph MCP server)。把 ESG 知識圖(43 實體/55 關係)+請假流程圖的「沿著線走」確定性檢索(最短路徑/樞紐/社群/鄰居)包成 MCP 工具:檢索邏輯寫一次(graph_service.py,全唯讀、scope 走固定 label 防注入、實體名一律 $param)、跟 LLM 無關(純 Cypher 對 live Neo4j、秒回)、每個回傳都附實際跑的 cypher 當出處(Cypher=圖資料庫的查詢語言,作用像 SQL)。*規模上這是教學 demo:43 節點遠低於前面說的「GraphRAG 才回本」門檻,它示範的是「把圖包成 MCP + 出處可追溯」的工程手法,不是 GraphRAG 在大語料上的效益——別把 demo 當規模驗證。
# 位置:onboarding-system/graph-demo/(檢索層 graph_service.py+薄包 mcp_server.py)
# 本機 agent:一行加進 Claude Code(stdio,用完即起、非常駐)
claude mcp add hr-graph -- .venv/bin/python graph-demo/mcp_server.py
# 之後對話直接問:「用 hr-graph 查 本公司 到 CDP 怎麼連」
# 別台/遠端 agent:走 HTTP(實測連法)
claude mcp add --transport http hr-graph https://neo4j.tomting.com/mcp \
--header "Authorization: Bearer hrg_xxxxxxxx" -s user
# MCP /mcp 併進 graph-demo/app.py、重用既有 tunnel、Bearer token、全唯讀(免 SSE)
| tool | 問什麼(每個回傳都附 cypher=出處) |
|---|---|
list_scopes | 有哪些圖可查(esg/hr…) |
graph_search | 打錯字時對到正確實體 |
graph_hubs | 誰最關鍵(中心性) |
graph_path | A 跟 B 怎麼連(多跳最短路徑) |
graph_community | 整體有哪些主題面向 |
graph_neighbors | X 直接牽涉什麼(local search) |
claude mcp add 一行、換誰都連(別台就走 HTTP+token);✍️ 建立——多一個知識領域只要在 SCOPES 多一列;🔍 理解——回答附 cypher 出處、可追溯、跟哪個模型無關。寫一次、所有 agent 共用同一張圖——「共用知識服務」從理論變成跑得起來的東西。
graph_propose_entity/graph_propose_relation/graph_ingest),但關鍵是:agent 只能「提議」、進暫存,不能直接改圖;要人在 UI 審核頁按「核准」才落庫(=charge,有人閘、可追溯誰核准)。實測就這樣加了第 43 個節點 TOM(concept,關係 TOM —contributes_to→ Scope 3):agent 透過 MCP 提議 → 人在 UI 核准 → 它成了圖裡真的第 43 個節點、查得到。老手不用從零寫、只要「按核准」;agent 幫你抽、你把關——這就是低建立門檻 + 可信任的 charge。
description 和 server instructions 都是你(知識服務 owner)控制的:把「什麼情況叫我、先 list_scopes → graph_search 對點」寫進去,寫一次,全公司連上就自動帶過去,不用碰任何人的本機。(務實提醒:tool description 較可靠;server instructions 在 MCP 規格裡是「建議性」的,client 可能不注入模型——跨不同 agent 別當 100% 保證,真的非用不可的路由仍要在統一佈署那層補。)你發給大家的那條「連線+key」指令,連進來就順便把「何時用、怎麼用」一起帶過去了。真的「非用不可」的路由,才在公司統一佈署的 agent(managed 設定/共用 repo 的 CLAUDE.md,一次改、git 發全部)加——仍不是去動每台機器;「明確點名工具」則是正常的臨時 fallback。回到 Harness(規則層):政策要跟著工具走(server 端),不是塞進每個使用者的本機。
補充:要「強制、不可繞過」——Enterprise Managed Settings
上面「description + server instructions 隨連線發全公司」是寫一次、隨連線走的做法——但它本質是「盡力」:模型仍可能不照做,而且只管得到 MCP 工具怎麼用。要做到「必須遵守、使用者繞不過」,Claude Code 有原生的一層:Enterprise managed settings。
| 機制 | 強制力 | 怎麼發 | 定位 |
|---|---|---|---|
| MCP description/instructions | 盡力(模型自決) | 隨連線、零設定 | 引導 |
| Enterprise managed settings | 強制(不可繞過) | claude.ai 主控台/MDM | 合規·資安必守 |
關鍵開關:allowManagedMcpServersOnly + allowedMcpServers(MCP 白名單強制,把你上面 hr-graph 那套從「盡力」升級成「強制」)、claudeMd(全公司 CLAUDE.md,使用者刪不掉)、strictKnownMarketplaces(鎖 plugin 只能從核准來源裝)。檔案在系統層(/Library/Application Support/ClaudeCode/、/etc/claude-code/、C:\Program Files\ClaudeCode\),或直接用主控台推。
tool description + server instructions = 使用政策(寫一次)
① 沒規則 → 不去叫(用自己的知識答,如上)。
② 去叫了、卻猜錯 node 名 → 查空。圖裡的節點是精確 id(
IFRS S2/Scope 3/CDP/GHG inventory…);agent 直接拿使用者口語的「碳排放」「碳揭露」去 search,對不上節點 → 回空 → 看起來就像「亂找」。③ 少了「先對點」這步。正解順序要寫進規則:
list_scopes(有哪些圖)→ graph_search(把口語詞對到正確 node id)→ 再 graph_path/graph_neighbors。少了中間「對點」,agent 就只能亂猜。
導對之後的真實使用經驗(下面是真的從這張 43 節點的 ESG 圖撈出來的)——問「幫本公司做 ESG 報告要準備什麼」,agent(被規則導去 hr-graph):
| 工具 | 從圖撈到的(真實) |
|---|---|
graph_community有哪些主題 |
四大主題群:碳盤查/減碳(CDP、Scope 1/2/3、GHG inventory、SBTi)、揭露框架(IFRS S1/S2、SASB、TCFD、ISSB、double materiality)、外部評級(MSCI、DJSI、Sustainalytics、S&P CSA、FTSE4Good)、在地法規(GRI、TWSE、金管會、net-zero 2050、conflict minerals) |
graph_hubs誰最關鍵 |
本公司(母體節點,連 8 條,最樞紐)、IFRS S2(6)、Scope 3(6)→ 報告重心先圍這幾個 |
graph_pathA 跟 B 怎麼連 |
本公司 → CDP 怎麼連(多跳最短路徑,附實際 cypher) |
list_scopes → graph_search 對點)——這才是把「亂找」變「照圖走」的關鍵。
實戰復盤 · 某企業專利 GraphRAG:知識怎麼「塞」進圖,圖又怎麼「修」
前面講的都是「該怎麼做」,這章真的做了一次——把某企業的智財管理培訓投影片,變成一顆工程師與發明人都能問、主管能審的 GraphRAG。一顆圖能不能長期用,只看三件事、而且有先後順序:怎麼「塞」→ 怎麼「驗」→ 怎麼「修」。下面按順序拆,每一步用黃底標出「該怎麼做」的重點。
1. agent 直接看圖、理解語意 → 手工萃取成「節點+關係」(量小要精確,不用 OCR、不用 LLM 自動抽:中文投影片 OCR 不穩、量小自動化省 10 分卻埋一顆錯)。
2. 用
MERGE 播種——重播不會產生重複節點。3. 分兩類塞:流程資訊→帶方向語意的邊(例如「下一步是」「由誰負責」「需要哪些文件」——關係名要指出動作方向,不是「有連到」而已);術語定義→節點但天然孤立(沒有邊 ≠ 壞掉)。
Pass 1 機器把公開/通用資料整理成「流程樣板」(基準權重) → Pass 2 領域老手「改」成公司真流程(高權重 ground truth)
1. 邊的方向對不對——關係語意是「動作方向」,不是「有連到」。查得到卻回空,第一個嫌疑就是關係接反了。
2. 孤立節點是「本該孤立的 term」還是「漏連」——先分類再判定,別看到沒邊就急著補。
3. 用使用者真的會問的問句跑一遍,看答得對不對。
・事實(踩過的坑=過去式、現況=此刻真實)→ 當地基,不背叛。
・判斷(正解/SOP)→ 會過期,架構一變就錯,要標「當下最佳、可能過期」。
判斷背叛那天:charge 改一條邊(幾秒),並寫一筆審計
ChargeLog(誰改/何時/為何)。
・改一條邊幾秒、不弄壞別的
・每筆改動有出處可追溯
・可設權限(老手能改、徒弟只能提案)
・真相在圖,換哪個模型都讀同一份
・要改?改不掉、得重訓
・當初為何這樣學?查不到
・知識綁死在某個模型,換模型就失傳
・沒有「誰能改」的權限邊界
一句話收:塞得準(機器打樣板+老手矯正)、驗得出(用問句不用查表)、修得動(charge + Pending 人閘),圖才會活。這也正是整篇的主張——真相在圖、判斷可糾正、手有人閘。
企業 AI vs 玩票 AI:分水嶺
講到這裡,把整個知識這塊的價值收成一句:不是「知識越多越好」,是「相關的知識、被低門檻地取用/貢獻/信任」。
而真正的重點,是把三個門檻降下來——這才是 A2A + GraphRAG 的價值所在:
MCP 一行連、零檢索碼;換 Claude/GPT/本地都能用。
老手「改」不是「從零寫」+ charge 幾秒改一條,活化能低、願意動筆。
答案附出處、走圖可追溯 → 人信得過,不是黑箱。
企業藍圖:各單位自維護、agent 來組合
把前面全部串起來,一家公司該長成這樣——各單位把自己領域的知識榨出來、自己維護;agent 在上面組合、跨單位取知識+辦事:
一個問題 → 跨單位取知識 + 辦事
各單位的知識服務:HR 圖 / ESG 圖 / ERP 圖…
各單位自己「榨知識 → RAG/GraphRAG → 包 MCP」、自己維護。
各系統:請假 / 採購 / 財務…
掛 Agent Card + 開有生命週期的任務(送簽、開單、跑批)。
你的藍圖方向完全正確(這叫「聯邦式企業知識架構」)。落地時記住五點:
| 要點 | 怎麼做 |
|---|---|
| 別過度包 | MCP 本身就是「給 agent 的 API 契約」。給 agent 用 → MCP 就夠;有程式/前端也要用才另開 REST API。 |
| 加治理層 | registry + 命名規約 + 使用政策——沒這層=你同事「亂找」問題 × 全公司。 |
| 對號入座 | 查知識/唯讀=MCP;跨系統辦一件有狀態的事=A2A。別混用。 |
| 先小後大 | 先挑 1–2 個「骨架八成像」的領域做成 MCP 知識服務、跑通、量到價值,再聯邦擴張;A2A 等 MCP 穩了再上。 |
| 資料品質定生死 | 「榨知識」那步的 node 命名/關係要乾淨,否則 agent 亂找。兩段式:機器打樣板 → 領域老手校準(propose/approve/reject 的 charge 審核)。 |
落地兩件事:知識放哪、不會用 agent 的員工怎麼用
前面的 claude mcp add 是給工程師的路。真到全公司,你會撞到兩個現實問題:①知識到底集中在哪個「一個地方」統一改?②多數員工連 agent 都不會用。兩個都有乾淨解。
知識有兩種,各有「一個中心」——別散進每個人的 prompt
| 拉式知識(GraphRAG) | 注入式知識(CAG) | |
|---|---|---|
| 那一個地方 | 知識圖資料庫(如 Neo4j) | 一個 LLM Gateway(proxy) |
| 怎麼被用 | client 的模型打 API 拉回來 | Gateway 集中把知識注入每個請求(快取在後端 vLLM/各雲端) |
| 更新 | 改資料庫一次 | 改 Gateway 一次 |
| 前面的 client | 五花八門都無所謂(Claude Code/GPT/地端…) | |
Gateway 長這樣——前面各種 client 用 API 連進來,後面各種模型連出去,CAG(知識注入+快取)就掛在中間那一個位,改一次全員生效:
(快取跑在後端;就改這一個地方)
多數員工連 agent 都不會用——那就別給 agent,給一個聊天框
claude mcp add」是給會寫程式的少數人。給全公司電腦白癡的,是一個聊天輸入框——內部網頁/Teams/LINE bot——員工只打中文、看答案,看不到 agent、MCP、CLI。所有複雜度都在後端:那個聊天 App 背後就接上面兩個中心(Neo4j 拉關係、Gateway 注入手冊)。現成前端:Dify/AnythingLLM/Open WebUI(自架、能接你的 API)。注意:它們「內建的 RAG」是向量的,要吃到 GraphRAG/hr-graph 得把它當外部 tool/API 掛進去(走「能接你的 API」那條),不是靠它的內建向量 RAG;各家對 MCP/自訂圖工具支援度不一,先驗過。員工端=一個網址 + 公司帳號登入,就這樣(怎麼讓非 IT 人真的開始用,見前面「步 1 怎麼點火」)。
誠實的反方:什麼時候你其實不需要(或別急)
只聽支持自己的聲音會翻車。這裡把最強的反方攤開——很多情況它們是對的。核心一句:RAG/GraphRAG/A2A 都是「門檻之上才回本」的工具,不是預設。
2M token context 讓「全塞進去」變可行。RAG 仍贏在成本(每查便宜約 1250×)、可追溯、去幻覺;但 <100 篇、靜態、原型時,長 context 更簡單。「RAG is dead」不成立,但「一定要 RAG」也不成立。
論文標題就嗆《Don’t Do RAG》:知識有界+穩定+塞得進 context 時,把知識預載進 KV cache、跳過檢索,更快更簡單、甚至贏 RAG。大/快變語料才回頭用 RAG。
建圖貴(百萬 token 語料數百鎂);抽象 QA 上比普通 RAG 多 57× 時間、210× token(來源見文末「反方與邊界」的 TDS/Medium);簡單查詢(「退費政策是什麼」)反而更差。只有語料 >10 萬份 + 多跳是常態(合規/合約)+ 引用是硬需求,才值得;否則先做更好的 chunking/reranker(reranker=把粗選出的候選段再精排一次的模型)。
業界不乏質疑聲音(連 Docker 創辦人 Solomon Hykes 都對「有了 MCP 為何還需要 A2A」表達過保留,見文末反方連結)。A2A 有用但範圍比炒作窄;協定太多(MCP/A2A/ACP/ANP)有過早標準化之嫌。先把 MCP(查知識)做穩,A2A(跨系統辦事)等真有多 agent 要互通再上。
上線後怎麼監控與維護(生命週期)
導入不是終點。這套東西會腐化——而且腐化的圖比沒有圖更危險:agent 拿到過期的關係、還附「出處」,變成更可信的錯。所以上線那天起,要有人、有流程、有回滾。
| 環節 | 要做什麼 |
|---|---|
| 誰維護(人) | 最小啟動編制:1 個平台 owner + 各單位 1 個兼職 curator。誰核准 propose(提議寫入)、用誰的預算,要在導入前就講定——沒人維護的圖三個月就 stale(過期、沒人更新)。 |
| 上線前 eval | 建一組真實 regression 題庫(含跨段綜合、會撈漏的題),走真檢索量正確率與幻覺率——不是 demo 那種餵完美段落的 4/4。 |
| 上線後監控 | 品質drift 監控(正確率退化告警)、存取稽核(誰在何時查了哪筆,PII 必留痕)、命中率/延遲/成本。 |
| 失敗與回滾 | 知識圖/文件版本化;charge(=變更留痕)已記「誰改的」,還要能退回上一版;答錯要有回報→修圖→回歸驗證的閉環。 |
| 權限與資料分級 | 別用一把共用 token 當授權:帶使用者身分做 per-user 授權 + 資料分級(薪資/個資 row-level 管control);機密知識強制走地端模型、公開的才可上雲。 |
| 換模型/升級 | 換底層模型或版本=一次改動:重跑 regression eval、確認答案沒壞才切上線——這就是「模型可換」在維運面的代價。 |
| 備份/DR | 知識圖、向量庫、Gateway 設定定期備份;要有災難復原計畫,別只有「知識版本回滾」。 |
治理與資安:給 agent 裝了「手」,就得管好
這套東西=給 agent 一顆腦(知識)+一雙手(A2A 動作技能)+餵它外部語料。腦+手+外部輸入三合一,是傳統資安沒完全涵蓋的新攻擊面。裝手之前,先把這五條想清楚。
| 風險 | 該做什麼 |
|---|---|
| 授權與身分 | 別用一把共用 token 當授權。end-user 身分要穿透 Gateway(它無狀態,但得把使用者身分帶進去、不能抹平)做 per-user + row-level;「免憑證」只限無敏感的名片/菜單,任何觸及分級資料的讀取都要身分。 |
| 讀取稽核 | 誰在何時查了哪筆(PII 必留痕);稽核日誌 append-only、獨立保存、有保存期——沒有真實 per-user 身分,「誰查的」就是空話(跟第 1 條綁死)。 |
| 動作技能人閘 | 不可逆的動作(採購/財務/送簽)不能只靠 token 認證——token 只證明「是誰」,不等於「准做多大」。要金額/範圍上限 + 人工核可閘(比照知識圖寫入的 charge)。 |
| 間接提示注入 | 最該防、也最容易漏:被污染的文件/圖節點可夾帶指令,驅使「有手」的 agent 去做未授權動作、或把機密(薪資)外送。檢索內容一律當不可信輸入;「讀知識 → 觸發動作」之間要授權隔離(工具白名單/確認閘)。 |
| Gateway 單點 | 它掛=全公司 AI 斷;被攻破=所有模型 key +注入知識全量外洩。要多副本+LB(它無狀態,可水平擴)、key 進 vault 可輪替、Gateway 自身要 authn/authz +限流+稽核。 |
怎麼用一個「請來做 AI 導入」的人
多數老闆不是自己做,是請人做。那「怎麼用這個人」才是真問題:我怎麼信任他?有些資料他不能看,怎麼辦?解法只有一句:信任靠「結構」,不靠「賭人品」——把情境設計成「就算他不可信、就算 AI 出錯,也傷不到你」。
② 信任靠三道結構:最小權限+從非機密、小處開始(你看結果、零風險,好了再開權限);沙盒先行(碰不到正式系統);全程留痕+NDA(他知道有 log=嚇阻+可歸責,NDA 是底線不是保護)。
③ 他的活不是「懂你的生意」,是:搭水電(工具/流程)、配一個你的懂業務的人一起做(他出「怎麼做」、你的人出「做什麼+碰真資料」)、教會你的人(他走了你的人還在)、小題先證明再放大。
| ✅ 好訊號(不用懂技術也看得出) | 🚩 紅旗 |
|---|---|
| 提議一個小 pilot、給可量的贏 | 要全部資料+一年+大預算才動 |
| 堅持教會你的人 | 只有他會操作(讓你依賴他) |
| 用假/遮罩資料就能做、不吵著要機密 | 「我要全權限才能幫你」 |
| 用你聽得懂的話講、拿工時算 ROI | 一堵術語牆 |
| 4 週給一個真結果 | 一直在「規劃/建平台」,看不到東西 |
一句話:你不用「信任」他,你只要把他放進一個「四週見真章、他碰不到機密、他走了你的人還在」的結構裡。
一張圖總結:從模糊需求到交付的完整流程
【正道腦 + BUG 腦 + GraphRAG 都在這層供 AI 隨時查】
關鍵/安全決策一定寫死進契約,不讓便宜的腦自己判斷。
鐵律:順序不能亂——規則書還沒就位就先開工,就是災難。骨架可以一天搭好,但規則內容是一坑一坑累積出來的,不可能一天到位。
對「公司」的落地意義
| 決策點 | 重點 |
|---|---|
| 護城河在哪 | 不是買一個 AI 工具就完事——工具只是第 4、5 層的「廚師和腦袋」。真正的護城河在 1~3 層(規格紀律、水電、SOP)和後面那幾個「腦」。 |
| 資料安全 | 資料敏感的東西留在公司內——本地模型讓病歷/名冊/內部資料不出門,代價是笨一點、關鍵決策要盯緊。 |
| 知識歸屬 | 知識是公司資產,不是 AI 的——用 GraphRAG,老員工的經驗變成一張公司自己擁有、可糾正、換任何 AI 都能讀的地圖。人走了,腦子留下。 |
| 別照抄大廠 | Google 敢讓 AI 自主,是因為它有一千人接錯、賭注只是 demo。你的工作點不一樣(錯了不可逆、你就是最後一道防線),預設應是「人把關 + 機器可驗 + 關鍵決策人拍板」。 |
・你的 domain 專家不用懂 RAG/CAG/A2A——他只要出本行判斷:「這塊知識長什麼形狀?」「大家每天來拜託我做哪幾件事?」
・這些判斷,只有最懂業務的人給得出——AI 給不出、工程師也想不到。
・把判斷接成跑得起來的東西,那才是 AI 跟工程師的活。
所以你該投資的不是「把每個人變成 AI 高手」,而是「讓最懂業務的人,把判斷講清楚」。domain 專家離 agent 很遠,一點關係都沒有——他出的本來就不是 AI 知識,是判斷。
第四部到這裡:市面上的 AI 是廚師和腦袋,但一家餐廳能不能穩定出好菜,靠的是菜單規格、廚房水電、出菜 SOP,還有那本傳給徒弟、可以當場糾正的食譜。把這五層加四顆腦搭起來,你買的就不再是「一個會失憶的實習生」,而是一支越用越強的團隊——但團隊一大,還缺最後一層:那張管住它們的控制台。這就是第五部。
一張 Cisco 海報,逼我問了一個問題
前面四部,把五層加四顆腦搭起來了。但東西一多,會冒出一個新問題:誰來管這些腦?我是在展場看到一張 Cisco 的 agentic AIOps 架構圖,才被逼著把這個問題講清楚。那張圖由上到下是:自然語言 → 多個 agent ↔ LLM(雲端或地端)→ 中間一層掛著四個 Manager:LLM Manager、Skill Manager、KB Manager、MCP Manager → 底下接 Splunk、ThousandEyes、一排網路設備。
① 這四個「Manager」的命名不是 Cisco 官方術語——官方講的是四個核心元件(AI agent、Skills、MCP servers、human-in-the-loop gates),這張海報是簡報方的再包裝。
② 圖上「省 25–40% 成本、降 30–50% 停機」這種數字,我查不到公開出處,當作願景、別當實證。
③ 但撇開包裝,這張圖點破了一件我一直在做、卻沒替它命名的事。
那件事是:當腦、工具、模型都變多,你需要一層控制台——agent 不該自己到處亂抓模型、技能、知識、工具,中間要有一層管「誰能用什麼、怎麼路由、健不健康」。這層現在業界正在給它取名:Agent Gateway / AI Gateway / control plane(AI 的控制平面)。名稱已經在收斂(Kong、AWS、Cloudflare 到 Linux Foundation 的 agentgateway 專案都在用同一組詞),但多數產品還在早期預覽。換句話說:方向對,工具還在長。
四個 Manager:你如果照前四部做,其實已經散做了
把四個 Manager 拆開看,你會發現前面幾部其實已經各做了一塊雛形,只是散著、沒收成一層。每一塊都有現成的開源/標準可以抄:
| Manager | 它在管什麼 | 現成的做法(可抄) |
|---|---|---|
| LLM Manager(模型總機) | 哪種任務用哪顆模型、雲端 vs 地端切換、成本/延遲路由、掛掉自動 fallback | 「LLM Gateway」這類方案,開源的 LiteLLM 可自架,還能把地端 Ollama/vLLM 跟雲端模型掛在同一個 gateway 後面——正好做雲/地端切換 |
| Skill Manager(技能登記處) | 有哪些技能、怎麼被發現與選用 | Anthropic Agent Skills(一個含 SKILL.md 的資料夾+漸進揭露:先只載名稱+描述,需要時才展開);技能一多時用 Tool Search 的 defer_loading 省 context |
| KB Manager(知識管家) | 檢索、更新、版本、來源 | 託管型 RAG(LlamaCloud、Vectara,後者含版本/生命週期治理);或你自己的 GraphRAG/正道腦 |
| MCP Manager(工具門房) | 有哪些 MCP、註冊、發現、健康、治理 | MCP 協定本身內建 tools/list + listChanged 發現機制;再加 registry(官方/Kong,仍 preview)+ gateway(AWS AgentCore、Docker MCP)做治理 |
看懂這張表,重點不是「Cisco 好厲害」,而是:控制平面不是要你從零建一個平台,是把你手上四塊散的東西,收成一層可管理的介面。模型選擇散在各支腳本裡→收進 LLM Manager 一份 config;工具散在各個 MCP→收進 MCP Manager 一張註冊+健康表。收斂本身就是價值。
用「複製一個資料夾給大家」的方式共享技能,其實不算管理——因為拷貝出去就收不回來了。真正的管理有三個條件:集中、可授權、可收回。一個技能/工具要能「給了還能拿回」,就得放在一個帶權杖(token)的服務後面,收回=砍掉那把 token。這也是為什麼上面每個 Manager 的成熟形態,都會往「一個帶身分驗證的服務」收——散在各處、拷貝出去的東西,天生管不住。
但這張圖有個高度,看漏了會做錯:它是「公司層級」的架構。四個 Manager 是一層集中維護的平台,由少數懂設定的人顧一次;其他所有人——尤其非工程師——看海報最上面那格「自然語言交流」,只是講話,不碰任何設定檔。
反過來看個人:如果你自己早就在管一堆 skill、知識庫、模型選擇、一排 MCP(很多重度使用者玩幾個月後其實都到了這步),那你已經在跑一個個人版的控制平面了——只是散在各處,而你自己就是那個「會設定的少數」。所以這不是「要不要建」的問題,是同一套 Manager、兩個高度:個人版的功課是把你已經在管的收乾淨;公司版的功課是把它集中、再用 MCP 讓多數人零設定消費。
同一件事,一個人做 vs 一間公司做
把這四個 Manager 換個角度看會更清楚:一個重度使用者,自己就管得動這四樣(散著管,反正自己人);一間公司要給全體用,就得把每一樣「集中成一個服務」。差別不是規模大小,是前面那句——可不可收回。
| Manager | 一個人怎麼做 | 一間公司怎麼做 |
|---|---|---|
| LLM(模型) | 各工具手動指定用哪顆模型、自己切雲/地 | 一個中央閘道,所有應用打同一入口、集中路由、可砍金鑰撤權 |
| KB(知識) | 自己養一套知識庫、每個答案附出處 | 各部門各養一套,上面一層統管命名/機密分級/版本 |
| Skill(技能) | 一個資料夾裝著、自己用就夠 | 得放進帶權杖的服務後面——才能授權給人、又能收回 |
| MCP(工具) | 少數工具自己接、自己就是會設定的那個人 | 中央登記,讓不會設定的多數人用聊天框「零設定」消費 |
看整張表,同一條線再出現一次:一個人不必跟自己撤銷權限,所以「散著、拷貝、手動配」都行;一間公司每一格都被「要能收回」這條,逼成「一個帶身分驗證的集中服務」。其中變化最大的是技能——一個人一個資料夾就夠,一間公司卻非得把它服務化不可,因為資料夾一旦拷貝出去就收不回來了。
連 Cisco 都把「人閘」當核心,不是選配
這張圖最讓我在意的,不是那四個 Manager,而是 Cisco 官方版四個核心元件裡的最後一個:human-in-the-loop gates(人在迴圈的閘門)。這跟本文一路在講的那句話,是同一件事——腦可以錯(可以糾正),手不能亂動(要人閘)。
所以如果你只從這一部帶走一句話:控制平面 = 讓能力可管、可換,再加上一道「動作前人要點頭」的閘。前者省你重工,後者保你不出大事。
落地:別建平台,先收成薄薄一層
最後講落地。個人跟公司兩個高度,功課不一樣:個人版——你若已經在手動管這些(很多人玩幾個月就到了),落地是把散的收乾淨、別急著上一整套治理產品(多半還在預覽,押身家太早);公司版——落地的難點不是設定檔,是「誰集中維運這層、怎麼讓非工程師零設定消費」。兩邊共通的一點是:每個 Manager 的「最小可用」形態其實很輕——LLM Manager 可能就是一份「哪種任務用哪顆」的設定;MCP Manager 可能就是一張「有哪些工具、健不健康」的清單。
- 先做最痛的那個——通常是 MCP Manager,因為工具一多最容易亂(誰在哪、還活著嗎、誰能連)。
- 再把模型選擇收成一處——用 LiteLLM 之類把散在各腳本的「用哪顆模型」收進一份 config,馬上省重複。
- 知識與技能通常已經比較成熟,後補——你若已有 GraphRAG 和一套 skill,這兩塊先維持,等前兩個穩了再收。
整篇一句話收尾:菜單規格、廚房水電、出菜 SOP、可糾正的食譜、四顆腦——那些是「能力」;控制平面是「讓這些能力可管、可換、可把關」的那張出菜口的桌子。先把能力搭起來、真的用出效益;等腦多到開始亂了,再收成薄薄一層控制台——別為了架構對稱,先蓋一個沒人坐的控制室。能力先行、治理隨後,順序不能反。這才是把「一個會失憶的實習生」,變成「一支越用越強、而且管得動的團隊」的完整那條路。
發佈留言