323ccc8475
問題(「全變成 code」的根):if_control 回 {result, branch} 卻沒有邊讀得懂它,
圖的邊只有 ON_SUCCESS/IF/FOREACH ⇒ 就算照規矩用零件,仍得寫 code 判斷走哪條。
leo 08-01 追問「你改了 if,有改 switch 嗎?switch 更嚴重」——確認 switch(N 路)
與 try_catch(try/catch) 同病,故一次做成通用機制,不留「為 switch 再改一次」的債。
設計:三顆流程控制零件的 output_schema 本來就都收斂到同一形狀 data.branch: string
(if_control→true/false;switch→case 名或 default_branch;try_catch→try/catch)
⇒ 引擎只需「依標籤選邊」一個機制 ON_BRANCH;ON_TRUE/ON_FALSE 是布林路的語法糖,
底層同一條路(測試已證等價)。讀不出分支=不走(誠實,不亂挑一條)。
- types/schemas/constants:新增三邊型(純新增,既有列舉不動)+ GraphEdge.branch
- graph-executor:readBranch() 依 data.branch → branch → data.result → result 四層相容
- 中文語意詞:成立時/為真時=ON_TRUE,不成立時/為假時/否則=ON_FALSE,BRANCH=ON_BRANCH
分支用法要「查得到」(leo 08-01:AI 可能像 n8n 那樣逐顆查、自己組圖):
新增 lib/branch-hints.ts,讓 if_control/switch/try_catch 的查詢回應自帶 branch_hint
(branch_field/branches/edge_types/usage/example)——只看這一顆的回應就知道怎麼接下一步,
不必回頭讀 skill。四條回應路徑全wire:catalog found/legacy 逐顆/步驟4 substitution/
target=component 名字搜尋(=n8n 式那條)。不分岔的零件不加此欄,避免噪音。
測試(先寫測試再改引擎,紅線要求):tests/conditional-edges.test.ts 16 項全綠
——if 兩路/switch 多路+default/try_catch 成功與失敗路/語法糖等價/
context 傳遞/同分支 fan-out/無匹配不走/混合邊時 PIPE 不受影響/schema 放行。
零變化保證:195 passed(前 179 +16 新),失敗數維持既有 9 筆未變(console/portal
HTML 資產未建置+executor 斷言字串漂移,皆與本次無關);tsc --noEmit 綠。
現存 workflow/example 用到新邊型=0 筆(grep 實查)⇒ 既有行為不可能被改動。
SDD: workflow-discovery task 3.11|CP: arcrun-usable 步驟 5
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Arcrun 文件分類索引
LLM Wiki 結構:長期記憶系統,防止決策遺忘和重複錯誤。 參考:Andrej Karpathy — A Closer Look at How LLMs Remember
分類規則
| 目錄 | 用途 | 例子 |
|---|---|---|
| 1-vision/ | 「為什麼」:設計哲學、核心價值、前瞻方向 | arcrun 優勢、Haiku 就能搞定、薄殼原則 |
| 2-architecture/ | 「是什麼」:系統設計、技術棧、組件關係 | MVP 架構、零件模型、KV 存儲方案 |
| 2-architecture/decisions/ | 架構關鍵決策和 trade-off | Service binding 為什麼廢、R2 只用 Phase 5、同 zone 1042 解法 |
| 3-specs/ | 需求和 SDD:設計文件、任務清單 | (從 .agents/specs/ 搬來) |
| 4-guides/ | 操作手冊:如何做、工作流程 | 部署流程、CLI 用法、壓測方法 |
| 5-records/ | 日誌和證據:事件、測試、決策履歷 | Incident、壓測報告、問題追蹤 |
| 5-records/incidents/ | 生產問題復盤:故障原因、改進方案 | 2026-05-13 同 zone 1042、2026-06-06 MCP route bug |
| 5-records/test-reports/ | 壓測結果、驗收報告 | 2026-06-07 公庫上線測試、2026-06-08 Haiku 乾淨重測 |
| 6-user/ | 對外文件:README、教程、FAQ | self-hosted 安裝、開發者指南 |
.claude/wiki/ — LLM 本機記憶
| 檔案 | 用途 | 更新頻率 |
|---|---|---|
| INDEX.md | wiki 目錄和導引 | 每次新增 |
| mistakes.md | CC(我)常犯的錯 + 避坑方法 | 每次踩坑後 |
| status.md | 當前進度、已知問題、下一步 | 每次 session 結束 |
| decisions-summary.md | 架構決策快速參考(不是全文,是摘要 + 連結) | 每次大決策後 |
| modules/[name].md | 關鍵模組說明:職責、入口、常見誤解 | 不定期補充 |
檔案遷移計畫
| 當前位置 | 新位置 | 優先級 |
|---|---|---|
| 根目錄 .md(除 README/CLAUDE) | → docs/ 分類 | 高 |
| .agents/specs/ | → docs/3-specs/ | 高 |
| .claude/rules/ | → docs/2-architecture/ + wiki | 中 |
| docs/incidents/ | → docs/5-records/incidents/ | 中 |
| 壓測報告 | → docs/5-records/test-reports/ | 中 |
下一步
所有檔案整理進此結構後,wiki 將作為 CC 和任何 LLM 的長期記憶入口。