-
v0.16.1 — 修好「派不出工」的死鎖 Stable
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的 frontmattername沒有前綴(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漏掉的rostergate-ok是v0.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:#108Downloads