技術1 閱讀

當工具越來越多:Vercel AI SDK Tool 的邊界與痛點

上一篇,我們已經實現了:你在 Next.js 裡寫幾個 tool(...),把查時間、查天氣之類的函數包裝一下,就能讓模型自動呼叫這些能力。

只靠這一招,你已經可以做出不少實用的小東西:內部客服助手、知識庫問答、SaaS 裡的 AI 小功能。

那問題來了:如果你繼續往前走,會怎樣?

這時候,單靠「Vercel AI SDK Tool」這一層,就開始吃力了。這篇文章,我們不急著上 MCP,先把「純 Tool 架構」會遇到的問題攤開來講清楚。

1. 回顧:只有 Tool 的理想世界

先快速回顧一下「上一集」的模型:

從架構圖上看,大概是這樣一個扁平結構:

使用者 → Next.js API Route → Vercel AI SDK → 模型 模型 ←→ Tool(封裝了你的業務函數)

所有東西都在一個專案裡:

對一個「單應用、單團隊」的專案來說,這非常舒服:

2. 第一層複雜度:工具數量暴漲帶來的維護壓力

我們先不引入「多個應用」「多個宿主」,只看同一個專案內部。

2.1 從「幾個工具」到「一堆工具」

想像一下你在做一個後台營運助手,大概會有這些 Tool:

每一個 Tool 本身不複雜,但加起來就是幾十個檔案:

從短期看,這沒什麼問題,Tool 就是你專案的「AI 層 API 閘道」

2.2 程式碼開始出現三類「重複與分裂」

隨著工具數量上來,會出現三個微妙的問題:

  1. 同一類業務能力被重複封裝

    • 你的老後端已經有一套「業務 API」,現在又在 Tool 層再封裝一遍。

    • 如果別的專案也要用這些能力,又得再封裝一次(在它們自己的 Tool 裡)。

  2. 型別和驗證規則分散

    • 原本領域模型(訂單、工單、使用者)在後端已經有型別和驗證。

    • Tool 層又寫一遍 JSON Schema / Zod,很容易有一天出現「沒一起改」的問題。

  3. 權限邏輯散落在多個 Tool 中

    • 你可能在每個 Tool 的 execute 裡做「目前使用者是否有權限操作這個訂單」之類的檢查。

    • 這看起來沒錯,但當幾十個 Tool 都做類似的檢查時,想全局收緊/放寬某個權限就會很不好改。

這個階段,純 Tool 架構還完全能扛住,只是維護體驗開始變差。你會開始想: 能不能把「工具層」變成一個更獨立、可複用的東西,而不是緊緊綁死在這專案裡?

這就是往 MCP 那個方向邁出的第一小步,但我們先不急。

3. 第二層複雜度:呼叫環境從一個變多個

再往前走一步:工具不只給你目前這個 Web 應用用,還想給別的宿主用。

3.1 多個宿主的典型場景

你可能會有這樣的需求組合:

這三種宿主的共同點是: 都希望呼叫「同一套業務能力」

如果你只用 Vercel AI SDK 的 Tool,每個宿主大概要做同樣的事情:

長期看,這會變成典型的「一堆孤島」:

3.2 這其實是「缺少協定層」的問題

注意,這個問題已經超出了「某個 SDK 好不好用」的範疇,它更像是:

我們公司內部有沒有一個「統一的 AI 工具接入層」? 還是說,每個專案都自己搞一套?

Vercel AI SDK 做得很好的一件事是:在「模型呼叫」這一段幫你統整了不同廠商的介面。 但它不負責回答「工具怎麼對外暴露,怎麼被不同宿主共享」,這就剛好留給 MCP 一類協定發揮空間。

4. 第三層複雜度:跨團隊協作與對外發布

再往上一個維度,你不只是「內部複用」,而是想把工具當成「產品」發布出去。

4.1 你想做的變成「工具平台」

比如你團隊開發了一套非常好用的:

你會開始有這些訴求:

這時候,「只是寫一些 Vercel AI SDK Tool」已經不夠了:

Anthropic 提出的 Model Context Protocol(MCP),就是在這一層做文章:

你可以把它看成是:

5. 站在 AI SDK 視角,具體有哪些「邊界」?

回到 Vercel AI SDK 這個具體產品,結合官方文件與社群討論,可以把「只靠 Tool」的邊界/痛點總結為幾類。

5.1 Tool 的適用範圍主要在「應用內部」

AI SDK 官方定位是:幫助你在 Next.js、Node.js 等環境裡快速構建 AI 應用和 Agent。 它的 Tool 抽象也主要圍繞這個目標設計:

但它並不是一個「對外標準」:

5.2 生態角度:每家 SDK 都有自己的 Tool 抽象

不僅是 Vercel AI SDK,LangChain、LlamaIndex、各種自研 Agent 框架都有自己的「工具定義」方式。

如果你只停留在 SDK 層(包括 AI SDK 的 Tool),你會發現:

MCP 這種協定試圖解決的,就是這個「SDK 之上」的問題:讓工具變成一個可以跨框架、跨產品、跨公司的「公共語言」。

5.3 一些實踐反饋:當專案複雜時,你會自己補一層「平台」

社群裡已經有不少重度使用 Vercel AI SDK 的開發者在討論:

這本質上也是一種「協定化」趨勢: 只是這個協定目前還停留在「你所在組織內部」的層次,而 MCP 把它開放成了生態級標準。

6. 從 Tool 視角看 MCP:我們到底缺了哪一層?

我們可以用一個很實用的類比來總結一下前面的討論。

站在 Vercel AI SDK Tool 的視角看:

兩者不衝突,只是站的高度不同:

7. 為下一篇做鋪墊:我們會怎麼用 MCP?

這篇我們刻意沒有深入 MCP 的技術細節,只是從「Tool 用到頭了會怎樣」的角度,把它的動機講明白了:

下一篇,我們會集中火力聊 MCP 本身:

SHARE

分享

分享這篇文章。