--- tags: [零件架構, 部署, 架構決策] gloss: 平台內建零件 WASM 已 bundle 進各自 Worker binary,不從 R2 動態讀。R2 只在 Phase 5(用戶自製零件)啟用。 --- # R2 用途 — 平台零件不從 R2 讀 ← [[decisions/00-INDEX]] **來源**:`system-dev/wiki/decisions-summary.md`(R2 的用途)、`.claude/rules/03-component-architecture.md §2` **最後更新**:2026-06-27 ## 摘要 平台內建零件的 WASM 文件在部署時已 bundle 進各自 Worker 的 binary(透過 codeload tarball);R2 存儲的機制只為 Phase 5(用戶上傳自製零件)保留。 ## 重點 - 平台零件 = 獨立 Worker,已部署完成,走 HTTP URL 呼叫;沒有 R2 動態載入那一步。 - WASM 文件的位置:`registry/components/{name}/` 是原始碼,`.component-builds/{name}/component.wasm` 是編譯產物,commit 進 repo 後作為 codeload 部署來源。 - R2 存儲的唯一用途:Phase 5 啟用時,用戶透過 `acr component submit` 上傳自製 .wasm → R2 存儲 → runtime 動態執行(當時 API 才支援 `GET /user/{id}/components/{name}/wasm`)。 - 當前「怎麼從 R2 取 WASM」是典型誤問——错误假设的标志。 ## 實體 - **平台內建零件**(platform components)— 由 arcrun 官方維護、已編譯成 .wasm、獨立部署成 Worker 的零件(gmail、telegram、http_request 等)。 - **R2**(Cloudflare R2)— 對象存儲服務,當前未用於平台零件;Phase 5 起用於存放用戶自製零件。 - **codeload 部署**(tarball deployment)— 透過 GitHub codeload tarball 或 git clone + local build,把平台零件連同依賴打進 Worker binary 的部署方式。 - **用戶自製零件**(user-submitted components)— Phase 5 後用戶上傳的自定義 WASM 零件(動態來源)。 ## 關聯 ### 內文知識關係 - 平台內建零件 >> 不從 >> R2 - R2 >> 保留用於 >> 用戶自製零件 - 平台內建零件 >> 透過 codeload 部署 >> 獨立 Worker ### 卡片關係 - [[R2用途-平台零件不從R2讀]] >> 架構前提來自 >> [[service-binding-vs-cypher-binding]]