fix(mcp): 解掉三個把人推去寫零件的誤導入口(leo 2026-07-21 拍板)

leo:「刪掉,技術者才會寫 component,在 Arcrun repo 寫一條如何 contribute
指向另一個 repo 就好。」

實測病灶:總管想寫「定期打 API 然後通知」的 workflow(Python 約 10 行),
問 foreach_control 怎麼用 → MCP 回傳 TinyGo 寫 WASM 零件教學(白名單/syscall/
contract schema)=完全另一件事,40 分鐘未完成。

三處修正:
1. search_components 搜不到時的話術——原本建議 publish_component(把「我找不到」
   翻譯成「你去造一個」,方向完全相反)。改為導向正確順序:語意搜尋知識庫→
   auth-recipe list/scaffold→acr parts(http_request 能打任意 API)→acr list,
   並明說 registry 可能是空的(已知問題),搜不到≠沒有這能力。
2. registry.ts 停用 publish_component / get_component_guide 兩個註冊
   (檔案保留,只是不對 AI 暴露)。
3. 新增 CONTRIBUTING-components.md:三層責任分工(平台通用能力/熱門預鋪 recipe/
   冷門誰用到誰開發)、什麼時候才真需要新零件、真要貢獻走 PR 的流程。

typecheck 通過。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-21 16:42:51 +08:00
parent 98d87d5d3f
commit 1b687fedb0
6 changed files with 294 additions and 4 deletions
+15 -1
View File
@@ -44,7 +44,21 @@ export function registerSearchComponents(server: McpServer, env: Env, orgNamespa
return {
content: [{
type: "text",
text: `找不到符合「${query}」的零件。可以用 arcrun_publish_component 提交新零件。`,
text: [
`registry 裡找不到「${query}」——但**先別急著造零件**(零件走 PR、專業等級)。`,
``,
`⚠️ registry 目前可能是空的(已知問題:唯一寫入觸發點隨 .github/workflows 移除而蒸發),`,
` 「搜不到」不代表「沒有這個能力」。請改用下列順序找:`,
``,
`1. **語意搜尋知識庫**(最強,能找到你沒猜中的用詞):`,
` kbdb_search(q="我想達成什麼(用一句話描述)", mode="semantic")`,
`2. **看現成的服務整合**\`acr auth-recipe list\`26 個:GitHub/Notion/Gemini…)`,
` 要用哪個 → \`acr auth-recipe scaffold <服務>\` 直接吐 credentials 範本+workflow 範例`,
`3. **看零件全集**\`acr parts\`21 顆通用零件,含 http_request 可打任意 API`,
`4. **看有沒有現成 workflow 可直接接**\`acr list\``,
``,
`💡 多數需求的正解是「用 recipe 設定既有零件」或「接既有 workflow」,不是新造零件。`,
].join("\n"),
}],
};
}
+6 -2
View File
@@ -24,11 +24,15 @@ import { registerWhoami } from "./arcrun_whoami.js";
export function registerAllTools(server: McpServer, env: Env, orgNamespace: string, partnerToken: string) {
registerSearchComponents(server, env, orgNamespace);
registerPublishComponent(server, env, orgNamespace);
// 🔴 2026-07-21 leo 拍板停用:零件走 PR、專業等級;recipe/workflow/app 誰都可以做。
// 這兩個工具對一般使用者是「誤導危機」——搜不到東西時把人推向「去造零件」,
// 那是最難、最該擋的那條路(總管實測:問 foreach 怎麼用,回傳 TinyGo 寫 WASM 教學)。
// 想貢獻零件 → 見 Arcrun repo 的 CONTRIBUTING-components.md。
// registerPublishComponent(server, env, orgNamespace);
registerSearchWorkflows(server, env, orgNamespace, partnerToken); // workflow-discovery R2
registerListComponents(server, env, orgNamespace);
registerGetComponent(server, env, orgNamespace);
registerGetComponentGuide(server, env, orgNamespace);
// registerGetComponentGuide(server, env, orgNamespace); // 同上,2026-07-21 停用
registerCreateTag(server, env, orgNamespace);
registerListTags(server, env, orgNamespace);
registerDeleteTag(server, env, orgNamespace);