🔄

AIにルールを教えようとして無限ループにハマった話

に公開

2日間で11回ルールファイルを書き換えた

Claude Codeを使ってWebページを取得する作業をしていたときの話。AIに「この方法で取得して」というルールを書いたファイル(webfetch.md)を、2日間で11回も書き換えることになった。

最初は「AIがルールを守らない」と思った。でも11回目の変更で気づいた。問題はAIではなく、私の「ルールを書けば解決する」という前提だった。

何が起きたのか

Day 1: ルールを書く

WebFetchツールで空ファイルが25個も作られる問題が発生。原因は、AIが取得前に空ファイルを作成し、取得失敗時にそのまま残るパターン。

「じゃあルールを書こう」と思って、webfetch.mdにこう書いた:

## 禁止事項
- 取得前にファイルを作成しない
- 必ず取得成功を確認してから保存

Day 1: ルールが守られない

数時間後、また空ファイルが作られた。AIはルールファイルを読んでいたのに。

「ルールが足りないのか」と思って追記した:

## 禁止事項
- 取得前にファイルを作成しない
- 必ず取得成功を確認してから保存
- 空ファイルを残さない
- 取得失敗時は即座にファイルを削除

## 手順
1. まずWebFetchで取得
2. 内容を確認
3. 問題なければ保存
4. 失敗したらファイルを作らない

Day 1: さらに複雑化

それでも問題が起きる。ルールを読んでいるのに守られない。

「具体例が必要なのか」と思って、NG例とOK例を追加。ルールファイルは100行を超えた。

Day 2: 削除して元に戻す

ルールファイルが複雑すぎてメンテナンスできなくなった。「そもそもこんなに書く必要ある?」と思って大幅に削除。

でも削除したら、また空ファイル問題が発生。

Day 2: 11回目の変更で気づく

11回目の変更をしようとしたとき、ふと気づいた。

「書く→欠損→増やす→複雑化→削除→元に戻る」

これ、無限ループだ。

なぜ無限ループになるのか

AIにルールを教えるアプローチには、構造的な限界がある。

限界1: AIはルールを「読む」が「覚え続け」ない

AIはセッション開始時にルールファイルを読む。でも、長いセッションではコンテキストが圧縮され、ルールの一部が欠損する。

私が「ルールを守らない」と感じたケースの多くは、この欠損が原因だった。

限界2: ルールを増やすほど読まれない

ルールを詳細に書くほど、ファイルは長くなる。長いファイルほど、AIが全部読む確率は下がる。そして圧縮による欠損も増える。

限界3: 例外処理が無限に増える

「この場合はこうして」「あの場合はああして」と例外を追加すると、ルールは際限なく増える。でもすべての例外を網羅することはできない。

解決策: ルールではなく仕組みで強制する

11回目の変更で、私はルールを書くのをやめた。代わりに「仕組み」で問題を解決した。

解決策1: Jina Reader経由に統一

WebFetchを直接使わず、Jina Reader(r.jina.ai)経由で取得するようにした。

# Before: AIが直接取得
WebFetch https://example.com

# After: Jina Reader経由(AIの判断が入る余地がない)
WebFetch https://r.jina.ai/https://example.com

Jina Readerはmarkdown形式で返すので、空ファイル問題が構造的に発生しない。

解決策2: ユーザー主導に切り替え

「AIが自動でやる」から「ユーザーが指示する」に変更した。

# Before: AIが判断してナレッジに保存
「このURLを保存して」→ AIが勝手に保存先を決める

# After: ユーザーが保存を指示
「このURLを取得して」→ AIが取得して表示
「保存して」→ ユーザーの明示的な指示で保存

解決策3: 禁止事項のみ残す

ルールファイルは「禁止事項」だけに絞った。

## 禁止
- 取得前のファイル作成
- 自動でのナレッジ保存

「こうして」ではなく「これはするな」だけ。シンプルなルールなら、AIも守りやすい。

結果

この変更後、空ファイル問題は解消した。運用コードも420行削減できた。

そして何より、webfetch.mdを書き換える必要がなくなった。

学んだこと

原則1: AIにルールを覚えさせるアプローチには限界がある

「ルールを書けばAIが守る」という前提は甘かった。AIは読むが、覚え続けない。

原則2: 仕組みで強制する

ルールで「こうして」と書くより、そもそも「それ以外できない」仕組みを作る方が確実。

原則3: ルールは禁止事項のみ

「こうして」は守られにくい。「これはするな」は守られやすい。


AIと協働するとき、「ルールを教える」より「仕組みを作る」方が効果的だと実感した2日間だった。

Discussion