この記事は、連載「AIの意見を聞かない技術」の第 8 回です。うまくいかない症状と、その対処を一つずつ並べています。各回はファイルやスクリプトを一つ置けば完結します。その仕組みがなぜ要るのかは、置いたあとに解説を読めば分かります。連載の全体像と各回の一覧は序論にあります。
今回は、ここまで置いてきた禁止事項の一覧そのものの話です。が断った AI の提案を、開発のときに許さない禁止事項として書き溜めてきた一覧のことです。提案を断るたびに書き足していったら、この一覧もいつか、AI に守られない文書になるのではないか。前作「読まない技術」の序論は「ルールは足すほど薄まる」から始まりました。指示ファイルにルールを 1 つ足すと、ほかのルールに向く AI の注意が少しずつ減る、ということです。それでもは、この一覧を整理していません。
AI に守らせたい禁止事項や方針を書き溜めているなら、それがどこにあるかを確かめてみてください。指示ファイル(CLAUDE.md や AGENTS.md)の中にありますか。それとも別のファイルにあって、指示ファイルには、その場所だけが書いてありますか。
CC BY 4.0
禁止事項の 17 件は、指示ファイルの外にあります
の手元の本番プロジェクト——typingtube という、YouTube の音楽動画でタイピング練習ができる Web サービスです——では、禁止事項の一覧は 1 枚のファイルで、17 件あります。指示ファイルには、よく参照するファイルを並べた箇所に、その場所を書いた 1 行があるだけです。第 1 回の測定では、相談を受けたサブエージェント(メインの会話を引き継がず、別に立ち上がって働く AI)が、2 体とも自分でこの一覧を開いて、頼まれたことを断りました。
あなたは、AIの同じ提案を二度目に断ったときに、その判断を禁止事項の一覧に 1 件ずつ書いてきました。一覧は 1 枚のファイルで、指示ファイルには、その場所を書いた 1 行だけを置いています。AIは、セッションの始めに指示ファイルを読み込み、一覧のほうは、要ると判断したときに開きます。書き足してきた一覧も、ルールを足すほど薄まって、いつかAIに守られない文書になるのではないかと心配になりました。この一覧を、あなたなら次のどちらにしますか。
- 一覧を定期的に読み返して、古い項目と重複を削り、件数を減らす
- 一覧は整理せず、案内の 1 行から必要なときに開かれるままにしておく
答えは、整理せずに置いておくほうです。足すほど薄まるのは、AIが応答のたびに読み込むものが増えたときで、毎回読み込まれる指示ファイルの中で一覧が占めているのは、場所を書いた 1 行だけです。一覧の中身は、AIが一覧を開いたときにだけ、コンテキストに入ります。一覧の項目を削って件数を減らしても、毎回読み込まれる量は変わりません。の手元でも、禁止事項の 17 件は 1 枚の一覧にあり、指示ファイルからは 1 行で案内しています。
理解したことは一文にできます。
足すほど薄まるのは、毎回コンテキストに読み込まれるものだ。禁止事項の一覧は、必要なときだけ開かれるので、件数が増えても、毎回読み込まれる量は増えない。だから一覧は、件数を減らすために整理しない。
なぜ、一覧の件数が増えても、毎回読み込まれる量は増えないのか
Claude Code のドキュメントによると、セッションの始めに読み込まれるのは指示ファイルで、指示ファイルが @ で取り込んだファイルは、取り込んだ指示ファイルと一緒に読み込まれます。同じページは、@ で取り込んで分けても、コンテキストに載る量は減らない、とも書いています。の禁止事項の一覧は、指示ファイルが場所を 1 行で書いているだけのファイルで、@ では取り込んでいません。セッションの始めに読み込まれるのは、その 1 行です。一覧の中身は、AIがファイルを読むツールで一覧を開いたときに、コンテキストに入ります。
一覧の件数が効いてくるのは、AIが一覧を開いたときです。第 1 回で書いたとおり、開いたときには、相談に関係しない項目まで、全部の項目がコンテキストに入ります。
CC BY 4.0 はここまで
整理しなくなったもの
禁止事項の一覧そのものです。定期的に全文を読み返して、古いものを探し、重複を統合する当番の仕事を、はやめました。当番の仕事が要らなくなったのは、一覧が、毎回は読み込まれない 1 枚のファイルにあるからです。
CC BY 4.0
注意: 件数を減らす整理をやめても、一覧と実装のずれは残る
件数のための整理をやめても、一覧の中身が正しいままとは限りません。
第 1 回では、サブエージェントに、が一度断った提案を投げて、AI が禁止事項の一覧を見つけて断るかどうかを測りました。そのときサブエージェントは、が依頼していないことまで教えてくれました。禁止事項の一覧にはコストが固定値のように書いてあるが、実際の計算式では条件によって幅があり、書いてある数字はその一点でしかない、と。同じ測定で別の 1 体が行き当たった禁止事項は、実装と合っていました。実装と合っていた禁止事項には自動テストがあり、コストの禁止事項には自動テストがありませんでした。禁止事項の一覧には、項目ごとに「機械検証」の見出しがあり、その禁止事項を見ている自動テストや hook(コマンドの前後に割り込んで走るスクリプト)があるかどうかを書いています。「機械検証: なし」の項目は、自動テストも hook も見ていないので、実装が変わっても誰も気づかないまま、書いてあることと実装がずれていきます(第 5 回)。
検証手順: 新しいセッションで、一覧が読み込まれていないことを確かめる
前提
禁止事項の一覧を 1 枚のファイルに置き、指示ファイルには、その場所を書いた 1 行だけを置いておきます。@ では取り込みません。
所要時間: 5 分
手順
- あなたが、新しいセッションを立てます。AI には、まだ何も頼みません
- あなたが、
/contextを打ち、「Memory files」の一覧を見ます。Claude Code のドキュメントが、指示ファイルが読み込まれたかを確かめる方法として挙げている一覧です
合格条件(すべて満たすこと)
合格の条件は 2 つです。1 つ目に、指示ファイルが「Memory files」の一覧に出ていることを確かめます。2 つ目は、禁止事項の一覧のファイルが、その一覧に出ていないことです。
合格しなかったとき
- 禁止事項の一覧のファイルが出ている —— 指示ファイルが、一覧を
@で取り込んでいます。@を外し、場所を書くだけの 1 行にします - 指示ファイルが出ていない —— そのセッションは、指示ファイルを読み込んでいません。一覧の場所を書いた 1 行も、AI に届いていません
後始末
要りません。見るだけなので、ファイルは元のままです。
CC BY 4.0 はここまで
次回は最終回、「選択肢を選ばない技術」です。
連載「AIの意見を聞かない技術」
- ← 前回: 第 7 回 AIの話を聞かない技術
- → 次回: 最終回 選択肢を選ばない技術
- 全回の一覧: 序論 断ったはずの提案が、また来る