エージェントに完了時の複数義務を守らせるルール/スキル設計(hookなし)
設計判断
AIエージェント
プロンプト設計
グローバルルール(エージェントのメモリファイルや常時読み込み指示)に「作業完了時に必ず A と B を確認する」と複数の義務を書いても、エージェントが片方だけ実行してもう片方を黙って落とす、または両方落とす取りこぼしが起きる。hook(決定的な後処理フック)を使わずに発生率を下げるための設計判断。
なぜ取りこぼすか
- メモリファイル(CLAUDE.md / AGENTS.md 等)の散文はセッション開始時に一度読まれ、ターンが進み出力が積み上がるほど salience が減衰する。義務が発火すべき「作業完了時」はセッション後半に来るため、最も効きが落ちた時点になる。
- スキルの description は毎ターンのシステムプロンプトのトリガー一覧に再掲されるため減衰しにくい。ある義務がスキルを持つか散文だけかで想起確率が非対称になり、スキルを持つ義務だけ実行され散文だけの義務が落ちる。
- 「at the end of work」「作業完了時」のような時間ベースのトリガーはモデルが自己判定できず発火しづらい。
- 「〜を飛ばすな」という否定形の補強は、低 salience な位置に置くと思い出された時しか効かず、思い出すトリガーが無ければザルになる。
設計の判断基準
- 繰り返す義務には散文だけでなく名前付きスキルを与え、トリガー一覧に常駐する想起アンカーを対称化する。義務間でアンカーの有無に差を作らない。
- 独立した複数チェックは別々のブロックに散らさず、1つの可視チェックリストに co-locate する。片方を想起した瞬間にもう片方も同じ視界に入るため、「片方だけやって片方を落とす」非対称な取りこぼしを構造的に減らせる。配置は先頭(primacy)と末尾の自己検証ゲート(recency)を併用する。
- 各チェックは「該当なし」でも結果を一行で必ず明示させる会計ゲートを置く。黙ってスキップを「該当なしと書く」可視アクションに変換でき、沈黙の取りこぼしを検出可能にする。
- トリガーは「作業完了時」ではなく、モデルが必ず発話する観測可能なイベント(最終メッセージを書く直前、完了報告の直後、特定ツールを呼んだ直後)に紐づける。
- 一般化した汎用知識(横断再利用)とプロジェクト固有の記録(その案件の判断)は別ストアに分け、チェックを互いに独立させる。一方が空でももう一方をスキップする理由にしない。
限界と検証
- hook なしの施策は決定論的保証ではなく発火確率の改善にとどまる。そのターンを「作業完了」と分類しない限り全配置が不発になりうる。確実な強制が要るなら完了時 hook(停止時フック)が唯一の手段で、ルール/スキルは確率を上げる層という位置づけ。
- 効果は、完了時に各チェックの結果(実施 or 該当なし)が毎回一行で出るか、片方だけで終わるターンが減るかで確認する。出ないターンが残るなら、トリガーを観測可能イベントへさらに具体化する。