20c7610371
leo 2026-07-20 明令:「已經改用 cf 自己的 secrets,不要再說它了」 「我希望以後再也看不到這個詞再出現」 背景:credential 早已遷移至 CF Workers per-script Secrets + D1 目錄, 舊的自管金鑰(client 端 AES-GCM + KV 密文 + crypto_decrypt)是遷移期遺留。 本次連根移除,含一併作廢的死 SaaS 碼。 移除: - 舊 KV 密文解密路徑(credential-injector.ts 整檔、dual-read fallback) 前置驗證:leo21c / youlin 兩帳號 CREDENTIALS_KV 實測 *:cred:* 皆 0 筆 - migrate-to-workers-secrets 搬家端點(回填已完成,無可回填) - /register 路由與 generateApiKey(HMAC 產 ak_ key 是 SaaS 遺物; self-hosted 走 namespace 明碼 D21,已無人使用) - platform_crypto component(三帳號實測 404 已退役,無 workflow 引用) 保留(附理由): - crypto_decrypt 保留為永遠回失敗的 stub——現役三個 auth .wasm 仍宣告該 import,缺項會讓 WASM instantiate 直接失敗。待零件重編後可真正刪除。 順帶修復(原不在範圍,但會實際壞事): - /auth/callback 有 `if (!key) redirect(server_error)` 閘,未設該 secret 的 實例會登入直接失敗 → 已移除 - OAuth 兩處把 provider token 寫進舊加密 KV(租戶鍵與實際 api_key 在 rotate 後必然分歧,已失效)→ 改導向 Workers Secrets,包 try/catch 不影響登入 - acr init Standard 模式呼叫已刪除的 /register → 改引導 OAuth 取 key - .claude/rules 與 system-dev/docs 是同一規範的兩份鏡像,先前只改 rules 導致鏡像仍在教舊做法 → 已同步(此類雙檔同步應納入檢查) 新用戶安裝從此零 secret 前置。 測試 187/188(唯一 fail 為 pre-existing,stash 驗證與本次無關); cypher-executor 與 cli typecheck 全綠。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
61 lines
3.6 KiB
Plaintext
61 lines
3.6 KiB
Plaintext
# arcrun — 給 AI 操盤手的啟動指南
|
||
|
||
> 你(Claude Code / AI 助手)正在幫一位使用者用 arcrun 做自動化。
|
||
> 使用者可能只會跟你聊天、把這個連結丟給你。接下來的事大多由你做。
|
||
> arcrun = 讓自動化變成「純文字工作流」跑在使用者自己的 Cloudflare,而不是每次重刻 Python 腳本。
|
||
|
||
## 你的第一步(務必先做)
|
||
|
||
```
|
||
npm i -g arcrun && acr install-harness
|
||
```
|
||
|
||
`acr install-harness` 會把 arcrun 的防護裝進使用者**當前專案**:
|
||
- arcrun-mindset Skill(世界觀 + 資源去哪取)
|
||
- CLAUDE.md 區塊(提醒:用 arcrun 不要自寫 Python)
|
||
- arcrun-guard hook(你走歪時當場提醒/糾正)
|
||
- /arcrun slash command(使用者可打 `/arcrun <需求>`)
|
||
|
||
裝完你就有完整指引,照著走即可。
|
||
|
||
## 裝 harness 前先記住的鐵則
|
||
|
||
- **使用者選 arcrun = 不要自己寫 Python/Node 一次性腳本。** 用 arcrun 工作流。
|
||
- 打外部 API → 寫 recipe(`acr recipe push`),不自刻 HTTP client。
|
||
- 不自製零件(WASM)—— 零件由 arcrun 維護走 PR。你能用的是現有零件 + recipe + 工作流。
|
||
- 需要 AI 判斷時你自己做,不要讓工作流回頭呼叫 LLM。
|
||
- 所有 CLI 操作你來做,別丟指令叫使用者自己打(除非他想自己來)。
|
||
|
||
## 完整啟動流程
|
||
|
||
1. `npm i -g arcrun && acr install-harness`(裝 CLI + 防護)
|
||
2. `npm i -g wrangler`(Cloudflare CLI,部署用)
|
||
3. **建 .env 並帶使用者填憑證**(憑證是唯一只有他能拿的東西,但「建檔」由你做):
|
||
- **你做**:`cp .env.example .env`(repo 根有 `.env.example` 範本,左邊 KEY 名都寫好了、
|
||
每格上面有白話說明)。使用者只需要找到值、填到「=」右邊。
|
||
- **帶使用者拿值**——用白話照抄式引導,**不要講 KV / Worker / R2 / zone 等術語**(他聽不懂也不需懂):
|
||
- 帳號代碼(`CLOUDFLARE_ACCOUNT_ID`):登入 https://dash.cloudflare.com 右側欄複製。
|
||
- 金鑰(`CLOUDFLARE_API_TOKEN`):https://dash.cloudflare.com/profile/api-tokens → Create Custom Token →
|
||
照抄勾**三組**權限:
|
||
· Account / Workers Scripts / Edit
|
||
· Account / Workers KV Storage / Edit
|
||
· Account / D1 / Edit ← **必勾**,arcrun 用 D1 存 workflow/recipe;漏勾會 init 時 D1 建失敗(Authentication error)
|
||
→ 複製產生的 token。(不需要 R2、不需要綁信用卡——D1 也在免費額度,不綁卡。)
|
||
- `NAMESPACE`:隨便取個英數小名(非密碼)。credential 不需要自管加密金鑰。
|
||
- 使用者把值貼進 .env(或貼給你、你幫他填進對應格)。**CLOUDFLARE 兩格沒填,後面什麼都跑不了。**
|
||
- 連外部服務(如 Notion)的 token 也填進 .env 的 ③ 區,之後 `acr creds push` 上傳(走 TLS,存進 CF Workers Secrets)。
|
||
4. `acr init --self-hosted`(你幫跑,讀 .env 的 CF 憑證)—— 自動建資源、部署、seed、寫 .mcp.json(MCP 連線)。
|
||
跑完會印「安裝驗收」逐項 ✓/✗;有 ✗ 照它給的指令補(多數 `acr update` 冪等重試)。
|
||
5. 跑完照提示 `wrangler secret put CF_SECRETS_API_TOKEN --name arcrun-cypher-executor`(CLI 會印確切指令;
|
||
用途=讓 cypher 能把 credential 寫進 Workers Secrets)。
|
||
6. 把使用者需求拆成 workflow → `acr push`。完成給客觀證據(HTTP 2xx / trace)。
|
||
|
||
## 暴露提醒
|
||
|
||
部署對外 webhook / push recipe 會讓東西可被外部呼叫 → 停下來讓使用者明示同意,不替他決定公開。
|
||
|
||
## 更多
|
||
|
||
- 指令:`acr --help`
|
||
- 開始開發後讀 arcrun-mindset Skill。
|