c6932b0088
把知識庫 ingest 從 standalone drainer(誤用 Service Bindings)重表達為 cypher workflow:
- workflow.yaml(Phase 0 cron drain):watch_cron→load_cursor→list_cards→pick_card(code)
→fetch_card→parse_card(code)→upsert_entry→save_cursor→post_envelopes→post_one_envelope。
線性 pipe,跨-worker 全走 cypher binding(零件節點),零 service binding。
- workflow.delta.yaml(Gitea webhook 穩態):collect_changed(code)→foreach card→fetch/parse/upsert/foreach envelope。
- code/kbdb/graph 接法:code=canonical `code` 零件(arcrun-code);kbdb/graph=http_request 零件打
/entries/ingest、/triplets/ingest(server 端冪等);Gitea=http_request。
- 平台端最小補丁(各需 gated 部署):
1) cypher-executor component-loader:WASM_HTTP_RUNNER_IDS 加 'code'(canonical→arcrun-code,cypher binding 正解)。
2) kbdb base:POST /entries/ingest(page_name+content_hash 冪等 upsert,對稱 graph /triplets/ingest;
因 flow DSL 無資料條件分支,把 create/patch/skip 冪等推到 server 端)。
- drainer/DEPRECATED.md:標舊 standalone worker 退役計畫(新版穩定後 wrangler delete)。
- DEPLOY.md:部署順序、cron/webhook 掛法、subdomain 對齊、驗收與退役。
本輪不部署(待總管/leo 審架構)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJiLCRUU2o3aSpPEzVCt2o
1.7 KiB
1.7 KiB
⛔ DEPRECATED — 此 standalone drainer 架構錯誤(D28),改用 cypher workflow
別部署這個。 arcrun-km-wiki-drainer 是 standalone Worker,對同帳號 worker 用
Service Bindings(SVC_CODE/SVC_KBDB/SVC_GRAPH)呼叫 code/kbdb/graph。
leo 拍板(D28):Service Bindings 一般禁用,唯一例外是「零件等級:把幾個 wasm 綁成複合零件」。 工作流/recipe 等級的跨-worker 編排(ingest 串 code+kbdb+graph 正是)→ 走 cypher binding =跑成 cypher 上的 workflow。這也是 D27「Arcrun workflow」的本意。
前一 subagent 因 workflow.yaml 當時是 skeleton,就抄捷徑自建這個 standalone worker
(worker-to-worker 撞 CF 1042 → 又錯用 service binding 補),一步歪步步歪。
正解(本目錄上一層)
../workflow.yaml(Phase 0 cron drain)+../workflow.delta.yaml(Gitea webhook 穩態) =跑在 cypher-executor 上的 workflow,全走 cypher binding,零 service binding。- 部署見
../DEPLOY.md。
為什麼 standalone 版當初「看起來能動」卻是錯的
- 它把 1042 歸因成「同帳號 worker-to-worker 必須用 service binding」——錯。
cypher-executor 靠
global_fetch_strictly_publiccompat flag 讓 fetch 走公網前門, sibling worker 呼叫本就通;standalone worker 沒這個 flag 才撞牆,而正解是「別自建 standalone worker, 把編排交回 cypher」,不是加 service binding。 - 它還把 URL 寫成
*.leo21c.workers.dev,與 cypher 的WORKER_SUBDOMAIN=uncle6-me不一致。
退役步驟
新版全 drain 完 + delta 穩定後:wrangler delete arcrun-km-wiki-drainer,再刪本 drainer/ 目錄。
保留一個週期供逐卡輸出對照。