為什麼 Agent 需要版本控制原語
Cloudflare 的出發點很直接:未來五年人類寫出的程式碼,將超過過去所有程式設計歷史的總和。這不是誇張,而是當 agent 不需要睡覺、不需要開會、不受時區限制時,純粹可能發生的事。
問題是,現有的版本控制平台是為人類設計的。GitHub、GitLab 的 UI 假設用戶會打開瀏覽器、思考、輸入 commit message、等待、再 push。它們不是為了應對 10 倍、100 倍的 agent 流量而建造的——尤其是每個 agent session 都可能需要自己的 fork、自己的 branch、自己的歷史紀錄時。
但拋棄 Git、另起爐灶,會面臨一個根本問題:模型不認識新協定。
Git 是 Agent 已知的語言——大量真實 Git 使用案例存在於模型的訓練資料中。git clone、git commit、git merge、git rebase的正常路徑和邊緣案例,模型都懂。與其發明新協定然後面臨 bootstrap 問題——模型不認識它,必須從頭教——不如給 agent 一個帶憑證的 HTTPS Git remote URL,讓它像操作普通 Git repo 一樣工作。
Artifacts 的設計哲學就是這樣:Git 語意保持不變,基礎設施重新設計。API 優先、programmatic 建立、為大量短暫 session 設計的儲存架構,但 agent 面對的永遠是一個它已知的 Git remote URL。
的延遲
得到完整 Git remote
標準 HTTPS 協定
核心 API:三行程式碼,一個完整 Git 倉庫
Artifacts 的設計是徹底 API-first 的。你不需要登入任何控制台建立 repo,也不需要手動配置權限——一切透過程式碼完成。核心操作只有三個:create、import、fork。
// 建立 repo
const repo = await env.AGENT_REPOS.create(name)
// 把 token 和 remote 傳給 agent
return { repo.remote, repo.token }
# Agent 拿到 remote URL 和 token 後,標準 git 操作
git clone https://x:${TOKEN}@123def456abc.artifacts.cloudflare.net/git/repo-13194.git
# 所有標準 git 指令都可以用
git add .
git commit -m "agent checkpoint: refactored auth module"
git push origin main
除了從零建立,Artifacts 支援從任意 Git remote 匯入,並從任意 commit point fork 出隔離副本:
// 從 GitHub 匯入(帶完整 history)
const { remote, token } = await env.ARTIFACTS.import({
source: { url: "https://github.com/cloudflare/workers-sdk", branch: "main" },
target: { name: "workers-sdk" },
})
// Fork 成隔離的唯讀副本
// 適合 code review agent 或需要「不修改原始碼」的分析任務
const fork = await repo.fork("workers-sdk-review", { readOnly: true })
三個核心操作構成了 Artifacts 的完整原語集:
readOnly: true 讓 fork 的 repo 只能讀取,無法推送——適合 code review agent 或需要分析但不應修改程式碼的場景。
每個 repo 的 token 是獨立生成的,scope 只覆蓋那一個 repo。即使某個 agent session 的 token 外洩,攻擊者也只能存取那個 session 的 repo,無法橫向移動到其他 repo 或你的整個 namespace。
不只是源碼控制:Git 作為通用狀態持久化
Cloudflare 工程師在推廣 Artifacts 時分享了三個他們自己內部的使用案例——這三個案例都不是傳統意義上的「源碼版本控制」,卻讓人立刻看到 Git 語意作為通用狀態持久化工具的潛力。
任何需要 fork / revert / diff 語意的資料——不只是源碼。Artifacts 的 Git 語意適合任何需要追蹤狀態變化的資料:config、session prompt history、per-customer 上下文、實驗結果、生成的文件。只要你需要「回到過去某個時間點」或「對比兩個時間點的差異」,Git 就是對的工具,而 Artifacts 讓這個工具變成 programmatic API。
這三個案例的共同點是:它們利用的不是 Git 作為「源碼管理工具」的能力,而是 Git 作為有版本歷史的鍵值儲存的能力。這個視角轉換很重要——一旦你這樣看 Git,你會發現很多需要「版本化狀態」的問題都可以用它解決,而且不需要發明新的資料格式或協定。
ArtifactFS:超大 repo 的秒啟方案
Git clone 最大的問題是:等待時間隨 repo 大小線性成長。一個流行的 Web 框架 repo 大約 2.4GB,完整 clone 需要接近 2 分鐘。如果每次 sandbox 啟動都要等 2 分鐘,agent 的使用成本和延遲都會高到無法接受。
ArtifactFS 的設計思路是:Git clone,但非同步。把「取得 repo 結構讓 agent 開始工作」和「下載完整 file contents」這兩件事分開,讓 agent 在完整資料到齊之前就能啟動。
實際效果是顯著的:2.4GB 的大型 repo,啟動時間從約 120 秒降到 10-15 秒。
10,000 sandbox jobs / 月 × 節省 90–100 秒 = 節省約 2,778 sandbox 小時。這只是一個中型 CI/CD 使用場景的數字。對於大量使用 agent sandbox 的團隊,ArtifactFS 的節省效益會遠遠超過 Artifacts 的儲存費用。
ArtifactFS 可以與任何 Git remote 搭配使用,不只限於 Cloudflare Artifacts。GitHub repo、GitLab repo、自架 Gitea——只要是標準 HTTPS Git remote,ArtifactFS 都能加速它的 clone 過程。Artifacts 讓你能程式化建立和管理 repo,ArtifactFS 讓你能快速 clone 任何 repo,兩者可以獨立使用。
技術架構:Zig 編譯的 WASM Git Server
Artifacts 的技術決策從一開始就不是「用現有的 Git server 加層包裝」,而是從零開始在 Cloudflare Workers 和 Durable Objects 的約束下重新實作 Git。核心引擎是用 Zig 編譯成 WASM 的 Git 實作。
| 層 | 技術 | 職責 |
|---|---|---|
| Frontend Worker | Cloudflare Worker | 鑑權、metrics 收集、Durable Object 路由。所有 Git HTTP 請求的入口點,負責驗證 token 並把請求轉發給對應的 DO。 |
| Git Engine | Zig → WASM (~100KB) | SHA-1 計算、zlib 壓縮/解壓、delta encoding、git smart HTTP protocol(v1 和 v2)、shallow clone 支援。零外部相依,純 Zig,無 libc。 |
| 物件儲存 | DO SQLite | Git 物件(blob、tree、commit、tag)儲存在 Durable Object 的 SQLite 中。2MB 以上的大型物件自動分塊(chunked)儲存。 |
| Snapshot / Export | R2 | 大型 snapshot 和匯出操作存到 R2,避免 DO 的儲存限制。定期 compaction 也使用 R2 作為臨時儲存。 |
| Token 管理 | KV | auth token 追蹤,支援 token revocation。每個 repo 獨立 token,支援批量操作時的 token 生命週期管理。 |
選擇 Zig 有三個具體原因,每個都與 Workers 的執行環境有直接關係:
除了 WASM 架構,Artifacts 還支援幾個通常被忽略的 Git 功能:git-notes(讓 agent 附加 metadata 而不改變 commit hash、不污染 commit history)、v1 和 v2 協定(確保所有標準 git client 相容)、shallow clone(只取最近 N 個 commit 的 history,減少初始下載量)。
定價與路線圖
Artifacts 目前處於 Private Beta 階段,預計 5 月進入 Public Beta。定價結構相對簡單,分 operations 和 storage 兩個維度:
| 項目 | 單價 | 免費包含 |
|---|---|---|
| Operations | $0.15 / 1,000 次 | 首 10,000 次 / 月免費。Operations 包括 clone、push、pull、fork 等 Git 操作,以及 API 呼叫(create、import 等)。 |
| Storage | $0.50 / GB-月 | 首 1 GB 免費。Git 物件的壓縮儲存,delta encoding 減少實際佔用空間。 |
路線圖上,Cloudflare 公開承諾了四個方向的後續功能:
Artifacts 最讓人興奮的不是 Git API 本身,而是 session forking:把你卡住的 debug session 的 URL 發給同事,讓他從你停下的地方接手,包含完整的 prompt 歷史和檔案狀態。這把個人化、短暫的 agent session 轉成可協作、可時間旅行的工作空間。「把 Git repo URL 傳給同事」這個動作我們已經做了幾十年,現在它可以代表一個 agent session 的完整狀態——這個習慣可以直接遷移,零學習成本。Artifacts 最聰明的地方或許就是這個:讓工程師已有的直覺繼續工作,只是背後的基礎設施換了一套。
如果你正在建構需要持久化 agent 工作狀態、或需要讓 agent 之間共享和接力任務的系統,Artifacts Private Beta 報名在 developers.cloudflare.com/artifacts。5 月的 Public Beta 開放後,這個原語會讓很多現在需要複雜自訂解決方案的問題變成幾行程式碼。