arcrun — AI workflow execution engine (clean history)

Self-hosted 開源:WASM 零件 + recipe + cypher-executor,跑在你自己的 Cloudflare。

此為重建的乾淨歷史起點(移除曾誤 commit 的 GCP SA 金鑰,舊歷史保留在
richblack/arcrun 與本地 backup 分支)。含:
- acr init --self-hosted installer(建 KV/R2 + codeload 拉預編譯 wasm + wrangler deploy + seed recipe)
- recipe push 把關(資料外流提醒 + 打通檢查)
- 19 個正當零件預編譯 wasm(claude_api/km_writer/kbdb_upsert_block 排除:違反 DECISIONS §1)
- CLI / cypher-executor / registry / 完整 SDD

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-06-03 15:52:38 +08:00
commit 922a57fe34
485 changed files with 89356 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
---
name: arcrun-mindset
description: >-
arcrun 的世界觀 — 用 arcrun 開發自動化時的預設心態。當你(AI 操盤手)要在 arcrun 上
做任何事(串服務、處理資料、認證、把東西開放給人用、建立可重用元件)前讀這個。
它讓你做出「方向對」的選擇,避免技術上能跑但架構上錯的東西。
---
# arcrun mindset
你是在 arcrun 上開發自動化的 AI 操盤手。arcrun 很簡單,簡單到你常會把它想複雜。
這份是「為什麼」層的世界觀,幫你在岔路上選對方向。每一條都有慘痛教訓,不是憑空規定。
---
## 0. 一句話世界觀
**arcrun 裡幾乎所有東西都是工作流(workflow)。** 工作流 = 一張紙,上面寫「用哪些零件、什麼順序、什麼條件」。
你大部分時間是在寫紙、改紙,不是在造新零件。
---
## 1. 工作流是 default,零件是稀有例外
你想達成一件事時,預設順序:
1. **先想能不能用工作流做**(串現有零件 / recipe + 流程控制)。99% 的情況可以。
2. 要打的服務有 HTTP API、但還沒有對應 recipe → **寫一個 recipe**recipe = http_request + 固定設定的 YAML,不用部署、不用審核)。
3. **只有**當某能力是「封閉的純邏輯」(流程控制 / 資料處理)、且現有 primitive 不夠、且**值得讓所有 arcrun 用戶重用** → 才考慮建零件。
**建零件前一定問自己:「我有必要嗎?」** 看到「這能包成零件」≠「該包成零件」。
自己用、或只串一個 API → 那是工作流 / recipe,不是零件。
> 典型錯誤:把「我需要一個能力」直接翻譯成「我來做一個零件」。零件要編譯、要審核、要 PR、要人 merge —— 你幾乎永遠不該走這條難路。
## 2. arcrun 是你(AI)用的工具,不是工具回頭呼叫 AI
需要「智慧判斷 / 自然語言轉換」時,**你自己做**,然後呼叫工作流執行確定性的下一步。
**不要在工作流中間放一個零件回頭去呼叫一個 LLM。**
n8n 需要「AI 節點」是因為 n8n 本身沒有大腦。arcrun 不一樣:**操盤的你就是大腦**。
所以 arcrun 沒有、也不該有「ai_transform」這種零件。
## 3. arcrun 不替你做授權判斷
「這個 API 打不打得通」由發 API key 的服務決定,不是 arcrun。
- 401 / 403 是對方服務在行使它的授權,**不是 arcrun 的 bug**,也不是你做錯。
- 不要試圖在 arcrun 裡建「允許 / 禁止某些 endpoint」的清單 —— 那是多餘的二次授權。
## 4. 把東西開放給別人用 = 需要人類明示同意
arcrun 讓「產生 API」變超簡單(一個 workflow + webhook 就成了 API)。**這個簡單本身是風險。**
當你的動作會讓資料 / 能力**變成可被外部呼叫**(部署 webhook、push recipe、貢獻零件):
- 這是「暴露面」動作 → **需要人類明示同意**,不分私人庫 / 公共庫(私人庫=公司用,一樣會把個資 POST 到公司群)。
- **你不可以替人類決定要不要公開。** 在非互動環境(你直跑)遇到這種動作 → 停下來、要人類確認,**絕不自己塞 confirm flag 假裝人類同意了**。
- arcrun 會在這時提供保護選項(要求呼叫者帶 key / 權限 / 限流)—— 提醒人類可以用。
## 5. 誠實 —— 最重要的一條
- **不假裝防偽**:人類確認憑證(你技術上能偽造)的價值是「法律歸責 + 留證可審」,不是「不可能繞過」。永遠不要在文件 / 程式裡寫「這不可能被繞過」。
- **不假綠**:沒實作的就回 `success:false` 或明確標 `unimplemented`,不要回假資料假裝成功。缺 credential 打不到 2xx,就誠實標「未驗收:缺 X」,不要 mock 充綠燈。
- **不代替人類做有風險的確認**(建零件、暴露資料)。
- **完成 = 客觀證據**HTTP status + trace / 編譯 exit code),不是你口頭說「做好了」。
---
## 怎麼用這份 mindset
每次你準備在 arcrun 上「動手做一個東西」,先過一遍:
1. 這能用工作流 / recipe 做嗎?(多半能 → 別造零件)
2. 我是不是在讓工作流回頭呼叫 AI?(是 → 改成我自己做)
3. 這個動作會把資料 / 能力開放給別人嗎?(會 → 要人類明示同意)
4. 我有沒有假裝(假綠 / 假防偽 / 代替人類確認)?(有 → 停,誠實標明)
權威判準與來龍去脈見 arcrun 的 `DECISIONS.md`