922a57fe34
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>
1.6 KiB
1.6 KiB
parallel-fanout
解決什麼問題
同一份輸入要做多種處理(摘要 / 翻譯 / 分類 / 等)。 不想等順序執行(總時長 = 全部加總)→ 並行(總時長 = 最慢一個)。
怎麼觸發
curl -X POST https://cypher.arcrun.dev/webhooks/named/parallel_fanout/trigger \
-H "X-Arcrun-API-Key: ak_xxx" \
-d '{"api_key":"ak_xxx","text":"...","target_lang":"en"}'
預期行為
- 3 個子 workflow 同時啟動,各自獨立執行
- 主 workflow 返回所有子 workflow 都 trigger 成功的時間(毫秒級)
- 子 workflow 完成的結果不會回到 parent —— 各自寫各自的 KBDB / 通知
改成你自己的
- 增 / 減 dispatch 節點數
- workflow_name 換你的真實處理 workflow
- 若需要等子 workflow 都完成 → 子 workflow 寫完成標記到 KBDB,parent 後續 cron 撿
變體:等所有子 workflow 完成
arcrun 預設 trigger_workflow 是 fire-and-await(paused 也算 success)。 若要嚴格「等到完成」,要:
- 子 workflow 末步寫
done:{request_id}block 到 KBDB - parent 加 polling 節點 + wait 重試 (M2 之後會出 wait_for_workflows 內建零件)
為什麼這 pattern 重要
- arcrun 是 multi-tenant / multi-tier 平台。Fan-out 讓你能 build「主 controller + N 個 worker」架構
- 比 promise.all 更穩:每個子 workflow 獨立 paused/resume,互不污染狀態
學到什麼
- Fan-out:一個節點多條 ON_SUCCESS 邊出去,並行執行
trigger_workflow是內建 orchestration 零件(cypher-executor in-process call,繞 CF self-fetch)- input 變數在 fan-out 時複製給每條分支(不互相影響)