Cloudflare Agents 要升級 AI SDK 7 嗎?先對齊 ai 與 @ai-sdk/react 版本
Cloudflare 在 2026-07-23 的 AI changelog 宣布,agents、@cloudflare/ai-chat、@cloudflare/codemode 與 @cloudflare/think 現在同時支援 AI SDK v6 與 v7。這代表既有專案不必為了更新 Cloudflare 套件而立刻重寫 Agents API,但升級依賴時要先把 AI SDK 的 major 版本配對好。
直接答案是:若維持 AI SDK v6,就搭配 @ai-sdk/react v3;若要改用 v7,就搭配 @ai-sdk/react v4。先選定一組 major,再一起更新相關套件,最後回歸串流、tool call、審批和前端訊息顯示。
先確認目前的版本組合
Cloudflare 支援的 peer 版本可以先整理成這張表:
| AI SDK | React 整合 | 適合的狀態 |
|---|---|---|
ai@^6 | @ai-sdk/react@^3 | 先維持既有 v6,僅更新 Cloudflare Agents 套件 |
ai@^7 | @ai-sdk/react@^4 | 準備採用 AI SDK v7 的新專案或升級路徑 |
先在專案根目錄檢查實際解析到的版本,不要只看 package.json 的範圍:
pnpm list ai @ai-sdk/react agents @cloudflare/ai-chat @cloudflare/codemode @cloudflare/think --depth 0如果輸出同時出現 ai@7 和 @ai-sdk/react@3,或反過來出現 v6 與 v4,就先修正版本組合,再處理其他 TypeScript 或 API 錯誤。peer dependency 警告不一定會立即讓建置失敗,但常常會在 hook 型別、訊息格式或串流事件處理時才暴露。
維持 v6 時怎麼升級 Cloudflare 套件
既有專案若還沒有要改用 AI SDK v7,可以保留 v6,並把 Cloudflare 套件更新到支援雙版本的版本:
pnpm add agents@latest @cloudflare/ai-chat@latest \ @cloudflare/codemode@latest @cloudflare/think@latest \ ai@^6 @ai-sdk/react@^3這條指令的重點不是追求所有套件都用相同版號,而是讓 ai 和 @ai-sdk/react 維持同一個 major。更新後應檢查 lockfile 是否把其他 provider、UI adapter 或自訂工具的 peer dependency 一起改掉。
如果專案已經有一篇 Cloudflare Agents 的 MCP SDK v2 遷移筆記,這次可以把 MCP 端點回歸和 AI SDK 升級分成兩個變更。兩者同時改動時,發生 tool call 錯誤會很難判斷是 transport、schema 還是 AI SDK 版本造成。
要升級 v7 時使用成對的指令
Cloudflare 官方提供的 v7 安裝組合如下,使用 pnpm 時可以直接寫成:
pnpm add agents@latest @cloudflare/ai-chat@latest \ @cloudflare/codemode@latest @cloudflare/think@latest \ ai@^7 @ai-sdk/react@^4完成後先檢查依賴樹:
pnpm list ai @ai-sdk/react agents @cloudflare/ai-chat @cloudflare/codemode @cloudflare/think --depth 0pnpm install --lockfile-only不要為了消除一個警告就把所有套件鎖成完全相同的版本號。Cloudflare 套件和 AI SDK 的發布節奏不同,應以 peer dependency 的 major 配對、lockfile 的可重現性與實際回歸結果為準。
Think:先測串流和 React 訊息層
@cloudflare/think 的官方文件明確列出 v6、v7 的配對方式;升級 v7 後,最容易被忽略的是 server 端的串流事件與瀏覽器端 @ai-sdk/react hook 是否仍以相同格式接收訊息。
至少建立一條最小回歸流程:
- 使用同一個 model 送出一般文字問題。
- 讓 model 呼叫一個有輸入 schema 的 tool,確認參數與結果都能回到對話。
- 中途刷新或重新連線,確認訊息不會重複或遺失。
- 檢查 Durable Object 儲存的訊息與前端顯示順序一致。
- 用瀏覽器的 Network 和 console 確認串流結束事件沒有變成錯誤。
如果只是更新依賴但沒有真的跑過瀏覽器端流程,TypeScript 通過不代表聊天體驗沒有回歸問題。Think 的價值在於替 agent 處理持久化、串流和工具迴圈,因此這些才是升級後應優先驗證的邊界。
Code Mode:工具執行與審批要分開測
Code Mode 的 AI SDK 整合使用 @cloudflare/codemode/ai 把工具集合轉成 AI SDK tool。最小的 stateless 例子可以這樣保留在測試 Worker:
import { DynamicWorkerExecutor } from '@cloudflare/codemode'import { createCodeTool } from '@cloudflare/codemode/ai'import { generateText, stepCountIs } from 'ai'
const executor = new DynamicWorkerExecutor({ loader: env.LOADER })const codemode = createCodeTool({ tools, executor })
const result = await generateText({ model, prompt: '查詢目前狀態', tools: { codemode }, stopWhen: stepCountIs(5),})升級時不要只測 generateText() 有沒有回傳文字,還要確認:
| 測試邊界 | 要觀察什麼 |
|---|---|
| tool schema | 必填參數、型別錯誤和執行結果是否一致 |
| sandbox executor | Worker Loader binding、權限和逾時是否正常 |
streamText() | 串流中的 tool call、finish event 和錯誤是否可讀 |
needsApproval | stateless 路徑是否正確排除需要審批的工具,durable 路徑是否會暫停並恢復 |
尤其要注意,官方 Code Mode 文件把 createCodeTool() 和 ToolSetConnector 的審批行為分開說明。不要把 stateless 工具執行時的「工具被過濾」誤認成 v7 破壞性變更;先確認你使用的整合模式。
升級失敗時先看哪一層
可以按以下順序縮小問題:
- peer dependency:確認
ai與@ai-sdk/react是 v6/v3 或 v7/v4 的合法組合。 - 型別與建置:檢查 import、tool schema 和 provider 的型別錯誤。
- server 串流:確認 Worker 回應、WebSocket 或 stream event 沒有被轉成未處理例外。
- client 渲染:確認 hook 使用的訊息型別、tool part 和 loading 狀態一致。
- 平台行為:最後才檢查 Durable Object、Worker binding 或 Code Mode Loader。
這樣可以把套件版本問題和 Cloudflare 執行環境問題分開。如果你同時在升級 Workers 的 compatibility_date,也應把它獨立成另一個變更,避免一次引入兩組 runtime 差異。
結論:先選 major,再做功能回歸
這次更新的重點是「雙版本相容」,不是要求所有 Cloudflare Agents 專案立刻改用 AI SDK v7。保留 v6 時使用 ai@^6 加 @ai-sdk/react@^3;升級 v7 時使用 ai@^7 加 @ai-sdk/react@^4,並一起檢查 Think、Code Mode、串流和工具審批。只要把版本配對與回歸範圍寫進升級清單,換 major 就不必變成一次盲目的全站重寫。
常見問題
Q: 改用 AI SDK v7 需要重寫 Cloudflare Agents API 嗎?
A: Cloudflare 的公告表示,採用 v7 不需要改動既有 Cloudflare Agents API;仍要依專案實際使用的 AI SDK、React 整合和 provider 檢查 API 變更與型別錯誤。
Q: 只升級 ai,保留舊的 @ai-sdk/react 可以嗎?
A: 不建議。Cloudflare 文件要求 v6 搭配 React v3、v7 搭配 React v4。先讓兩者 major 對齊,再處理其他套件的 peer dependency。
Q: Think 和 Code Mode 都要一起升級嗎?
A: 不一定要同時改功能,但若它們是專案的直接依賴,就應一起確認支援的 peer 範圍,並分別回歸串流、tool call、sandbox 與審批流程。
參考資料:
Cloudflare AI Changelog:Agents SDK packages support AI SDK v6 and v7
回報錯字、失效連結,或告訴我你想看的延伸主題。