AIエージェントの応答に必須フッターを機械で強制する(ヒントではなくゲートにする)
「で、私は何をすればいいの?」「この画面は閉じていいの?」を利用者に聞かせないため、応答末尾の3行フッターを hook で強制する型。ヒント方式が素通りする落とし穴と、委譲修正を検証する不変量ゲートまで。
約3.9万トークンの節約 (API料金換算で約58円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「AIエージェントの応答に必須フッターを機械で強制する(ヒントではなくゲートにする)」は、AIのしつけカテゴリのAI指示書(MDファイル)です。「で、私は何をすればいいの?」「この画面は閉じていいの?」を利用者に聞かせないため、応答末尾の3行フッターを hook で強制する型。ヒント方式が素通りする落とし穴と、委譲修正を検証する不変量ゲートまで。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約3.9万トークン(API料金換算で約58円)・92%のトークンを節約できます。
- カテゴリ
- AIのしつけ
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約4.2万トークン
- この巻物使用時
- 約3,400トークン
- 節約量
- 約3.9万トークン (約58円)
- 更新日
- 2026-09-17
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/md-4f308cbc/raw を読み込んで、この指示書どおりに実装して"
中身
AIエージェントの応答に必須フッターを機械で強制する(ヒントではなくゲートにする)
何が解決するか
AI エージェントに作業させていると、利用者が毎回同じことを聞き返す。
- 「で、私は何をすればいいの?」
- 「この後は誰がいつ動かすの? 私はいつ結果を知るの?」
- 「この作業画面はもう閉じていいの? 消していいの?」
「毎回これを書いて」とプロンプトやメモリに書いても守られない。守らせる仕組みが要る。 この指示書は、エージェントの応答末尾に決まったフッターが無ければ応答の終了をブロックするゲートの作り方を示す。
前提
- エージェントのホストに、応答終了時に外部プロセスへ本文を渡して block/pass を返せるフック機構があること
(Claude Code の
Stophook、他ツールの同等機構、自前ラッパでも可)。 - フックは stdin で
{ transcript_path, session_id, ... }を受け取り、stdout に{"decision":"block","reason":"..."}を返すと再実行を促す、という形を想定する。
必須フッターの設計(3行。1行でも欠けると聞き返される)
次に <利用者>がすること: なし
この後の自動進行: <誰が・何を・いつ・どうやって利用者に届くか>
このセッション: <閉じてよい / まだ閉じない(理由) / もう削除してよい>
設計上の勘所:
- 1行目は「なし」か1件だけにする。2件以上並ぶなら手渡しが多すぎるので、まずエージェント側で潰させる。
- 2行目が本命。手番の有無だけでは足りない。実際、1行目だけを義務化した運用で、 エージェントが「あなたがすること: なし」と書いた直後に利用者から「で、この先どうするの?」と聞かれた。 利用者の疑問は「自分の手番」ではなく「この件は誰がいつ進めて、自分はいつ知るのか」だった。
- 3行目は「この画面を閉じてよいか」への答え。3分類に固定すると判定可能になる。 自由記述にすると「たぶん大丈夫」のような判定不能な答えが出る。
実装手順
1. ゲート本体を1ファイルで作る
判定対象はエージェントの最終メッセージ本文。次を block 条件にする。
- 3行が末尾にこの順で連続していない(行間の空行1つまでは許容)。
- 1行目の値が空、または「なし」以外で2件以上を列挙している。
- 2行目の値が空、または極端に短い(例: 10文字未満)。
- 3行目の値が3分類のどれにも判定できない。
矛盾チェックを必ず入れる(ここが効く):
- 本文に待ち状態を示す語(
完了通知待ち実行中バックグラウンド定期実行CI)があるのに 2行目が「なし(完了)」→ block。 - 本文にバックグラウンド実行中を示す語があるのに 3行目が「閉じてよい」「削除してよい」→ block。 ジョブが宙に浮く。
- 3行目が「クローズ手続き実行済み」なのに、会話にその形跡が無い → block。 実行していないことを実行済みと書かせない。
2. 誤爆防止を最初から入れる(これが無いと運用が止まる)
次は必ず pass にする。
- 本文が短い応答(例: 200文字未満)。相槌・一問一答まで止めると作業にならない。
- 本文が質問で終わっている(末尾が
?/?)。利用者に選択を求めている最中。 - 環境変数で無効化されているとき(緊急時の逃げ道を必ず用意する)。
3. 既存のフック集約点へ独立したゲートとして登録する
ここが最大の落とし穴。
多くの実装では、この種の注意書きを「他のゲートが block した時に、ついでに出すヒント」として足してしまう。 擬似コードで言うと:
if (verdict !== 'block') return { record }; // ← 全ゲート pass なら、ここで返ってしまう
const sections = results.map(...);
if (!FOOTER.test(text)) sections.push('ヒント: フッターを書いてください'); // ← ここまで到達しない
クリーンな応答では誰も強制しないので、書き忘れがそのまま素通りする。実測でこの状態のまま 7日間に9回、利用者が同じことを聞き返していた。
正しくは、他ゲートと同列の配列にゲートとして追加し、単独で block できるようにする。 ヒント表示は残してよいが、ゲートが block した時に二重表示しないこと。
4. テストを書く(最低8ケース)
- 3行揃っている → pass
- 1行だけ → block
- 2行だけ → block
- 3行あるが本文の途中で、末尾でない → block
- 1行目に2件列挙 → block
- 本文が「バックグラウンド実行中」なのに3行目が「閉じてよい」→ block
- 短い応答 → pass(誤爆防止)
- 質問で終わる応答 → pass(誤爆防止)
さらに**「他ゲートが全部 pass でも、このゲート単独で block できる」ケースを1本**必ず入れる。 これが §3 の根本原因に対する回帰テストになる。
検証(ここを省くと直った気になるだけ)
実バイナリへ流して確かめる
ユニットテストだけでなく、フック本体に stdin で実際のペイロードを流す。
一時ディレクトリをホーム扱いにして transcript ファイルを作り、{decision} を読む。
「フッター無し → block」「フッターあり → pass」を両方通す。
不変量ゲート(委譲したときは特に重要)
修正を他のエージェントやツールに委譲した場合、「直った軸」だけを確認して合格にしない。 同時に「この修正で変わってはいけない量」を before/after で数える。
このパターンを作った時、別の修正を委譲したところ、指示した軸は直っていたが 仕様に無い変更が紛れ込み、自動実行対象の項目数が 42 → 75 に増えていた。 増えた中には本番デプロイを叩く項目が含まれていた。 CI は全ジョブ green、ユニットテストも全 pass。既存テストが「増えないこと」を 誰も検証していなかったからである。
不変量の選び方:
- 「この修正の対象ではないが、壊れると危険な出力」。
- 無人・自動実行系なら 実行対象の集合が第一候補。増えた分だけ勝手に着手されうる。
- 修正前のコードは、リビジョン管理から作業ツリーを別途取り出して同じ実データを食わせると比較しやすい。
差し戻すときは既存ブランチへ追加コミットさせ、新しい変更要求を作らせない。
運用に乗せる
- ゲートはリポジトリに入れ、配布の仕組み(マニフェスト等)に載せる。 フック集約点の内部に足した場合、フック登録の追加は不要なことが多い。実際に確認して記録する。
- 同じ内容をエージェントの永続メモリにも書く。ゲートは「書き忘れを止める」だけで、 「何を書くべきか」は知らせないため、両方必要。
- 無効化用の環境変数を必ず1つ用意し、その名前をメモリにも書いておく。
この指示書の効果
ゼロから設計すると、3行の中身の決定・誤爆条件の洗い出し・ 「ヒックではなくゲートにする」という最重要の気付きに、試行錯誤が必要になる。 特に §3 の落とし穴は、実装した本人でも 「書いたのに効かない」状態に気付くまで時間がかかる(実測で9回の再発を要した)。
よくある質問
+「AIエージェントの応答に必須フッターを機械で強制する(ヒントではなくゲートにする)」とは何ですか?
「で、私は何をすればいいの?」「この画面は閉じていいの?」を利用者に聞かせないため、応答末尾の3行フッターを hook で強制する型。ヒント方式が素通りする落とし穴と、委譲修正を検証する不変量ゲートまで。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約4.2万トークンかかりますが、この巻物を使えば約3,400トークンで済みます。差し引き約3.9万トークン(API料金換算で約58円)・92%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
AI運用ルールを機械的に守らせる hook 設計 — ルール文が守られない本当の理由
チームでAIエージェントを使うと運用ルールが必ず守られなくなる。真因は「読んでいない」ではなく hook がそのマシンで登録されていない/委譲先が沈黙して壊れていること。禁止=実行前拒否・誘導=依頼時の具体コマンド注入・担保=セッション開始時の自己修復の3層、明示例外の短命トークン、warn→blockの段階昇格、BOM/サンドボックス/timeout など失敗が沈黙する罠と、環境依存で落ちないテストの作り方までを実測ベースでまとめた導入手順。
AIの応答を止める番人hookを1ランナーに統合し、書き直しを最大1回にする(誤爆率をfixtureで先に測る)
Stop hook を9本積んだら Stop の65%が書き直し・最多ゲートの91%が誤爆だった。誤爆測定→否定文除外→1プロセス合流→再試行上限統一→全PC移行→KPIで効果確認までの手順。
定額プランの最上位モデルを枯渇させずに使う「二段レーン」設計
5時間/週の枠を桁違いに食う最上位モデルを、長時間タスクと失敗時の昇格だけに自動で当て、上限に当たったら既定モデルへ退避する委譲レーンの作り方。判定は純関数・検証まで含む。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア