dev-agent-teamシリーズの8本目。 前回(AIの自律度でツールを3階層に並べる)で、 自作キットは「Tier 3に人間の線引きを持ち込む型」だと定義した。 今回は、その線引きを文章の約束から、ランタイムの仕組みへ固め直した話。
- 本体の新機能7件を、敵対的検証(哲学整合・重複・事実の3レンズ)を通して取り込んだ
- 核は「人間ゲートを越えさせない」をpermissions/hooksで物理固定できるようになったこと
- ただし〔機械検証可〕だけhooks化し、〔人間判断〕は自動化を禁止する
Claude Code v2.1.198〜v2.1.207で、まとまった数の機能が入った。
この改善(PR #22)は、
それらを dev-agent-team-evolve ワークフローで調査し、
敵対的検証を通過した7件だけを取り込んだ記録だ。
検証は3つのレンズで行った—— 哲学整合(キットの原則と噛み合うか)、 重複(既存の記述と被っていないか)、 事実(公式CHANGELOG / docsで裏が取れるか)。 「便利そう」で入れず、この3つを通ったものだけを残す。
1. これまでは「文章の約束」で守っていた
このシリーズの背骨は一貫して「人間の承認ゲートはエンジンに越えさせない」だ。 だが、これまでその約束はドキュメントに書いてあるだけだった。 「ここは人間が判断する」とMarkdownに記しても、 実行時にAIがうっかり(あるいは器用に)越えてしまう余地は残る。
今回の7件で本質的に効いたのは、 その約束をランタイムの仕組みで裏打ちできるようになったという点だ。
Before — 約束
- 「ここは人間が承認」とdocに書く
- 守るかはAIの振る舞い次第
- 偽装・すり抜けの余地が残る
After — 仕組み
- permissionsのdeny/askで物理固定
- hooksで機械的Stop Conditionを強制
- 承認≠エージェントメッセージを裏付け
2. 人間ゲートのランタイム裏付け
まず土台として、本体側に「承認」を仕組みで担保する変更が入った。
これを docs/native-tooling-integration.md の新設節と CONCEPT.md に反映した。
- 承認 ≠ エージェントメッセージ(v2.1.198)—— AIが「承認されました」と言うことと、実際に人間が承認したことは別、という区別がランタイムで裏付けられた。
- AskUserQuestion の既定待機(v2.1.200)—— 人間に問うたら、答えが来るまで止まるのが既定挙動になった。Human Decision Pointの実装に直結する。
- 承認偽装の防止(v2.1.205)—— 承認フローそのものを偽装できないよう固められた。
これで「人間が判断する」は、お願いベースではなくランタイムが担保するものになる。
3. 境界を permissions と hooks で物理固定する
裏付けができたので、Human Decision Point(HDP)の境界を具体的に固定した。
- HDP境界の permissions 恒久化(§新設)——
「ここから先はAIに触らせない」を
deny/askで物理的に固定する。 人間の判断が要る操作を、権限レベルで止める。3層の役割分担表と、 権限設定が壊れやすい(fragile)ことへの警告つきで明文化した。project-rules-templateにも反映。 - Stop Condition の hooks 化(§新設)—— Stop Condition(どこで止まるか)のうち〔機械検証可〕のものだけをhooksで強制する。 テストが通る・lintが消える、のように機械が成否を判定できるものだ。 Phase 6にも機械検証可のSCを追加した。
大原則は不変。hooks化するのは〔機械検証可〕のStop Conditionだけで、〔人間判断〕のStop Conditionはhooks化を禁止する。人間が判断すべき場所を機械の自動判定に置き換えたら、この型は死ぬ。
4. レビューの3層分離とマージ判断
本体で /review と /code-review(v2.1.202)が分離されたのを受けて、
Phase 7とレビュー系コマンド(/pr-review)を全面的に手当てした。
レビューを3層に分けても、最終的なマージ判断は人間——ここは動かさない。 ツールがどれだけレビューを賢くしても、「これをmainに入れてよいか」の判断は Human Decision Pointのまま残す。§4の判断早見表にもこの対応を追記した。
5. 自律機能の配布経路と、部分結果の扱い
残りは、強力な自律機能をどこまで配るかの線引きだ。
- ultracode / workflow size / autoMode の配布経路 ——
/effort ultracodeのような強い自律設定は、 HDPを含むセッションでは有効化しないと定めた。 自律度を上げてよいのは、人間判断を挟まない機械的な区間だけだ。safe-implementにも反映。 - subagent信頼性 + 部分結果リカバリ ——
subagentが一部失敗しても、欠落を隠さず人間の判断材料として見せる。
「動いたふり」をさせない。
dev-agent-discovery.jsにも実装(node --check通過)。 - Agent Teams(実験的機能)の併用ルール —— リード役の plan approval は品質フィルタであって、HDPの代替ではない。 AI同士のレビューで質は上がるが、それは人間の承認を省く理由にはならない—— 2段ゲート原則(AI品質フィルタ+人間承認)として新設節に明記した。
6. まとめ——約束を仕組みに変える
今回の7件を貫くテーマは一つだ。 これまで文章で守っていた人間ゲートを、ランタイムの仕組みで固定できるようになった。
- 新機能は3レンズ(哲学整合・重複・事実)の敵対的検証を通ったものだけ取り込む
- HDPの境界は permissions のdeny/askで物理固定する
- Stop Conditionのhooks化は〔機械検証可〕限定、〔人間判断〕は禁止
- レビュー分離・Agent Teamsが進んでも、マージ判断は人間(2段ゲート)
型の良し悪しは、破られたときに分かる。 約束は破れるが、権限で閉じたゲートは破れない。 本体がランタイム側の裏付けを用意してくれたおかげで、 このキットの「人間が判断する場所」は、いよいよ言葉から仕組みへと降りてきた。 次回は、そのキット自身のドキュメントの綻びを、 自作の検証ワークフローに掃除させた話を書く。
リポジトリはこちら: fecot/dev-agent-team