Files
ISEP/hooks/tests
Leo b9533527cc fix: 前端驗證閘先看這台有沒有瀏覽器能力,再要求用它(inkstone/ISEP#121)
browser-verify-guard.sh 舊版每回合都要求 mcp__Claude_Browser__*,但那套工具在
雲端這台叫不出來(ToolSearch:No matching deferred tools),容器內 chromium 也
連不出去(ERR_TUNNEL_CONNECTION_FAILED)⇒ 2026-09-01 一整天每回合誤攔一次,
在懲罰一個「這台辦不到」的要求。

閘現在先判斷「這個 session 有哪種瀏覽器能力」(正向存在性檢查,不是關鍵字):
- CF Browser Rendering:環境變數 CLOUDFLARE_API_TOKEN_YOULIN_CC_USE +
  CLOUDFLARE_ACCOUNT_ID_YOULIN 都在場(雲端首選)
- Browser MCP:這個 session 的 transcript 出現過 Claude_Browser__
- 容器內 chromium:ISEP#121 實測雲端連不出去,不當能力來源

判準是「有沒有用某種瀏覽器能力」這個動作:這回合叫過 Claude_Browser__(computer…)
或打過 .../browser-rendering/ 端點 ⇒ 放行。有能力卻沒用它 ⇒ 擋,且教實際可用的
那一種(CF 教 browser-rendering 端點的 curl,MCP 教三步)。一種能力都沒有 ⇒
訊息改成「缺什麼、怎麼補」(找 leo 幫 token 加 Browser Rendering: Edit/明說
「本次無前端」),且每個 session 只提醒一次(stamp),不再每回合誤攔。

測試 hooks/tests/browser-verify-guard.test.sh(14/14,全離線):
- C 群演練「一種能力都沒有」:第一次提醒一次、同 session 第二次放行(不再誤攔)
- B 群:有 CF 能力教 CF 不教 MCP;只有 MCP 能力教 MCP 不教 CF
- A 群:用過某種瀏覽器能力/明說本次無前端 ⇒ 放行;fail-open

docs/TESTING.md 加 A43;docs/hooks-inventory.md 更新該支說明(+0 支、+0 條、
腳本不變:62 支、88 條當場數出)。

版本待總管定(plugin.json 未動)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TGxitYq49FzYC7EFkbhzF5
2026-09-18 18:00:11 +00:00
..