MapleCheng

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

0%

當 MCP 升級開始會痛,代表 Agent 工具層終於進入正式工程

最近看到 Agent 工具協定與 SDK 陸續走向穩定版本,我第一個想到的不是「終於可以放心升級」,而是:從現在開始,升級會變成一件需要被認真管理的事。

早期生態變動快,大家習慣追最新版,介面改了就修一下,範例不能跑就重抄一份。可是一旦工具協定進入正式系統,後面接著內部資料、排程、權限與業務流程,破壞性變更就不再只是工程師花半天改 import。它可能讓 Agent 找不到工具、誤判輸入格式,甚至在表面成功的情況下做出不同的動作。

協定穩定,不等於整條鏈都穩定

很多團隊看到協定或 SDK 標上 stable,直覺會把它理解成「以後不太會壞」。我反而會把 stable 看成另一種承諾:變更開始有清楚邊界,使用者也有理由要求遷移說明、相容策略與可預測的生命週期。

問題是,Agent 的工具呼叫從來不只經過一個套件。中間至少包含模型產生的呼叫、Host 端的轉換、Client SDK、傳輸層、Server 實作,以及最後真正執行工作的後端 API。任何一層改變 schema、錯誤格式、連線方式或生命週期語意,都可能造成連鎖反應。

更麻煩的是,有些錯誤不會直接拋例外。例如工具仍然列得出來,欄位名稱卻換了;呼叫仍回傳成功,內容結構卻改變;舊版把逾時視為可重試,新版則提前終止。一般 API 整合已經很怕這種「半相容」,Agent 又會根據回傳內容繼續規劃下一步,影響範圍自然更大。

所以我不會只問「SDK 能不能升」,而會問「升級後,Agent 的行為契約有沒有保持一致」。

不要讓版本號直接進正式環境

實驗階段追最新版很合理,因為團隊需要快速理解生態。但正式環境若仍使用浮動版本,等於把外部變更排進自己的發布流程,卻沒有排進自己的審查流程。

我會先做最基本的依賴鎖定,而且不只鎖 Server。Host、Client、SDK、Adapter 與相關傳輸套件,都要能還原出同一組版本。否則某次部署出問題時,團隊只知道「昨天還能跑」,卻無法重建昨天到底跑的是什麼。

接著要有相容矩陣。它不需要一開始就做得像大型商用軟體,但至少要記錄:目前支援哪些 Host 與 Server 組合、哪些版本已驗證、哪些即將退場、替代方案是什麼。對內部工具而言,這份矩陣就是維運邊界;沒有它,每一個 Agent 都在用自己的運氣做整合測試。

測試工具是否存在,遠遠不夠

Agent 工具層常見的健康檢查,是確認 Server 有啟動、工具清單讀得到、呼叫能回應。這些只能證明連線活著,不能證明契約仍然正確。

我認為至少要補三層測試。

第一層是 schema contract test:工具名稱、必要欄位、型別、預設值、錯誤結構與回傳格式,都要能自動比對。這能抓出最直接的介面漂移。

第二層是 行為測試:用固定輸入驗證工具實際做了什麼,而不只驗證 HTTP 200 或一段成功文字。例如查詢仍然是唯讀、草稿不會被直接送出、重試不會產生重複寫入。

第三層是 Agent 任務測試:讓相同的模型、指令與工具集合跑一組代表性任務,觀察工具選擇、參數、失敗處理與最終結果。因為 schema 完全相容,不代表模型看到新描述後仍會做出相同行為。

這三層分開很重要。連不上,是可用性問題;格式不同,是契約問題;格式一樣但 Agent 改走另一條路,則是端到端行為問題。混在一起看,最後只會得到一句很沒有幫助的結論:「AI 今天怪怪的。」

升級要像換引擎,不像更新編輯器外掛

工具層一旦會改變正式資料,我會要求分階段升級。先在測試環境重播既有任務,再用 canary 讓少量低風險流量進新版;高風險寫入則先維持草稿或人工審批。觀察的不只是錯誤率,還包括工具選擇分布、參數驗證失敗、重試次數、任務時間與人工接手比例。

回滾也不能只準備一句「降回舊版」。如果新版已經寫入不同格式的狀態,單純退套件可能讓舊版讀不回來;如果傳輸或身份驗證方式一起變更,憑證與連線設定也要能成套復原。真正可用的 rollback,必須事先演練,而且知道哪些變更可逆、哪些只能向前修復。

另外,我會要求工具能力目錄保留版本與淘汰狀態。Agent 不該只知道「有這個工具」,還要知道目前可用的是哪個契約、何時停止支援、是否存在替代版本。這能避免舊 Agent、背景排程或長任務在升級後繼續握著過期假設。

生態成熟的代價,是開始承擔維運責任

大家喜歡把標準協定想成整合成本的終點:只要都支援同一套協定,工具就能隨插即用。實際上,標準化只是把問題從「每家都不同」推進到「大家可以共同管理相容性」。這已經是巨大進步,但它不會自動消除版本、部署與行為差異。

站在技術主管角度,我反而樂見升級開始變得麻煩。因為這表示 Agent 工具層不再只是展示用的連接器,而是逐漸成為有人依賴、需要承諾、必須可回復的基礎設施。

真正的成熟,不是永遠不出現 breaking change,而是每一次變更都有契約、有測試、有觀測、有遷移路徑,也有退路。當團隊開始用這個標準管理 MCP 與其他 Agent 工具協定,Agent 才算從「接得到工具」往「養得起系統」跨了一步。