• claude-code released this 2026-08-28 12:38:19 +00:00 | 0 commits to main since this release

    🔴 v0.15.0 上線之後,這個環境完全派不出任何工。 這一版修它。

    撞到的長相

    派給 isep:isep-hand  → roster-guard:「名單上沒有這個人」
    派給 isep-hand       → Claude Code:「Agent type not found」
    

    兩種寫法都不通,而且自己做也不行——subagent-first-guard 要求先派過工。雙向死鎖。

    根因

    Claude Code 給 plugin agent 的 subagent_type 帶前綴isep:isep-hand),而 agents/*.md 的 frontmatter name 沒有前綴isep-hand)。roster.find() 用完全相等比對 ⇒ 它永遠不可能認得真實的值

    修法是允許 <plugin>:<name>,冒號後面那半才拿去比;裸名字仍然收(人會照 roster list 直接貼),不存在的仍然擋(剝前綴不能變成放行任何東西)。

    🔴 為什麼 24 條測試一條都沒抓到

    因為它們全部餵手寫 payload,沒有一條用真實的 subagent_type 形狀。測試驗的是「這支閘的邏輯對不對」,沒有驗「它接到的東西長什麼樣」。

    已補第 19 條專測它,而且做了有鑑別力的對照

    舊 roster.py + 新測試   → 第 19 條紅(24 通過 / 1 失敗)
    修好後                  → 25/25 全綠
    

    📌 第一次做對照時我把測試檔一起 git stash 了 ⇒ 對照組只跑了 24 條,等於沒對照到。只還原 roster.py、保留新測試,才是真的對照組。

    順手補上 gate-ok 漏掉的 roster

    gate-okv0.12.0 做的(把七種形狀各異的逃生口收斂成一個名字),但 v0.15.0 新增 roster-guard沒有同步那份清單 ⇒ 撞上死鎖時連留痕的出口都沒有,只能手工建檔。

    新增一支會擋人的閘時,它的逃生口要同時進 gate-ok,否則出口只存在於那支閘的錯誤訊息裡。

    這一版是怎麼被做出來的(留痕)

    派不出工、又不准自己動 code ⇒ 蓋了 gate-ok solo 戳記自己修。理由命中 CLAUDE.md 寫的兩種正當情形:hook 自己緊急止血

    總管自己驗的

    roster-guard    25/25(新增第 19 條,對照組驗過有鑑別力)
    隔離重跑全套    36 支全綠 / 0 紅
    gate-ok roster  實跑蓋得出戳記、用法列表印得出來
    

    📌 票:inkstone/ISEP#86 的迴歸|PR:#108

    Downloads