將更多Agent框架引入Cloudflare,從Flue開始
Cloudflare開放Agents SDK基礎能力,供任何Agent框架構建。首個框架Flue基於Pi harness,利用Durable Objects實現持久執行、動態程式碼執行和持久化檔案系統,使Agent能夠在生產環境中可靠執行。
2026年是Agent harness(控制模型與外界互動的軟體,如Codex、Claude Code、OpenCode、Pi和Project Think)投入生產的一年。這些工具已經成熟到團隊將Agent部署為真正的、承載負載的基礎設施,而不僅僅是原型。
但構建能夠經受生產環境考驗的Agent是困難的。Cloudflare在開發第一方Agent harness Project Think的過程中積累了經驗,並發現每個Agent在雲端執行時都面臨一系列分散式系統問題:Agent中斷後如何自動、優雅地從斷點恢復,而不丟失上下文或浪費令牌?如何安全地執行不受信任的程式碼?如何讓Agent使用其訓練所用的工具?
Harness無法獨自解決這些問題。它們與狀態、儲存和計算緊密相關,因此依賴於Agent執行的平臺。Cloudflare將其從Project Think硬化為生產環境的經驗帶入Cloudflare Agents SDK作為基礎層,現在任何基於Agents SDK構建的harness都可以獲得持久執行、動態程式碼執行、持久化檔案系統和動態工作流等能力。
與此同時,在harness之上出現了一個新層——框架。像Flue這樣的框架為harness提供了專案結構、約定、整合和開發者體驗,使構建Agent更加高效。
為了解決擴充套件挑戰,出現了一個三層堆疊用於構建生產級AI:
- 框架(Flue):專案結構、約定、整合、CLI和開發者體驗。
- Harness(Pi、Project Think):代理迴圈,呼叫工具、讀取結果、管理上下文並持續執行直到任務完成。
- 執行時/平臺(Cloudflare Agents SDK):所有上層依賴的計算、狀態和儲存原語。
Agents SDK是底層,使持久執行等原語可供任何harness和框架使用。Flue是首個基於它構建的開源框架,由Astro團隊開發。
Flue 1.0 Beta本週釋出,基於Pi harness。其獨特之處在於宣告式方法:不編寫Agent執行指令碼,而是描述Agent知道什麼。定義Agent所需的上下文——模型、技能、沙箱和指令——然後它自主解決給定任務。沒有需要編寫的編排迴圈。例如,一個分診Agent可以在不到25行程式碼內攔截錯誤報告,在沙箱中重現並診斷問題。
Flue的開發者體驗:Agent不孤立存在,它們存在於使用者工作的地方,並與首選工具整合。Agent可以部署到Slack、GitHub、Linear或Discord,透過預配置的通道自動處理事件驗證和分發。Agent可以無頭執行,但@flue/react提供原生前端鉤子,將Agent的狀態、工具執行和即時訊息流式傳輸到前端應用,無需自定義即時管道。Flue還透過命令如flue add channel slack輕鬆新增整合,生成Markdown藍圖,供編碼Agent讀取、修改並乾淨地整合到程式碼庫中。
為生產而設計:將Agent從本地終端移到生產生態系統會引入傳統分散式系統故障。主機崩潰、LLM提供商的API超時和意外重啟會威脅到正在執行的Agent回合的短期記憶。Flue透過Durable Streams解決這個問題:執行歷史中的每個事件都被新增到只追加日誌中。透過將每個提示、工具響應和模型選擇處理為不可更改的賬本,Agent的狀態永遠不會丟失。如果程序死亡,另一個程序只需拾取日誌並從精確步驟繼續執行。
Flue是多雲框架。在Node.js上,每個Agent作為長期執行程序執行,可部署到任何VM或容器、GitHub Actions或現有伺服器。當針對Cloudflare時,每個Agent成為Durable Object,自動擴充套件至所需數量,具有隔離儲存和計算。Flue Agent部署到Cloudflare後,透過Agents SDK的runFiber()、stash()和onFiberRecovered()方法獲得持久執行。Flue還使用@cloudflare/codemode和@cloudflare/shell進行沙箱化程式碼執行。
Flue的Cloudflare目標之所以有效,是因為它清晰對映到Agents SDK中的核心原語。每個Agent harness都需要持久執行。Agent回合不是單個請求。模型流式傳輸令牌、呼叫工具、等待結果、可能請求人類批准或委派給子Agent。序列可能需要數秒或數分鐘,程序隨時可能中斷。Fiber透過Durable Object內部的本地檢查點機制解決這個問題。runFiber()在Agent回合工作開始前記錄進度,並使用stash()檢查點。當新Agent例項在中斷後啟動時,onFiberRecovered()傳遞最後一個檢查點,使Agent知道回合被中斷以及中斷位置,並決定如何繼續。
執行程式碼比用工具過載Agent更好。Agent harness透過工具給模型訪問外部世界,但工具表面增長快,模型在選擇正確工具時表現變差。更好的模式是給模型一個執行程式碼的工具。模型編寫TypeScript函式呼叫所需API,harness執行它。問題在於程式碼在哪裡執行。要安全執行LLM生成的程式碼,需要沙箱。但典型沙箱對於每次工具呼叫可能緩慢、昂貴且低效。Agents SDK提供@cloudflare/codemode,封裝Dynamic Workers,在每個Worker隔離中執行LLM生成的程式碼,僅使用提供的繫結。Code Mode為每個程式碼片段建立新的Dynamic Worker,執行後丟棄。隔離啟動時間低於10ms,每次載入成本0.002美元,比每次啟動容器更快更便宜。Flue在Cloudflare目標上使用@cloudflare/codemode驅動程式碼工具。
大多數工作空間任務不需要完整容器。Agent harness通常需要檔案系統來讀取檔案、寫入輸出、搜尋程式碼和理解差異。編碼Agent尤其依賴檔案系統。但如果harness在無伺服器環境中執行,如何獲得跨執行持久化的檔案系統?通常答案是容器,但對於Agent主要進行的文本操作來說成本高昂。@cloudflare/shell在Durable Object內部提供持久化虛擬檔案系統,由SQLite支援。它提供型別化檔案操作——讀、寫、編輯、搜尋、grep、diff——Agent harness可作為工具使用。Flue Agent在Cloudflare目標上針對工作空間虛擬檔案狀態API編寫JavaScript。透過在Durable Object內執行更多操作,Agent受益於隔離模型的高效執行,完全避免容器開銷。對於需要完整作業系統(如npm install、git或編譯器)的Agent,Cloudflare Containers提供支援。Cloudflare還在構建@cloudflare/workspace,使給定Durable Object的虛擬檔案系統與容器的檔案系統保持同步,實現從輕量級Worker到Linux環境的無縫過渡。
動態工作流:讓Agent編寫自己的工作流以一致地重複任務。當Agent需要執行多步驟管道時,harness無法獨自提供持久多步執行。需要平臺持久化每一步、重試失敗並在中斷後恢復。Claude Code最近推出了動態工作流,Claude在執行時編寫JavaScript指令碼,將工作分派給數十個子Agent,執行時持久執行。@cloudflare/dynamic-workflows提供類似能力,允許Agent動態定義工作流。
Cloudflare Agents SDK提供了構建生產級Agent所需的基礎,Flue展示瞭如何將之轉化為實際框架。隨著更多框架和harness基於Agents SDK構建,Agent部署將變得更加可靠和高效。