Files
Arcrun/README.md
T
Claude 2707fca32b feat(arcrun): implement arcrun MVP — open-source AI workflow engine
Phase 1-5 complete per .agents/specs/u6u-core-mvp/:

**Phase 1 — Cherry-pick & cleanup**
- Create arcrun/ from cypher-executor, credentials, builtins, registry
- Remove 9 InkStone Service Bindings (KBDB, REGISTRY, CLINIC_*, AICEO, MINI_ME)
- Rewrite component-loader: 3-layer (builtin → WASM_BUCKET R2 → error)
- Remove autoPublishMissing.ts, proxy.ts (AICEO), execution-logger.ts (KBDB)
- Clean all KV namespace IDs and InkStone internal URLs from config files

**Phase 2 — contract.yaml completeness**
- Add credentials_required to gmail, google_sheets, telegram, line_notify
- Add config_example to all 21 components with annotated field descriptions

**Phase 3 — Credential injection**
- Add credential-injector.ts: AES-GCM decrypt from CREDENTIALS_KV
- Integrate into GraphExecutor before WASM execution
- Structured errors with repair instructions when credential missing

**Phase 4 — CLI (acr)**
- cli/package.json: arcrun package, bin: acr, deps: commander/js-yaml/chalk/ora
- 8 commands: init, creds push, push, run, validate, parts, list, logs
- Standard mode: writes directly to user's CF KV via CF REST API
- acr init: interactive setup with arcrun.dev API Key registration

**Phase 5 — Open source release prep**
- README.md: 5-minute quickstart, component table, workflow YAML syntax
- CONTRIBUTING.md: TinyGo dev env, component scaffolding, submission flow
- Security audit: no InkStone internal URLs/IDs in committed files
- .gitignore: exclude credentials.yaml, .wrangler, *.wasm

https://claude.ai/code/session_01BnCdSLVH8tUed9VrrPavgT
2026-04-16 04:06:25 +00:00

235 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# arcrun
**AI Workflow Execution Engine** — 以 WASM 零件為基礎的 Cloudflare Workers 工作流平台。
定義一個 workflow,串接 Gmail、Telegram、Google Sheets 等服務,無需伺服器,直接跑在 Cloudflare Edge。
---
## 專案定位
| 層級 | 內容 | 存取 |
|------|------|------|
| **開源核心** | cypher-executor、21 個 WASM 零件、credentials Worker、CLIacr | MIT License |
| **Hosted SaaS** | 一行指令取得 API Key,使用 arcrun.dev 的執行引擎與公眾零件庫,credential 永遠在你自己的 CF KV | 免費 |
| **InkStone 付費** | KBDB 向量搜尋、Graph 查詢、Persona SDK、MatchGPT | 付費方案 |
**你的 credential 和 workflow 永遠在你自己的 Cloudflare KVarcrun.dev 不儲存它們。**
---
## 快速開始 — Standard 模式(推薦,零部署)
只需在 Cloudflare 建立一個 KV namespace,其餘由 arcrun.dev 處理。
### 安裝 CLI
```bash
npm i -g arcrun
```
### 1. 初始化
```bash
acr init
```
互動式問答:
- Cloudflare Account ID
- USER_KV Namespace ID(在 [CF Dashboard](https://dash.cloudflare.com) 建立一個 KV
- CF API Token(只需 KV Edit 權限)
- Email(取得 arcrun.dev API Key
### 2. 設定 Credential
建立 `credentials.yaml`(已自動加入 `.gitignore`):
```yaml
# credentials.yaml — 不要提交至 git
gmail_token: "ya29.your-google-oauth-token"
telegram_bot_token: "1234567890:ABCxxx"
```
上傳加密 credential 至你的 CF KV
```bash
acr creds push credentials.yaml
```
### 3. 部署 Workflow
建立 `newsletter_subscribe.yaml`
```yaml
name: newsletter_subscribe
description: 訂閱電子報,發感謝信並記錄到 GSheets
flow:
- "input >> 完成後 >> send_thanks"
- "input >> 完成後 >> save_to_sheet"
- "send_thanks >> 完成後 >> output"
- "send_thanks >> 失敗時 >> notify_error"
- "save_to_sheet >> 完成後 >> output"
config:
send_thanks:
to: "{{input.email}}"
subject: "感謝訂閱!"
body: "歡迎加入!"
# access_token 由 credentials.yaml 的 gmail_token 自動注入
save_to_sheet:
action: write
spreadsheet_id: "your-sheet-id"
range: "訂閱者!A:B"
values: [["{{input.email}}", "{{input.timestamp}}"]]
notify_error:
chat_id: "your-telegram-chat-id"
text: "發信失敗:{{input.email}}"
```
部署:
```bash
acr push newsletter_subscribe.yaml
```
### 4. 執行
```bash
acr run newsletter_subscribe --input email=user@example.com timestamp=2026-01-01
```
---
## 快速開始 — Self-hosted 模式
自行部署所有 Worker 到你的 Cloudflare 帳號。
```bash
# 1. 部署 cypher-executor
cd cypher-executor
wrangler deploy
# 2. 部署 credentials Worker
cd ../credentials
wrangler deploy
# 3. 初始化 CLISelf-hosted 模式)
acr init --self-hosted
```
---
## Workflow YAML 語法
### 三元組格式
```
"A >> 關係詞 >> B"
```
### 合法關係詞
| 關係詞 | 英文別名 | 說明 |
|--------|----------|------|
| `完成後` | `ON_SUCCESS` | 上游成功後執行 |
| `失敗時` | `ON_FAIL` | 上游失敗時執行 |
| `對每個` | `FOREACH` | 迭代執行 |
| `條件滿足時` | `IF` | 條件分支 |
| `ON_CLICK` | — | 前端點擊觸發 |
| `CALLS_SUBFLOW` | — | 呼叫子 workflow |
> `PIPE` 已棄用,請改用 `完成後` 或 `ON_SUCCESS`。
---
## 零件列表(21 個)
### 整合類(需要 Credential
| 零件 | 說明 | 所需 Credential |
|------|------|-----------------|
| `gmail` | Gmail 發信 | `gmail_token`Google OAuth |
| `google_sheets` | Google Sheets 讀寫 | `google_oauth`Google OAuth |
| `telegram` | Telegram Bot 發訊息 | `telegram_bot_token` |
| `line_notify` | LINE Notify 發訊息 | `line_token` |
| `http_request` | HTTP 請求(手動設 headers | — |
### 控制流
| 零件 | 說明 |
|------|------|
| `if_control` | 條件判斷 |
| `foreach_control` | 迴圈執行 |
| `try_catch` | 錯誤處理 |
| `switch` | 多路路由 |
| `wait` | 延遲等待 |
### 資料處理
| 零件 | 說明 |
|------|------|
| `set` | 設定/賦值 |
| `filter` | 陣列過濾 |
| `merge` | 合併物件 |
| `string_ops` | 字串操作 |
| `number_ops` | 數字運算 |
| `array_ops` | 陣列操作 |
| `date_ops` | 日期操作 |
### AI 類
| 零件 | 說明 |
|------|------|
| `ai_transform_compile` | AI 轉換規則編譯(Workers AI |
| `ai_transform_run` | AI 轉換執行 |
### 其他
| 零件 | 說明 |
|------|------|
| `validate_json` | JSON Schema 驗證 |
| `cron` | Cron 排程觸發 |
取得任一零件的 config 範本:
```bash
acr parts scaffold gmail
```
---
## CLI 指令
```
acr init 互動式初始化設定
acr creds push [file] 上傳加密 credentials 至 CF KV
acr push <workflow.yaml> 部署 workflow
acr run <name> [--input] 執行 workflow
acr validate <workflow.yaml> 執行前驗證
acr parts 列出所有零件(含統計)
acr parts scaffold <comp> 取得 config 範本
acr parts publish <dir> 提交零件至公眾庫
acr list 列出已部署的 workflow
acr logs <name> 查看執行記錄
```
---
## 貢獻零件
詳見 [CONTRIBUTING.md](CONTRIBUTING.md)。
```bash
# 提交零件至公眾 registry(審核通過後對所有人開放)
acr parts publish ./my-component/
```
---
## License
MIT