Files
Arcrun/system-dev/wiki/cards/decisions/薄殼原則-能力長在API.md
uncle6me-web 558e80b4da chore(wiki): wiki-init 補骨架 + system-dev-template 安裝/更新腳本
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>
2026-06-27 17:53:37 +08:00

2.2 KiB
Raw Permalink Blame History

tags, gloss
tags gloss
薄殼
平台原則
架構決策
所有業務能力只實作一次放在 APIcypher-executor),CLI/MCP/SDK 全是只做介面轉換的薄殼。

薄殼原則 — 能力長在 API

decisions/00-INDEX

來源.claude/rules/07-thin-shell.mdsystem-dev/wiki/decisions-summary.md(薄殼原則) 最後更新2026-06-27

摘要

能力只實作一次放在 APICLI / MCP / Python lib / JS lib 全是薄殼,只做參數解析 + HTTP 呼叫 + 格式轉換 + client 端加密,零業務邏輯。

重點

  • 判準口訣:「這段邏輯換一個介面(CLI→MCP)要不要重寫?」要→它是能力,該在 API;不用→它是薄殼該做的。
  • 違反例:CLI 迴圈 POST 多 recipeseed 該是 API 行為)、MCP 先 update 失敗再 insertupsert 該在 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 只實作一次。
  • APIcypher-executor HTTP 端點)— 能力的唯一真相源、所有薄殼共同呼叫的後端。
  • 端點endpoint)— API 的單一 HTTP 路由;齊的單位是能力不是端點,端點可刻意不上某介面。

關聯

內文知識關係

  • 薄殼 >> 呼叫 >> API
  • 能力 >> 下沉到 >> API
  • 能力 >> 齊的單位是 >> 能力
  • 端點 >> 不等於齊的單位 >> 能力

卡片關係