身為在測試場工作的 AI,我要打到 leo 真庫的那一刻被擋下來,我才不會用他的資料做我的實驗 #69
Notifications
Due Date
No due date set.
Blocks
#30 讓閘擋對東西
inkstone/ISEP
Reference: inkstone/ISEP#69
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
身為在測試場工作的 AI,我要打到 leo 真庫的那一刻被擋下來,我才不會用他的資料做我的實驗、也不會拿他的庫得出假結論。
leo 2026-08-27 的原話
實況(總管實查)
這台有兩條 Arcrun MCP 連線,工具名是兩串亂碼 UUID:
總管一整天用的是第一條(leo21c),而所有測試資料寫在 youlin。
⚠️ 範圍要講清楚:打在 leo21c 上的全是唯讀查詢(
kbdb_search/kbdb_get_map/whoami),沒有寫入、沒有 ingest。但唯讀也不該發生,而且它造成三次假結論:
🔴 最難看的一格:總管今天每一份派工單都親手寫著
「測試一律用 youlin,絕對不要碰 leo21c」——規則寫給別人,自己一次都沒套用。
要達成什麼
任何打向 leo21c 的呼叫都會被攔下來,除非明說要打它。
判準只有一句:測試場是預設,真庫是例外。 現在的預設反過來了——
工具清單裡先出現哪個就用哪個,而那完全是隨機的。
這一格要你自己判斷
arcrun_whoami是可靠的(實測過),但那要先呼叫一次——閘能不能拿到這個資訊?兩者都該擋,但訊息要不一樣(唯讀那個要說「你可能正在查錯地方」)
怎麼驗
mcp__00402d88…__kbdb_search→ 擋,訊息點得出「這是 leo21c,測試場是d0eaf65b」mcp__d0eaf65b…__kbdb_search→ 放行arcrun_whoami本身(那是用來確認身份的,擋它會造成死結)紅線
如果只能寫死,要有辦法在它失效時大聲失敗,而不是靜默放行
plugin.json要升版,做完自己走一次出貨流程claude-code、改 tag【身份】subagent/inkstone/ISEP/feat/leo21c-mcp-guard
新增
hooks/leo21c-mcp-guard.sh,判準:任何打向 leo21c 座標的kbdb_*/arcrun_*MCP 呼叫一律擋,除非明說(touch /tmp/.leo21c-mcp-ok,單次、15 分鐘、留痕到.claude/hooks/leo21c-mcp-guard.log)。arcrun_whoami本身永遠放行。實測(
hooks/tests/leo21c-mcp-guard.test.sh,19/19 通過):mcp__00402d88-…__kbdb_search(唯讀)、kbdb_get_map、kbdb_create_record(寫入)、arcrun_push_workflow(寫入)——四種都命中真庫座標mcp__d0eaf65b-…__*(youlin 測試場)——讀寫都放行arcrun_whoami打三種座標(leo21c/youlin/未知 UUID)都放行——確認不會造成死結讀寫訊息不同:唯讀命中真庫的訊息是「你可能正在查錯地方」(附三個真實假結論案例);寫入命中真庫的訊息是「這會汙染真資料」。兩者都擋,差別只在措辭。
已知限制(查過,答案是「查不到」,不是猜測):
~/.claude.json等本機設定檔裡找不到這兩條 Arcrun MCP 連線的來源設定,判斷是雲端 connector 層動態配發 UUID,重裝/換 session 會換掉。所以這兩個 UUID 是寫死的(2026-08-27 由arcrun_whoami實測得到),設計上用「未知 UUID 一樣擋+訊息明講清單可能過期」來滿足「大聲失敗、不要靜默放行」,而不是假裝有辦法動態驗證身份。同時做了(工程紀律,不是額外功能):
hooks/hooks.json掛上新 matcher:.*mcp__[0-9a-fA-F-]+__(kbdb_|arcrun_).*docs/hooks-inventory.md補一行;順手發現這份表本身跟磁碟實況有落差(47 vs 49 個檔)——isep-presence-beacon.sh/milestone-due-guard.sh疑似兩支舊閘沒被收錄,不是本票範圍,沒有動它們,已在文件裡註記留給總管或後續票核實.claude-plugin/plugin.json:0.5.0 → 0.5.1claude plugin validate .通過分支:
feat/leo21c-mcp-guard(已推),未動 main。tag/release 照慣例留給總管在 merge 時打。下一步:總管複驗(可另開真的兩條 MCP 連線手動撞一次,或直接信任上面的合成測試)後合併;若之後任何一條 MCP 連線重裝換了 UUID,第一個呼叫會被「未知 UUID」那支訊息擋下,屆時更新本檔開頭的
LEO21C_UUID/YOULIN_UUID常數即可。