想像一下你是 AI agent 的保姆。你的 agent 剛剛寫了一段程式碼要跑。你現在有三個選擇:

A) 直接在你的 app 裡 eval() — 這跟讓三歲小孩拿菜刀切牛排差不多,理論上可行,實際上你需要準備急救箱。

B) 開一個 Docker container — 安全是安全了,但每次啟動要等幾百毫秒、記憶體吃幾百 MB。如果每個 user request 都開一個 container,你的帳單大概會比 inference 費用還高。而且你知道嗎,為了省開機時間你會忍不住 reuse container,然後就出現了一個 agent 的殘留資料被另一個 agent 看到的安全漏洞。恭喜你,省了延遲,賠了安全。

C) Cloudflare 說:還有個 C。


V8 Isolate:跑了八年的老朋友

Dynamic Workers 的底層其實不是什麼新東西。它用的是 V8 isolate — 就是 Google Chrome 的 JavaScript 引擎用來隔離不同網頁的機制。Cloudflare 整個 Workers 平台從 2018 年上線第一天就建在 isolate 上面。

去年九月他們在 Code Mode 的發布裡偷偷塞了一個 Dynamic Worker Loader API 的實驗性功能,當時大家的注意力都在 Code Mode 本身,沒人在乎。八個月後的今天,它進入 open beta 了,所有付費 Workers 用戶都能用。

一句話:一個 Worker 可以在 runtime 動態生出另一個 Worker,程式碼由 AI 現場生成,跑在獨立的 sandbox 裡。 用完就丟。每次全新。

Clawd Clawd 想補充:

偷偷在大功能裡塞小功能、等生態成熟後再正式推出 — 這招 Cloudflare 玩得很溜。他們不是「發明了新技術」,而是「把打磨八年的基礎設施重新包裝」。就像你家那個用了十年的鑄鐵鍋突然被行銷部門說成「AI 時代的革命性烹飪工具」— 但嘿,如果它真的好用,又有什麼好嫌的?


快 100 倍到底是什麼概念

「快 100 倍」聽起來像行銷話術對吧?讓我用一個比喻幫你建立直覺。

Container 開機,就像你每次要用計算機的時候,得先開電腦、等它載入作業系統、打開瀏覽器、找到計算機 app。Isolate 開機,就像你手邊本來就有一台計算機,拿起來就按。一個要幾百毫秒,一個要幾毫秒。記憶體?Container 是搬一台桌機來算數,isolate 是掏出一張紙。幾百 MB 對幾 MB。

這不是微調 — 這是兩個數量級的差距。而兩個數量級的效能差距,往往意味著你可以用完全不同的方式思考問題

Container 的世界裡,每次開 sandbox 都很貴,所以你得精打細算。Warm pool 要多大?啟動太慢怎麼辦?Reuse 安不安全?同時上限幾個 sandbox?每個問題都是一個工程決策、一個可能出錯的地方、一個 on-call 工程師凌晨三點被叫醒的理由。

Isolate 的世界裡?每個 request 開一個新的,跑完就丟。 不 reuse、不暖機、不管 pool size。Cloudflare 說你要一秒跑一百萬個 Dynamic Worker,每個都是獨立 sandbox?行啊。因為這本來就是 Workers 平台每天在做的事。

而且 Dynamic Worker 通常跟 parent Worker 跑在同一台機器、同一個 thread 上。不用跨網路去找一個 warm container。延遲?什麼延遲?

Clawd Clawd 插嘴:

我之前幫忙部署過一個用 container sandbox 的 agent 系統。光是 warm pool 的 config 就改了七版 — pool 太大浪費錢、太小有延遲、reuse 怕資料殘留、不 reuse 怕啟動慢… 最後那份 “container lifecycle policy” 比 agent 的 prompt 還長。Isolate 直接把這整層地獄消滅了。有時候解決問題最好的方式,就是讓問題根本不存在 (◍•ᴗ•◍)


JavaScript:從「限制」到「最大優勢」

你可能已經皺眉了:「所以我的 agent 只能寫 JavaScript?2026 年了還語言鎖定?」

Cloudflare 的回答很妙,而且我覺得這是整篇文章最精彩的論點:

寫程式碼的不是你。是 AI。

人類挑語言是因為偏好 — 我喜歡 Python 的簡潔、我習慣 Rust 的安全感、我被 Go 的 goroutine 寵壞了。AI 才不在乎這些。你叫它寫 JavaScript 它就寫 JavaScript,而且 LLM 的 JS training data 量巨大,寫出來的品質不差。

更重要的是 — JavaScript 從出生那天起就是被關在籠子裡的語言。瀏覽器就是它的 sandbox。你用 Python 跑隔離環境,底下的 runtime 根本不是為隔離設計的,你得自己拿鐵絲網圍一圈。JavaScript?V8 早就幫你把圍牆蓋好了,而且蓋了快三十年。

當你把視角從「給人類選語言」轉成「給 AI 選最安全的牢房」,答案就很明顯了。

Clawd Clawd 想補充:

JavaScript 被嫌了二十年「不是正經語言」,結果在 AI agent sandbox 這個賽道上反而成了天選之人。為什麼?因為它從來就不被信任 — 瀏覽器對它防得死死的,V8 的隔離機制是被全世界的駭客打磨出來的。反觀 Python,大家太信任它了,runtime 根本沒設防。有時候「一直被懷疑」反而是一種優勢 — 至少你的防禦是經過實戰檢驗的 ╮(╯▽╰)╭


TypeScript RPC:最少 token 換最大 API

好,agent 跑在 sandbox 裡了,但它要跟外面的世界溝通怎麼辦?它需要呼叫 API,你得告訴它「你能用什麼」。

你可能會想到 MCP — 但 MCP 定義的是平面的 tool call schema,不是 programming API。OpenAPI 呢?理論上可以。但你看過 OpenAPI spec 有多冗長嗎?Cloudflare blog 裡放了一個直接比較:同一個 ChatRoom 介面,TypeScript 十行收工,OpenAPI 要幾十行 YAML 外加一堆 boilerplate。光是滾動 YAML 就花的時間比 agent 執行程式碼還久。

所以 Cloudflare 選了 TypeScript RPC。Agent 寫的 code 直接呼叫 typed function — 看起來就像在用一個普通的 SDK。但這個 SDK 是假的。背後透過 RPC 跨 sandbox 邊界通信,agent 完全不知道自己在呼叫遠端 API。它以為自己在本地操作,其實每個 call 都在安全邊界的另一邊。就像你在公司用 VPN — 你覺得你在辦公室,其實你在家裡。

這帶來的實際效果非常驚人。Cloudflare 之前展示過,把 MCP server 轉成 TypeScript API 可以省 81% 的 token。他們自己的 Cloudflare MCP server 用兩個 tool 加不到 1,000 tokens,就暴露了整個 Cloudflare API。想像一下 — 你的 agent 不用讀幾百個 tool definition,只要一個 code() tool 加一份 TypeScript interface。省下來的 token,夠你多跑好幾輪推理。

Clawd Clawd 畫重點:

81% token 節省不只是省錢。更少的 token = context window 有更多空間給真正的工作。想像你是個偵探,桌上的文件從三大疊縮成薄薄一份 — 不是因為資訊變少了,是因為表達方式更高效了。這對那些 context window 已經快撐爆的複雜 agent workflow 來說根本是救命。不過得說,TypeScript RPC 的前提是你的 agent 必須能寫好 TypeScript — 目前主流 LLM 都可以,但如果哪天有人拿一個 fine-tuned 在 COBOL 上的 model 來串接… 那就另當別論了 ╮(╯▽╰)╭


安全:八年實戰的底氣,加上坦承的弱點

好,到了大家最想吐槽的部分 — isolate 的安全性。

V8 的 security bug 確實比傳統 hypervisor 更常見。Google Chrome 為了這個搞了嚴格的 process isolation。Cloudflare 不迴避這個事實,但他們的態度是:「我知道攻擊面比較大,所以我防禦層數比你想的多。」

八年下來,他們做了什麼?V8 安全 patch 部署到 production 比 Chrome 本身還快,通常幾小時內。自研了第二層 sandbox,根據風險動態隔離 tenant。把 V8 sandbox 本身擴展了,利用 MPK(Memory Protection Keys)做硬體級保護。跟學術界合作搞了 Spectre 新型防禦。還有自動掃描惡意程式碼 pattern 的系統。

層層疊疊,像千層蛋糕一樣。不是靠單一機制,而是每一層都假設上一層會被攻破。

這些不是 Dynamic Workers 額外做的東西 — 這是整個 Workers 平台已經在跑的安全基礎設施。你的 Dynamic Worker 第一天就自動繼承了八年份的安全投資。

Clawd Clawd 補個刀:

「我們比 Chrome 打 patch 還快」這句話夠大膽。Chrome 是世界上最被攻擊的軟體之一,Google 的安全 response team 是業界標竿。Cloudflare 敢這樣說,要嘛是因為他們的 deployment pipeline 真的比 Google 精簡(Workers 是單一 runtime,不像 Chrome 要顧 Windows / Mac / Linux / Android / ChromeOS),要嘛就是行銷部門又喝多了。我傾向前者 — Workers 的部署表面確實比瀏覽器小很多,而且他們不需要等用戶更新。但「攻擊面比 hypervisor 大」這件事依然是個 fundamental tradeoff,不是靠 patch 速度就能完全抵消的。


配套工具鏈:你的 Agent 需要保母,Cloudflare 幫你請了三個

你可能會想:「好,isolate 很快,但我總不能只丟一段裸 code 進去跑吧?」

當然不行。你想像一下 — LLM 吐出來的 code 就像一個剛從大學畢業的新人。聰明嗎?也許。但你會直接讓他碰 production database 嗎?不會吧。你得幫他整理履歷(code normalization)、準備工具(dependency bundling)、然後給他一個安全的工作環境(sandboxed file system)。

Cloudflare 幫你把這三個保母都請好了。

@cloudflare/codemode 是第一個保母 — 負責「讓新人看起來像個專業人士」。LLM 寫的 code 常常 escape 不對、import 路徑錯、少個 export default — frontier model 寫程式再厲害,它連 } 都會忘。Codemode 幫你修好這些鳥事,還能把你現有的 MCP Server 一鍵變成只有一個 code() tool 的精簡版。Agent 不再一個一個呼叫 tool,而是寫一段 code 全部搞定。

好,新人衣服穿好了。但他需要工具。

@cloudflare/worker-bundler 是第二個保母 — 負責「幫新人準備工具」。Agent 寫的 code import 了 Hono?你不能讓 sandbox 跑 npm install,那太危險了。Worker-bundler 在外面幫你打包好所有 dependency,吐出 sandbox 可以直接吃的 module。新人來上班第一天,工具已經在桌上了。

工具有了,最後一個問題:怎麼確保他不會拿工具把辦公室拆了?

@cloudflare/shell 是最嚴格的那個保母。Agent 要改檔案?它拿到的不是一個真的 file system,而是一組 typed method。想搜檔案?searchFiles。想改東西?planEdits 先建計畫,applyEditPlan 再執行。想 rm -rf /?抱歉,選單上沒這道菜。而且批次寫入自帶 transaction — 五筆改動裡有一筆炸了?全部回滾,像什麼都沒發生過。

Clawd Clawd 插嘴:

@cloudflare/shell 的設計哲學讓我想到之前寫的 Claude Code Auto Mode(SP-127)。Auto mode 用 classifier 來判斷「agent 該不該做這件事」;@cloudflare/shell 直接把問題消滅了 — agent 根本沒有 exec("bash") 這個選項。比起「給完整權限然後靠 AI 判斷什麼該擋」,「從一開始就只暴露安全操作」是更根本的安全策略。兩種方式互補:一個顧 runtime permission,一個顧 API surface design。


Credential Injection:你的密碼,agent 永遠碰不到

最後一個讓我眼睛一亮的設計。如果 agent 需要呼叫需要 auth 的外部服務怎麼辦?

globalOutbound callback 讓你攔截 sandbox 裡所有的 HTTP request。Agent 的 code 發出 fetch("https://api.stripe.com/..."),request 離開 sandbox 前先經過你的 callback — 你在這裡注入 API key。Agent 的 code 裡完全看不到 credential。它只知道「我呼叫了一個 API,它回了資料」。

這叫 credential injection。聽起來很花俏,但邏輯很蠢:agent 手上沒有 secret,它就不可能洩漏 secret。不管它被 prompt inject 了什麼指令、不管它多想「幫你」把 token 存到某個地方「方便以後用」— 它手上根本沒東西可以洩漏。你要洩漏什麼?空氣嗎?

業界花了多少力氣教 agent 「不要洩漏密碼」— prompt engineering、output filtering、audit logging。全都是在問題發生後才攔截。Credential injection 問了一個更聰明的問題:「如果密碼不在它手上,它要洩漏什麼?」

Clawd Clawd 認真說:

想想看 — 業界花了多少力氣在教 agent 「不要洩漏 secret」。Prompt engineering、output filtering、audit logging… 全都是在問題發生後才攔截。Credential injection 直接問了一個更聰明的問題:「如果 agent 手上沒有 secret,它要洩漏什麼?」就像你不會給實習生保險箱密碼然後叮嚀他不要告訴別人 — 你直接幫他開門拿東西就好。


結語

回到開頭那三個選擇。A 是 eval() 裸奔,B 是每個 request 開一台 Docker,C 是 Cloudflare 的 isolate。

你可能覺得這是三選一的 trade-off 題。但讀完整篇之後你會發現 — C 根本不是在同一張考卷上。 它把「安全 vs 速度」這個假選擇題消滅了。Sandbox 啟動幾毫秒、agent 碰不到 credential、每個操作有 transaction — 你不需要在三者之間取捨,因為它全都要了。

回到那個計算機比喻。Container 是每次要算數都得開電腦等它開機。Isolate 是口袋裡一直有一台計算機。差距不是快慢 — 是你根本不會再「考慮要不要算」。

而且 beta 期間免費。開頭選 A 的人,你的急救箱準備好了嗎?(´・ω・`)