本文へスキップ
hdknr blog
戻る

AGENTS.md は詳しすぎると逆効果 — ETH Zurich の138リポジトリ研究が示す「書かない」原則

AI コーディングエージェントの設定ファイル(AGENTS.md、CLAUDE.md など)は「詳しく書くほど良い」と思われがちだ。しかし ETH Zurich の研究チームが138リポジトリ・5,694プルリクエストを対象に行った調査で、詳細すぎるコンテキストファイルはむしろ性能を下げることが実証された。

研究の概要

ETH Zurich の Gloaguen、Mündler、Müller、Raychev、Vechev らが2026年2月に発表した論文で、AGENTS.md ファイルが AI コーディングエージェントの性能に与える影響を大規模に検証した。

衝撃的な結果

自動生成されたコンテキストファイルは害になる

人間が書いても効果は限定的

なぜ詳細な指示が逆効果になるのか

AI エージェントは「従順すぎる」

エージェントはコンテキストファイルの指示を律儀に守る。そのため、不要な制約が含まれていると逆にタスクが難しくなる。「良かれと思って書いた指示」が足を引っ張る。

ディレクトリツリーやコードベース概要は不要

エージェントはファイル構造を自力で発見するのが得意だ。手動でディレクトリツリーを記述しても、トークンを消費するだけでナビゲーション速度は改善しない。

強いモデルほど追加コンテキストが邪魔になる

GPT-5.2 のような強力なモデルは、ライブラリや慣例のパラメトリック知識を既に持っている。追加コンテキストは冗長なノイズになるだけだ。

効果があるのは「非自明なツール指定」

研究で唯一、劇的な効果が確認されたのはプロジェクト固有のツール指定だ:

例えば uv を明示した場合、160倍多く使われたという結果が出ている。エージェントが自力では推測できない「非自明な選択」だけを書くのが正解だ。

推奨される6つの原則

  1. コード内で発見可能な情報は除外 — エージェントが自力で見つけられるものは書かない
  2. 否定形ではなく肯定形で指示 — 「〜するな」ではなく「〜せよ」
  3. 決定論的チェックと組み合わせる — linter やテストで検証可能なルールを設定
  4. 想定ではなく実際の失敗から反復 — 問題が起きてから追記する
  5. 重要情報を最初に配置 — トークン処理の優先順位を考慮
  6. 30行以下を目指す — プロチームは60行以下、推奨は300行以下

実践的な AGENTS.md の書き方

悪い例(よくある過剰な記述)

# プロジェクト概要
このプロジェクトは React + TypeScript で構築された...

# ディレクトリ構造
src/
├── components/
├── hooks/
├── utils/
└── pages/

# コーディング規約
- 変数名はキャメルケースを使用する
- コンポーネントはアロー関数で定義する
- インポートは以下の順序で記述する...
(以下100行続く)

良い例(非自明な指定のみ)

# ツール
- パッケージマネージャ: bun(npm/yarn ではなく)
- テストランナー: vitest
- フォーマッタ: biome(prettier ではなく)

# プロジェクト固有のルール
- API クライアントは src/lib/api.ts の共通関数を使う
- 環境変数は .env.local から読み込む(.env は使わない)

最良の AGENTS.md は不要なものである

研究が示す最も重要な結論は、AGENTS.md の改善に時間を費やすより、コードベース自体を改善すべきということだ:

これらが揃っていれば、エージェントは AGENTS.md なしでも高いパフォーマンスを発揮する。

まとめ

AGENTS.md は「何を書くか」より「何を書かないか」が本質だ。コードから自明な情報を排除し、エージェントが自力で推測できない非自明なツール指定だけを簡潔に記述する。そして何より、AGENTS.md を磨くより、コードベースそのものの品質を上げることが、AI コーディングエージェントの性能を最大化する最善の方法だ。



前の記事
AI Agent に品質を担保させる — QA 手法の実践ガイド
次の記事
Vibe Hacking とは何か:AI が変えるサイバー攻撃の新潮流