Files
Arcrun/registry/examples/parallel-fanout/description.md
T
uncle6me-web 922a57fe34 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>
2026-06-03 15:52:38 +08:00

1.6 KiB
Raw Blame History

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 寫完成標記到 KBDBparent 後續 cron 撿

變體:等所有子 workflow 完成

arcrun 預設 trigger_workflow 是 fire-and-awaitpaused 也算 success)。 若要嚴格「等到完成」,要:

  1. 子 workflow 末步寫 done:{request_id} block 到 KBDB
  2. 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 時複製給每條分支(不互相影響)