feat: 薄殼原則落地 + seed 下沉 API + MCP 進主庫 + 部署一致性
壓測四橫向問題修正(docs 壓測報告):
① 薄殼原則成鐵律:能力長在 API,CLI/MCP/lib 只暴露
- seed 下沉成 API 行為:cypher-executor POST /init/seed(一次灌 API+auth recipe),
種子資料移到 server src/lib/api-recipe-seeds.ts,CLI 改薄殼一次呼叫
- 解除 deployFullyOk 連坐 + init 補 seed auth recipe + update 補 seed/全 KV
- registry SUBMISSIONS_KV 補進 REQUIRED_KV_NAMESPACES(修 20/21)
② MCP 統一帳號來源(單一 remote MCP + .env 切 MCP URL)
- MCP 從 sibling repo 搬進 arcrun/mcp/(remote Worker,route 改 mcp.arcrun.dev)
- config 加 mcp_url 三層解析 + getMcpUrl + DEFAULT_MCP_URL
- 新增 acr mcp-setup:依 config 寫專案 .mcp.json(接案切資料夾自動切 MCP)
- acr --version 改動態讀 package.json(根治漂移)
③ Deploy 一致性
- tests/release.feature + scripts/check-release.sh
- local-deploy.sh:CLI npm publish + auto patch bump + CHANGELOG
- local-deploy.sh bash 3.2 相容修正(mapfile / 空陣列 set -u)
- builtins/pnpm-lock.yaml
④ README self-hosted 同步現況(移除 R2 殘留、加 flag/env、多帳號)
CLI bump → 1.3.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -95,16 +95,17 @@ arcrun 是 self-hosted 開源:你用**自己的** Cloudflare 帳號跑整套
|
||||
|
||||
**Account ID**:登入後在 [dash.cloudflare.com](https://dash.cloudflare.com) 隨便進一個區段,網址列會是 `dash.cloudflare.com/<這串就是 Account ID>`;或在右側欄 "Account ID" 直接複製。
|
||||
|
||||
**API Token**:到 [My Profile → API Tokens](https://dash.cloudflare.com/profile/api-tokens) → **Create Token** → **Create Custom Token**,給以下權限(CLI 用它建 KV / 部署 Worker):
|
||||
**API Token**:到 [My Profile → API Tokens](https://dash.cloudflare.com/profile/api-tokens) → **Create Token** → **Create Custom Token**,給以下**兩個**權限(CLI 用它建 KV / 部署 Worker):
|
||||
|
||||
| 類型 | 項目 | 權限 |
|
||||
|---|---|---|
|
||||
| Account | Workers Scripts | Edit |
|
||||
| Account | Workers KV Storage | Edit |
|
||||
| Account | Workers R2 Storage | Edit |
|
||||
|
||||
建好後**複製那串 token**(只會顯示一次)。CLI 不代管你的憑證——你自己建、自己持有。
|
||||
|
||||
> 只需要這兩個權限。**不需要 R2、不需要綁信用卡**——arcrun self-hosted 只用 Workers + KV,兩者都在 Cloudflare 免費額度。
|
||||
|
||||
### 2. 安裝 Cloudflare CLI(wrangler)
|
||||
|
||||
CLI 部署 Worker 時會用到 wrangler。先裝它:
|
||||
@@ -129,16 +130,27 @@ CLI 會問你 **Account ID** 和 **API Token**(步驟 1 取得的),貼上
|
||||
|
||||
```
|
||||
→ 驗證 Cloudflare 憑證... ✓
|
||||
→ KV WEBHOOKS... ✓ (建 7 個 KV namespace,已存在則重用)
|
||||
→ R2 WASM_BUCKET... ✓
|
||||
→ KV WEBHOOKS... ✓ (建 KV namespace,已存在則重用)
|
||||
→ workers.dev subdomain: your-account
|
||||
→ 下載部署物 + 部署 Worker(從 GitHub 拉預編譯 wasm,用你的 CF token 部署)...
|
||||
✓ 部署完成:19 個 Worker 全部成功
|
||||
→ seed 10 個 API recipe... ✓
|
||||
✓ Cloudflare 資源就緒(7 KV + R2)
|
||||
✓ 部署完成:所有 Worker 全部成功
|
||||
→ seed recipe(API recipe + auth recipe,由 API 灌入)... ✓
|
||||
✓ Cloudflare 資源就緒(KV 全建妥,免費額度即可,無需綁卡)
|
||||
✓ 設定寫入 ~/.arcrun/config.yaml
|
||||
```
|
||||
|
||||
**非互動 / 給 AI、CI 用**:不想被問答打斷,可用 flag 或環境變數一次帶入:
|
||||
|
||||
```bash
|
||||
# flag(優先序最高)
|
||||
acr init --self-hosted --account-id <你的 Account ID> --api-token <你的 API Token>
|
||||
|
||||
# 或環境變數(與 wrangler 慣例一致)
|
||||
export CLOUDFLARE_ACCOUNT_ID=<你的 Account ID>
|
||||
export CLOUDFLARE_API_TOKEN=<你的 API Token>
|
||||
acr init --self-hosted
|
||||
```
|
||||
|
||||
你不需要懂 git、不需要懂 tinygo、不需要手動建任何東西——預編譯好的零件(`.wasm`)直接從 GitHub 下載,用**你自己的** CF token 部署到**你的**帳號。
|
||||
|
||||
**最後一步(手動,CLI 會印提示)**:設定加密金鑰 secret。這一步刻意不自動化(密鑰不進工具流程):
|
||||
@@ -155,6 +167,14 @@ wrangler secret put ENCRYPTION_KEY --name arcrun-auth-service-account
|
||||
|
||||
> 想先不碰 Cloudflare、純在本機感受語法?`acr init --local` 然後直接跳到下面「寫一個工作流」。
|
||||
|
||||
### 多帳號 / 接案(同一台電腦連不同 CF 帳號)
|
||||
|
||||
設定採三層,優先序 **環境變數 > 專案層 `.arcrun.yaml` > 全域 `~/.arcrun/config.yaml`**(仿 `git config`):
|
||||
|
||||
- **自己的專案**:什麼都不放 → 自動用全域(你自己的 CF)。
|
||||
- **幫客戶接案**:在客戶資料夾放一份 `.arcrun.yaml`(含該客戶的 cypher URL / api_key)→ 只在這個資料夾樹生效,離開自動切回全域。`.arcrun.yaml` 含憑證,`init` 會自動幫你加進 `.gitignore`。
|
||||
- **不確定現在用哪個帳號?** `acr config --where` 會逐欄告訴你每個值來自哪一層。
|
||||
|
||||
---
|
||||
|
||||
## 裝好之後:開始用
|
||||
|
||||
Reference in New Issue
Block a user