558e80b4da
wiki 已初始化過(push 檔活躍維護),本次補從沒建的 pull 層 + arcrun 化範本: - cards/decisions/ 14 張決策原子卡(含 gloss/實體/typed-edge 三元組): 從 decisions-summary 全量改寫 13 + 新增「薄殼規則晚於實作-MCP漂移是歷史債」1 - TAXONOMY 從 PKM 範本換成 arcrun 軸(子系統 零件架構/cypher/credential/recipe/kbdb/ 薄殼/部署/平台原則 + 形態 架構決策/踩坑/機制說明/禁令/案例經驗) - principles 填 13 條跨全局原則(從 rules/ + mindset 蒸餾) - INDEX 真實視圖(子系統角度 + 決策角度,指向 cards) - system-dev/scripts/ + scripts/ install/update 安裝腳本(template 接入) 純基建/文檔,無業務 code(功能 code 見前一 commit)。 raw source(docs/)0 異動、wiki 卡際連結無斷鏈。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
tags, gloss
| tags | gloss | |||
|---|---|---|---|---|
|
所有業務能力只實作一次放在 API(cypher-executor),CLI/MCP/SDK 全是只做介面轉換的薄殼。 |
薄殼原則 — 能力長在 API
來源:.claude/rules/07-thin-shell.md、system-dev/wiki/decisions-summary.md(薄殼原則)
最後更新:2026-06-27
摘要
能力只實作一次放在 API;CLI / MCP / Python lib / JS lib 全是薄殼,只做參數解析 + HTTP 呼叫 + 格式轉換 + client 端加密,零業務邏輯。
重點
- 判準口訣:「這段邏輯換一個介面(CLI→MCP)要不要重寫?」要→它是能力,該在 API;不用→它是薄殼該做的。
- 違反例:CLI 迴圈 POST 多 recipe(seed 該是 API 行為)、MCP 先 update 失敗再 insert(upsert 該在 API)、SDK 自製 credential-injector(該在 WASM)。
- 齊的單位是「能力」不是「端點」:MCP=CLI 是出貨目標、不是任一時刻的不變量;底層 proxy 可有端點刻意不上 CLI/MCP(如
/kbdb/entries裸 CRUD 消費者是 mira Python client)。 - 帳號統一:所有薄殼讀同一份身份來源(config.yaml / env),不可 CLI 連自架、MCP 連官方。
- hook 7.x 擋語法層可偵測的拼裝;藏在 helper 裡的邏輯擋不了,靠 code review。
實體
- 薄殼(thin shell)— CLI/MCP/SDK 介面層,只暴露能力不實作能力。
- 能力(business logic/業務邏輯)— 換介面要重寫的那段邏輯,必須下沉到 API 只實作一次。
- API(cypher-executor HTTP 端點)— 能力的唯一真相源、所有薄殼共同呼叫的後端。
- 端點(endpoint)— API 的單一 HTTP 路由;齊的單位是能力不是端點,端點可刻意不上某介面。
關聯
內文知識關係
- 薄殼 >> 呼叫 >> API
- 能力 >> 下沉到 >> API
- 能力 >> 齊的單位是 >> 能力
- 端點 >> 不等於齊的單位 >> 能力
卡片關係
- 薄殼原則-能力長在API >> 共享世界觀 >> 工作流是default零件是例外
- 薄殼原則-能力長在API >> 歷史成因見 >> 薄殼規則晚於實作-MCP漂移是歷史債