AIDive

CLAUDE.mdを削除して、実リポジトリで壊れた数を測った

AIDive · 公開

コーディングエージェント

削除、測定、壊れたルールは一つ

CLAUDE.mdを削除するとは、Claude Codeが会話の冒頭で読み込む指示ファイルを取り除くことだ。Claude Codeの生みの親であるBoris Chernyは、壇上で半年ごとにこれを削除しろと語った。7週間で22本の動画が彼の言葉を繰り返した。だが、どの動画もリポジトリを一つも開かなかった。

この記事は、それらの動画がやらなかったことをやる。177行のCLAUDE.md、3つのスキル、4つのコマンド、1つのフックを持つ実在のアプリで、5つの日常タスクをファイルありとファイルなしで実行し、数を数えた。44回の実行の末、壊れたルールは正確に1つだった。ファイルはすべてのタスクでトークンを消費した、その量は毎回違ったが。そしてその行のうち1本は、誰も従えないものだった。

クリップそのまま、彼の言葉ではない二つの文

このクリップは、Opus 5がリリースされた翌日に収録された、Boris CherynyのYC Startup Schoolでの講演から来ている。彼の言葉はこうだ。半年ごとにCLAUDE.mdを削除し、スキルを削除し、フックを削除しろ。モデルがどうなるか見てみろ、驚くかもしれない。Opus 5については、Anthropicは実際にそれを試すことを勧めていると彼は言う。モデルはもうそれらの指示を全部は必要としていないかもしれないと。

その30秒前には、誰も引用しない注意書きがある。Anthropicはコードベース全体を削除するわけではない。多くを削除し、それをアブレーションと呼んでいる。書き起こされたトランスクリプトには、今日もこの一文が全文残っている。Claude Codeのシステムプロンプトの80%がその方法で削られた。すべてを削除し、一行ずつ戻し、一行ごとに測定する。

反応動画が彼の言葉として広めた2つの文は、講演のどこにも存在しない。「コンテキスト、目標、完了の定義」という言葉はどこにもなく、彼が実際に言った最も近い表現はタスク、ガードレール、終了条件だ。「Bunを書き直した64体のエージェント」という数字も彼のものではない。それはBunの投稿にあるJarred Sumnerの数字だ。Chernyは11日と言い、数を聞かれると数千と推測する。

7週間で22本の動画がこのクリップを引用した。だが誰もこのテストを実行しなかった。だからこの記事は、彼が実際に語った通りのことをする。削除し、一つずつ戻し、測定する。

測定器具:削除ではなくアブレーション

アブレーションとは、設定を丸ごと削除して推測する代わりに、一度に一つの要素を取り除いて効果を測定する手法だ。CLAUDE.mdは会話の冒頭と、その後すべてのターンで読み込まれる。スキルは呼び出されたときにしか読み込まれない。この違いこそが測定対象だ。

Anthropicは削除スイッチを提供している。Chernyが壇上で名指ししたのと同じ、単純なフラグだ。使用したリポジトリは私自身の実在するアプリで、177行の指示、3つのスキル、4つのコマンド、そして検索のたびに発火するフックを持つ。

項目 値
日常タスク 5(新規コンポーネント、編集、リファクタリング、ストア変更、アーキテクチャの質問)
構成 5(フル、ファイルなし、スキルなし、フックなし、何もなし)
モデル 1つ、固定
環境 空の設定ディレクトリ、実行ごとに新規クローン
実行回数 44
コスト $39

すべての実行は同じ基準で、同じクローンに対し、手作業ではなくスクリプトによって採点された。壊れたとみなす基準は、リポジトリ自身のルール(インポート、型、デザイントークン、翻訳)に加え、typecheckとlintだ。

この種のアブレーションのために作られた唯一のツールであるCaliperは、スキルとMCPサーバーをアブレーションできるが、ファイルには一切触れない。CLAUDE.mdの入れ替えは手作業で行った。制約は一度だけ明示する。1つのリポジトリ、1つのモデル、セルごとに2回の実行、トランスクリプトなし。最初の結果セットが全体の調子を決めた。リファクタリングタスクは、ファイルありで64セント、なしで63セントと、ほぼ同一の結果に戻ってきた。

壊れたもの:新規ファイルにおける一つのルール

壊れたルールは、国際化に関するルールで、ファイル自身の言葉ではこう書かれている。英語とフランス語の両方を必ず追加し、ユーザーに見える文字列をハードコードするな。新規コンポーネントのタスクでは、ファイルありの4回すべてで翻訳ファイルが書かれた。ファイルなしでは、4回中3回で見出しがハードコードされた。同じタスク、同じリポジトリ、同じモデル、同じプロンプトで。

新規コンポーネント 翻訳ファイルを書いたか
CLAUDE.mdあり 4回中4回
CLAUDE.mdなし 4回中1回

編集タスクはもう半分の話を教えてくれる。何もない状態でさえ、すべての構成が正しく実行できた。なぜなら隣接するコードがそれを教えているからだ。編集対象の隣にあるすべてのコンポーネントに、すでに翻訳ファイルが存在する。それ以外のすべては44回の実行全部で守られた。インポートのエイリアス、interfaceよりtype、デザイントークン、ストアのパターン。コードがそれらを示し、ファイルはそれを繰り返しているにすぎない。

ETH Zurichの論文が、実際の138件のissueで同じことを測定している。その結論は、コンテキストファイルは成功率を改善せず、推論コストを約20%増やす、そしてモデルは指示に従っている、というものだ。一つ注意点がある。ファイルなしの実行のうち1回は、それでも翻訳ファイルを書いていた。このルールはファイルなしでは不可能なのではなく、不安定なのだ。壊れたルールは1つ、コードが教えられなかったそのルールだけだった。そして、その作業を省いた実行が最も安価だった。

ファイルのコスト、タスク別

CLAUDE.mdのトークンコストとは、ファイルありの実行とファイルなしの同じ実行との間で読み込まれたトークン数の差のことだ。

タスク ファイルなしで読み込まれるトークンの削減率
新規コンポーネント 61%
編集 15%
リファクタリング 5%
ストア変更 4%
アーキテクチャの質問 14%
10回の実行全体 トークン32%、金額22%

32%というのは、どの動画も見出しにしそうな数字だが、それは間違った数字だ。最大の節約は、翻訳ファイルを書かなかった実行によるものであり、単にやるべきことをやらなかったから安上がりだったにすぎない。出力が同一だった場合、ファイルのコストは4%から14%だった。それがファイルの本当の価格であり、論文が示した20%は、この2つの数字のちょうど中間に位置する。

その仕組みはおよそ1,800トークンで、毎ターン繰り返し読み込まれる。スキル、フック、ナレッジグラフは、存在してもしなくても、測定可能な効果を何も生まなかった。ノイズはその大半より大きい。同じタスク、同じファイルで、ある実行は$2.11、別の実行は$1.33だった。ターン上限に達した実行が2回あり、1回はファイルあり、1回はファイルなしだった。つまりファイルはあらゆる場面で少しずつコストを払い、嘘をつかない限り、その分の働きを一度だけ果たす。

嘘をついていた行

嘘をつく行とは、モデルが従えない、あるいは何も変えない指示のことだ。冒頭で予告した行がそれだ。design-tokensのエイリアスからテーマをインポートせよ、というものだ。このエイリアスは存在しない。TypeScriptの設定は1つのプレフィックスしかマッピングしておらず、tokensフォルダにテーマファイルはない。ファイルがあってもなくても、すべての実行が隣接コードと同じことをした。44回とも同じインポート行を書いた。

このファイルには82行のアーキテクチャ概要がある。同じ質問に6つの回答があったが、概要ありでもなしでも、6回とも同じ9つのファイルを、バックエンドから画面まで、同じ順序で見つけていた。ある一節はクローンには存在しないナレッジグラフを指しているが、グラフが存在していても、質問のコストは同じだった。

指標 値
Anthropicのサイズルール 200行未満
このファイル 177行
reporailsの3万リポジトリデータセットの中央値のファイル 50項目、うち指示12件
このファイルの指示行 177行中24行

矛盾する2つのルールのうち、どちらが勝つかは位置で決まり、モデルはそのことを一切明かさない。あるベンダーのテストではおよそ90ポイントの差だ。この概要は、ここで実行しなかった別のタスクでは役立つかもしれない。1回の試行、1つの答えにすぎない。つまり行には3種類ある。役割を果たした行、コードがすでに教えている行、そして嘘をつく行だ。

残す、移す、削除する:短いリスト

3つの山と、それぞれを裏づける測定結果がある。

山 何を入れるか 測定結果
残す コードが示せないルール 4回の実行を救った6行
移す アーキテクチャ概要とコマンド 測定可能な効果がなかった107行
削除 嘘をつく行、そしてコードツリーがすでに示している行 44回中同一だった結果

モデルが2回間違えたものを残す。これがAnthropic自身がこのファイルに対して掲げる基準そのものだ。概要とコマンドは、必要なときに読み込まれるファイル群へ移す。Anthropicの7月の投稿は、中央集権的な単一リポジトリという発想自体を神話だと呼んでいる。フックは残す。ゲートはモデルが賢くなったからといって期限切れにはならない。モデルが乗り越えた文章は削り、ゲートは残す。

削除後のファイルはおよそ70行、その上に成果を上げた6行が加わる形になる。それがChernyの手法を全文通して読んだときの意味だ。削除し、一行ずつ戻し、測定する。1つのリポジトリ、1つのモデル、セルごとに2回の実行。あなたの山の分け方は違うだろうが、手法は変わらない。削除は1つのルールを犠牲にし、節約はわずかだった。嘘をついている行を見つけたことこそが、成果だった。

出典

よくある質問

Boris Chernyが言った通りCLAUDE.mdを削除すべきか?
盲目的にはやるべきではない。Chernyの講演が説明しているのはアブレーションだ。ファイルを削除し、一行ずつ戻し、一行ごとに測定する。177行の実ファイルでは、削除は44回の実行で1つのルールを壊し、節約はわずかだった。成果は嘘をつく行を見つけたことだった。
CLAUDE.mdを削除すると何が壊れるか?
このリポジトリでは1つのルールだけ、英語とフランス語の両方の翻訳を必ず追加するというルールだ。ファイルなしでは、新規コンポーネントのタスクで4回中3回、見出しがハードコードされた。他のすべてのルールは隣接コードがすでに示しているため保たれた。
CLAUDE.mdのトークンコストはどれくらいか?
毎ターン繰り返し読み込まれる約1,800トークン。タスクごとに見るとファイルなしで4%から61%少ないトークン読み込みだった。出力が同一だった場合のコストは4%から14%で、ETH Zurichの論文が示す138件の実案件での平均20%と一致する。
CLAUDE.mdに何を残すべきか?
コードが示せないルールを残す。これはAnthropic自身の基準、モデルが2回間違えたものを残すという基準と同じだ。概要とコマンドのリストは必要時に読み込まれるファイルへ移し、存在しないものを指す指示は削除し、フックは残す。ゲートはモデルが改善しても期限切れにならないからだ。
CLAUDE.mdやAGENTS.mdのようなコンテキストファイルはコーディングエージェントを改善するか?
ETH Zurichの論文は138件の実案件で、コンテキストファイルはタスクの成功率を改善せず、推論コストを平均で20%以上増やすと結論づけている。モデルは指示に従うにもかかわらずだ。この記事の1つのリポジトリでの測定も同じ範囲に収まった。
Claude Codeの文脈でアブレーションとは何か?
モデルを固定し、実行ごとに新規クローンを用いながら、設定の要素を一度に一つずつ取り除いて効果を測定することだ。Anthropicはこれを使ってClaude Codeのシステムプロンプトの80%を削減した。ここでは、フル、ファイルなし、スキルなし、フックなし、何もなしの5つの構成で実行した。

関連動画