問題
#201(PR #207)立了一個比 #172 更好的慣例:未實作的工具在 description 裡就講明「目前未實作,呼叫會回 isError」。但同一份 tools/list 現在半邊誠實、半邊不誠實:
| 表面 |
現況 |
protect_document / unprotect_document / set_document_password / remove_document_password / restrict_editing_region 的 description(Server.swift:4767-4852) |
仍是「設定文件保護(限制編輯、唯讀等)」「設定文件開啟密碼(加密保護)」這類無保留敘述;runtime 已誠實(#172 會 throw),缺口只在呼叫前的廣告 |
README.md:22, 623、README_zh-TW.md:17, 479 |
「Theme + Header/Footer/Watermark CRUD」——watermark 只剩 R 是真的 |
macdoc plugins/che-word-mcp/{CLAUDE.md:31, README.md:293, skills/che-word-mcp/SKILL.md:183} |
把三個 watermark 寫側工具列為可用能力;SKILL.md 是 LLM 選工具時實際載入的那份(macdoc 側,隨 4.0.11 的 shell bump 一併改) |
失敗情境:使用者要求「把這份機密文件加密後寄出」,模型在 tool list 只看到一句宣稱能加密的描述,可能先在散文裡承諾「已加密」再吃到 isError。
要做的事
repo 的版本 checklist 只在「工具數量變動」時要求動 README,所以沒有 gate 會抓到這類過度宣告——順手在 CLAUDE.md 的 checklist 加一條「新增/移除 not-implemented 註記時同步 README」。
Source: surfaced during /idd-verify #201 (Step 5b) — security S4, regression F2 / F6 / F7, requirements F4; report: #207 (comment)
問題
#201(PR #207)立了一個比 #172 更好的慣例:未實作的工具在 description 裡就講明「目前未實作,呼叫會回 isError」。但同一份
tools/list現在半邊誠實、半邊不誠實:protect_document/unprotect_document/set_document_password/remove_document_password/restrict_editing_region的 description(Server.swift:4767-4852)README.md:22, 623、README_zh-TW.md:17, 479plugins/che-word-mcp/{CLAUDE.md:31, README.md:293, skills/che-word-mcp/SKILL.md:183}失敗情境:使用者要求「把這份機密文件加密後寄出」,模型在 tool list 只看到一句宣稱能加密的描述,可能先在散文裡承諾「已加密」再吃到 isError。
要做的事
repo 的版本 checklist 只在「工具數量變動」時要求動 README,所以沒有 gate 會抓到這類過度宣告——順手在
CLAUDE.md的 checklist 加一條「新增/移除 not-implemented 註記時同步 README」。Source: surfaced during /idd-verify #201 (Step 5b) — security S4, regression F2 / F6 / F7, requirements F4; report: #207 (comment)