三波浪潮:從聊天機器人到基礎設施

Cloudflare 用「三波浪潮」來描述 AI agent 的演進,而他們認為我們正站在第三波的起點。

1
第一波:聊天機器人 無狀態、被動、脆弱。每次對話從零開始,沒有記憶、沒有工具、無法採取行動。只能回答問題。
2
第二波:Coding Agent 有狀態、有工具、真正有能力。Claude Code、Codex、OpenClaw 等——可以讀程式碼、寫程式碼、執行、迭代。但跑在你的筆電上,一人一台,沒有持久性保證。
3
第三波:Agent 作為基礎設施 持久、分散式、結構安全、serverless。跑在網際網路上,能從故障中恢復,閒置時不花錢,透過架構而非行為來強制執行安全性。任何開發者都能為任意多個用戶部署。

前兩波證明了 LLM 配上正確的工具是通用機器,但所有這些 agent 都有一個共同的結構性限制:它們是個人的、本地的、短暫的。

為什麼現在的 Agent 需要基礎設施

當 Cloudflare 的工程師每天都在用 coding agent 工作,他們遇到了三面同一面牆:

只能在你的筆電或昂貴的 VPS 跑——沒有分享、沒有協作、沒有跨裝置的交接。閒置時一樣花錢——固定月費,不管 agent 是否在工作,擴展到整個團隊或公司就疊加得很快。需要手動設定和管理——安裝相依套件、管理更新、配置身份和密鑰。

關鍵洞察

傳統應用從一個實例服務多個用戶。但 agent 是一對一的——每個 agent 是獨一無二的實例,服務一個用戶,執行一個任務。如果一億個知識工作者各自使用 agent,即使是適度的並發,也需要數千萬個同時執行的 session 容量。以目前的容器成本,這是不可持續的。

解法是 Durable Objects:每個 agent 有自己的身份、持久狀態和在收到訊息時喚醒的能力。閒置時消耗零算力。當有事件發生時平台喚醒 agent,載入狀態,處理完再回去休眠。

VM / 容器Durable Objects
閒置成本全時計費
擴展方式手動配置容量自動,每個 agent 獨立
狀態儲存需外部資料庫內建 SQLite
崩潰恢復自建(進程管理、健康檢查)平台重啟,狀態保留
10,000 個 agent,各 1% 活躍時間10,000 個常開實例任何時刻約 100 個活躍

這改變了規模化運行 agent 的經濟模型。不再是「一個貴 agent 給一個進階用戶」,而是「每個客戶一個 agent」、「每個任務一個 agent」、「每個郵件執行緒一個 agent」。

Project Think 的核心 Primitives

Project Think 為 Agents SDK 新增了六個 primitives,可以單獨使用,也可以透過 Think 基礎類別全部接在一起。

runFiber()
持久執行

LLM 呼叫可能需要 30 秒,多輪 agent 迴圈更長。Fiber 是持久函式呼叫:在執行前登錄至 SQLite,可在任意點透過 stash() 建立檢查點,崩潰後透過 onFiberRecovered 恢復。

subAgent() via Facets
Sub-agent 協作

子 agent 是與父 agent 共置的 Durable Objects,各自有獨立的 SQLite 和執行上下文。用型別化 RPC 溝通,TypeScript 在編譯時捕捉誤用。

Session API(實驗性)
持久 Session

對話以樹狀結構儲存,每則訊息有 parent_id。支援分叉(探索另一條路但不丟失原始路徑)、非破壞性壓縮(摘要舊訊息而非刪除),以及 FTS5 全文搜尋。

@cloudflare/codemode
沙盒程式碼執行

LLM 寫一個完整程式來處理整個任務,而不是一連串的 tool call。Cloudflare MCP server 只暴露兩個工具(search + execute),使用約 1,000 tokens,相比原來的 117 萬 token 減少 99.9%

為什麼 Code 比 Tool Call 好

傳統 tool call 每次呼叫都要把結果塞回 context window,再決定下一步。100 個檔案就是 100 次來回。但 LLM 看過大量真實 TypeScript,讓它寫一個程式一次處理所有檔案,更快、更準、更省 token。

執行梯:五個層級,按需升級

Dynamic Workers 是沙盒:在毫秒內從 V8 isolate 啟動,比容器快 100 倍、記憶體效率高 100 倍。能力模型從「沒有任何權限」出發,再由開發者明確授予。

這個設計原則形成了一個執行梯,agent 按需升級:

Tier 0
Workspace(SQLite + R2) 持久虛擬檔案系統。讀、寫、編輯、搜尋、grep、diff。由 @cloudflare/shell 提供。
Tier 1
Dynamic Worker(無網路) LLM 生成的 JavaScript 跑在沙盒 isolate 中,無網路存取。由 @cloudflare/codemode 提供。
Tier 2
Dynamic Worker + npm @cloudflare/worker-bundler 從 registry 抓套件、用 esbuild 打包、載入 Dynamic Worker。Agent 寫 import { z } from "zod" 就直接能用。
Tier 3
Browser Run(無頭瀏覽器) 導航、點擊、擷取、截圖。適合服務尚未支援 MCP 或 API 的場景。
Tier 4
Cloudflare Sandbox(完整 OS) 配置工具鏈、repo、相依套件的沙盒環境。git clonenpm testcargo build,與 Workspace 雙向同步。

核心設計原則:agent 在 Tier 0 單獨使用就有用,每個層級是加法。用戶可以隨需求添加能力。

Think 基礎類別:五行代碼,完整 Agent

Think 是一個有主見的封裝,把所有 primitives 串接起來。它處理完整的對話生命週期:agentic 迴圈、訊息持久化、串流、工具執行、串流恢復、擴展。你只需專注於讓你的 agent 獨特的部分。

最小子類別如下:

最簡實作
import { Think } from "@cloudflare/think";
import { createWorkersAI } from "workers-ai-provider";

export class MyAgent extends Think<Env> {
  getModel() {
    return createWorkersAI({ binding: this.env.AI })(
      "@cf/moonshotai/kimi-k2.5"
    );
  }
}

就這樣。串流、持久化、abort/cancel、錯誤處理、可恢復串流、內建 workspace 檔案系統——全部包含。用 npx wrangler deploy 部署。

需要更多控制時,可以覆寫你關心的部分:getModel()getSystemPrompt()getTools()configureSession()。每個 turn 的鉤子也都可以接:beforeTurnbeforeToolCallafterToolCallonChatResponse

Context 管理

Think 用 context blocks 實現持久記憶——它們是系統提示中的結構化區塊,模型可以跨次 hibernation 讀取和更新。模型看到 MEMORY (462/1100 tokens),知道自己可以主動記住東西。隨著 context 增長,Think 透過非破壞性壓縮處理上限:摘要舊訊息而不刪除,完整歷史仍存在 SQLite。

自我擴展:Agent 在執行時為自己寫工具

Think 把程式碼執行推進了一步:agent 可以寫自己的擴展——TypeScript 程式,在 Dynamic Worker 中執行,自己宣告網路存取和 workspace 操作的權限。

自動生成的 GitHub 擴展宣告
{
  "name": "github",
  "description": "GitHub integration: PRs, issues, repos",
  "tools": ["create_pr", "list_issues", "review_pr"],
  "permissions": {
    "network": ["api.github.com"],
    "workspace": "read-write"
  }
}

Think 的 ExtensionManager 打包擴展(選擇性帶 npm 相依套件)、載入 Dynamic Worker、註冊新工具。擴展持久化在 DO 儲存中,在 hibernation 後存活。

30 秒前 agent 還沒有 github_create_pr 工具,現在有了。這是讓 agent 隨時間真正變得更有用的自我改進迴圈——不是透過 fine-tuning,而是透過可審計、可撤銷的程式碼。

OAO Studio 觀點

Project Think 最重要的不是任何單一 primitive,而是整個設計哲學的轉變:從「如何阻止這個東西做太多」到「我們確切想讓它能做什麼」。這才是讓 agent 作為基礎設施能夠運作的關鍵——不是更好的 prompt,而是更好的架構。

Project Think 目前處於實驗性預覽階段,API 穩定但仍在演化。Cloudflare 自己已在用它構建內部 background agent 基礎設施。

安裝
npm install @cloudflare/think agents ai @cloudflare/shell zod workers-ai-provider
← 返回 AI 知識庫