5d00e71275
頂層 D22 決策(leo 2026-07-03 拍板):推什麼由開發環境歸屬決定, Gitea private=除機敏值/build 產物/.github 外全 push。 解 T1.5 卡點:雲端工人 clone 拿得到 credential-store-migration.md,可就地改寫 SDD。 機敏掃描兩輪通過(新增 189 檔約 2.1MB,node_modules/dist/wasm 照舊排除)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
48 lines
4.1 KiB
Markdown
48 lines
4.1 KiB
Markdown
# 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 <name>` | `u6u_execute_workflow` | `POST /webhooks/named/:name/trigger` | ✅ | ✅ | **#11 P0 已修**:CLI 原打死端點 `/webhooks/<name>` → 改打 trigger 真端點 |
|
||
| 執行 workflow(本機 YAML)| `acr run <file>` | — | `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)。
|