# CLI / MCP 能力對照清單(薄殼防漂移) > **來源**:thin-shell-alignment SDD(issue #11)R4 防複發機制層 1。 > **用途**:每新增一個薄殼能力(CLI 命令 / MCP 工具)**必填一行**,PR review 對照。 > **治什麼**:① 打不存在的 server 端點(死端點假綠)② CLI/MCP 同能力不同源(漂移)。 > **配套**:`scripts/thin-shell-smoke.sh`(層 2,對真端點打、斷言非 404)。 > **建立**:2026-06-27 > > **填寫規則**: > 1. 「server 端點」必須在 cypher-executor route 清單裡**存在**(用 `grep -rE "Router\.(post|get)\('/xxx'" cypher-executor/src/routes/` 驗)。 > 2. 「同源?」= CLI 與 MCP 是否打**同一個** server 端點。不同源 = 漂移(除非刻意單邊,記明原因)。 > 3. 標 ⚠️ 的是已知債/待收斂項,連到 SDD 對應段。 --- ## 對照表 | 能力 | CLI | MCP | server 端點 | route 存在? | 同源? | 備註 | |------|-----|-----|------------|:---:|:---:|------| | 部署 workflow | `acr push` | `u6u_deploy_workflow` | `POST /webhooks/named` | ✅ | ⚠️ | MCP 現打死端點 `/workflows/deploy`(404)→ 待 #8 ①-a + #10 編排下沉。CLI 走 4 步介面層編排(#10 待下沉)| | 執行 workflow(已部署)| `acr run ` | `u6u_execute_workflow` | `POST /webhooks/named/:name/trigger` | ✅ | ✅ | **#11 P0 已修**:CLI 原打死端點 `/webhooks/` → 改打 trigger 真端點 | | 執行 workflow(本機 YAML)| `acr run ` | — | `POST /cypher/execute` | ✅ | — | CLI 本機 YAML 直跑;MCP `u6u_execute_workflow` 同打 /cypher/execute | | list workflow | `acr list` | `u6u_list_workflows` | `GET /webhooks/named` | ✅ | ✅ | **#11 P1 已修**:兩邊原不同源(CLI 直連 KV `workflow:` 前綴對不上 / MCP 讀 KBDB record)→ 收斂到 `GET /webhooks/named`(KV 源)| | get workflow | — | `u6u_get_workflow` | (KBDB record / KV)| — | — | MCP only;CLI 無對應(次要,可不補)| | search workflow | (次階段 `acr workflow search`)| `u6u_search_workflows` | `GET /workflows/search` | ✅ | — | **#8 新增**;CLI 對稱補列次階段(R3.3)| | 驗證 YAML | `acr validate`(本機)| `arcrun_validate_yaml`(server /validate)| `POST /validate` | ✅ | ⚠️ | **真漂移,依賴 #10**:CLI 本機驗 YAML、MCP 傳 graph 打 /validate,輸入不同層。乾淨收斂依賴 #10 編排下沉(SDD §4 表 + tasks 3.1)| | 搜尋零件 | `acr parts` | `u6u_search_components` | `GET /components/search`(registry)| ✅ | ✅ | 同打 registry search(註:目前是 KV substring 非真語意,registry Phase 2 另案)| | recipe(6 能力)| `acr recipe *` | `arcrun_recipe_*` | `/recipes/*` `/public-recipes/*` | ✅ | ✅ | 已對齊 | | credential 上傳 | `acr creds push` | — | `POST /credentials` | ✅ | — | **刻意單邊**(非疏漏):含 client 端加密 + 本機檔路徑,AI 不代傳 credential(mindset §6/§7)| | KBDB 資料層(template/record/query/search)| `acr kbdb *` | `kbdb_*`(6 工具)| `/kbdb/*` | ✅ | ✅ | 已對齊(#8 前批)| | tag(create/list/delete/tag/untag)| — | `u6u_*_tag` / `u6u_tag_resource` | (KBDB resource_tag)| — | — | MCP only。⚠️ tag resource_id 語意債(UUID vs name),待方向①收斂(SDD §4.1)| | whoami | `acr whoami` | `arcrun_whoami` | `GET /me` | ✅ | ✅ | 已對齊 | --- ## 已知債(連 SDD) - ⚠️ **MCP deploy 死端點**:`/workflows/deploy` 不存在 → #8 ①-a(先擋)+ #10(編排下沉)。 - ⚠️ **validate 漂移**:依賴 #10 編排下沉後才能統一吃 YAML。 - ⚠️ **tag resource_id 語意**:UUID vs name 不明確,待方向①收斂統一為 name。 ## 防複發檢查點(新增能力時) 1. 新 CLI 命令 / MCP 工具 → **本表加一行**。 2. 填「server 端點」前,`grep` 確認該 route 在 cypher-executor 裡**存在**(否則就是死端點)。 3. 同能力兩介面 → 確認「同源」打同一端點;刻意單邊 → 備註記明原因。 4. 宣稱「對齊/完成」前 → 跑 `scripts/thin-shell-smoke.sh`(對真端點斷言非 404)。