t159 步驟4 意圖節點→真實零件/recipe 替換+/cypher/search 加 target 指定搜尋對象
CP arcrun-usable 步驟 4(目的:AI 只要填 payload——系統把「傳到 telegram」
翻成 http_request+recipe telegram_send)+leo 07-31 追加:
「難道我不能指定要搜尋工作流或節點或 recipe 嗎?」
替換(只動 discover,t158「部署≠發現」邊界不碰):
- 兩庫 exact 落空後,在 t158 一次抓好的清單記憶體內媒合,零新增 round-trip
- 規則 A 服務詞→recipe:名字全部服務詞命中同一 recipe 且唯一才換
(google_slides_create 不被 google_sheets 誤吃)
- 規則 B 強欄位斷詞→零件:canonical/display/aliases 強命中×10+弱命中,
需至少一強命中且分數唯一最高(aes_encrypt 無強命中不換)
- 換到=status resolved+substitution{from,componentId,recipe,reason},
cypher 圖節點直接帶真實 componentId;換不到照舊 not_found+3.7 指路
target 參數(各走既有機制,不新造第二套搜尋):
- triplets+target=component|recipe=只查該庫
- query+target=名字搜尋:component→registry /components/search(=MCP
arcrun_search_components 同路);recipe→私庫 RECIPES KV(回應註明公庫走
arcrun_recipe_search);workflow→新抽 lib/workflow-search.ts,
GET /workflows/search 與 target=workflow 共用(=arcrun_search_workflows 同路)
- 防呆:compile+target 400/target=workflow 吃 query 不吃 triplets/非法 target 400
驗(本地 wrangler dev,registry 種 20 合約+init/seed 10 recipe):
- 「判斷有沒有新資料 >> ON_SUCCESS >> 傳到 telegram」→ if_control(resolved)
+telegram_send(substitution.componentId=http_request)=feature 06 驗法過
- 機械考 27/27 全綠(01 組×5+03 組×4 迴歸+06 組×8+target×8+compile 迴歸×2)
- 冷啟第一發 94ms、熱 8–13ms(t158 病史對照:舊 25.7s);compile 39ms unchecked 照舊
- tsc 全綠;vitest 9 failed/179 passed=t158 基線完全相同
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -83,6 +83,35 @@
|
||||
有的照常編圖不必報告;缺的要兩庫(零件+recipe)都搜過後點名+給正確指示。
|
||||
驗收兩層:機械(verify 01/03)綠 → haiku 真考(只讀回覆就能說出缺什麼、該做什麼)。
|
||||
|
||||
- [x] 3.9 意圖節點→真實零件/recipe 替換(CP arcrun-usable **步驟 4**;頂層交棒 t159)
|
||||
— 2026-07-31 search-nodes.ts `trySubstitution`:discover 混搜兩庫 exact 落空後,
|
||||
在 t158「一次抓好的兩庫清單」**記憶體內**媒合(零新增 round-trip)。兩條保守規則
|
||||
(不接 LLM,規則在 code 註解):A 服務詞→recipe(名字裡全部服務詞命中同一 recipe
|
||||
且唯一才換;「google_slides_create」不會被 google_sheets 誤吃);B 強欄位斷詞→零件
|
||||
(canonical/display/aliases 強命中×10+description/tags 弱命中,需至少一強命中且
|
||||
分數唯一最高;「aes_encrypt」無強命中不換)。換到=status `resolved`+`substitution`
|
||||
欄(from/componentId/recipe/reason),cypher 圖節點直接帶真實 componentId、不列
|
||||
missing;換不到照舊 not_found+3.7 指路+候選。**只動 discover**——compile(部署/
|
||||
推送複製路徑)零替換零查詢(t158 邊界不動)。
|
||||
驗(本地 wrangler dev,registry 種 20 合約+/init/seed 10 recipe):
|
||||
「判斷有沒有新資料 >> ON_SUCCESS >> 傳到 telegram」→ if_control(resolved)+
|
||||
telegram_send(resolved,substitution.componentId=http_request)=feature 06 驗法過;
|
||||
機械考 27/27 全綠(01 組 5+03 組 4 迴歸+06 組 8+target 8+compile 迴歸 2);
|
||||
冷啟第一發 94ms、熱 8–13ms(t158 病史對照:舊 25.7s)
|
||||
- [x] 3.10 `/cypher/search` 加 `target` 指定搜尋對象(leo 07-31:「難道我不能指定要搜尋
|
||||
工作流或節點或 recipe 嗎?」)— component/recipe/workflow:
|
||||
triplets+target=component|recipe=只查該庫;query+target=名字搜尋,各走**既有**
|
||||
機制不新造(component→registry /components/search=MCP arcrun_search_components
|
||||
同一條路;recipe→私庫 RECIPES KV 同 discover 第二庫讀法,回應註明公庫走
|
||||
arcrun_recipe_search;workflow→新抽 lib/workflow-search.ts,GET /workflows/search
|
||||
與 target=workflow 共用同一 KBDB 轉發=MCP arcrun_search_workflows 同一條路)。
|
||||
防呆:mode=compile+target → 400;target=workflow 吃 query 不吃 triplets(400 指路);
|
||||
非法 target → 400。已知缺口如實透傳:workflow 無 description 搜不到(capability_hint
|
||||
照舊),補救仍走 /workflows/backfill-search-entries。
|
||||
MCP 三分型工具盤點:search_components/search_workflows/recipe_search 均註冊活著;
|
||||
前兩者與 target 走同一條路;recipe_search 搜公庫 vs target=recipe 搜私庫=語料不同
|
||||
是設計(installed vs marketplace),回應互相指路,非行為漂移
|
||||
|
||||
---
|
||||
|
||||
## 跨任務鐵律提醒
|
||||
|
||||
Reference in New Issue
Block a user