AIDive

Skasowałem CLAUDE.md I Zmierzyłem, Co Się Popsuło

AIDive · Opublikowano

Agenty do kodowania

Skasowane, zmierzone, jedna zasada się złamała

Skasowanie CLAUDE.md oznacza usunięcie pliku instrukcji, który Claude Code czyta na początku każdej rozmowy. Boris Cherny, twórca Claude Code, powiedział na scenie, żeby kasować go co pół roku. Dwadzieścia dwa filmy powtórzyły to w siedem tygodni. Żaden nie otworzył repozytorium.

Ten artykuł robi to, czego nie zrobiły te filmy: bierze jedną prawdziwą aplikację ze 177-liniowym CLAUDE.md, trzema skillami, czterema komendami i jednym hookiem, uruchamia pięć codziennych zadań z plikiem i bez niego, i liczy. Po czterdziestu czterech przebiegach popsuła się dokładnie jedna zasada. Plik kosztował tokeny przy każdym zadaniu, nigdy tyle samo, a jedna z jego linii — nikt nie mógł jej przestrzegać.

Klip, słowo w słowo, i dwa zdania, które nie są jego

Klip pochodzi z wystąpienia Borisa Cherny'ego na YC Startup School, nagranego dzień po premierze Opusa 5. Jego słowa: co pół roku kasuj CLAUDE.md, kasuj skille, kasuj hooki. Zobacz, co zrobi model, może cię zaskoczyć. Dla Opusa 5, mówi, Anthropic naprawdę zaleca to wypróbować: model może już nie potrzebować wszystkich tych instrukcji.

Trzydzieści sekund wcześniej pada zastrzeżenie, którego nikt nie cytuje. Anthropic nie kasuje całej bazy kodu. Kasuje dużo i nazywa to ablacją. Pisemny transkrypt dziś w pełni zawiera tę linię. Osiemdziesiąt procent systemowego promptu Claude Code powstało w ten sposób: skasuj wszystko, przywracaj linia po linii, mierz każdą linię.

Dwa zdania, które filmy reakcyjne włożyły mu w usta, nie padają w tym wystąpieniu. "Kontekst, cele i definicja ukończenia" nie pojawia się nigdzie; najbliżej temu jest task, guardrails, exit criteria. "Sześćdziesiąt cztery agentów przepisujących Buna" też nie jest jego liczbą: to liczba Jarreda Sumnera z wpisu o Bunie. Cherny mówi o jedenastu dniach, a zapytany o liczbę, zgaduje tysiące.

Dwadzieścia dwa filmy w siedem tygodni zacytowało ten klip. Żaden nie przeprowadził testu. Więc ten robi to, co Cherny naprawdę opisał: skasuj, przywracaj po jednym elemencie, mierz.

Narzędzie: ablacja, nie kasowanie

Ablacja usuwa jeden element konfiguracji na raz i mierzy efekt, zamiast kasować wszystko i zgadywać. CLAUDE.md jest odczytywany na początku każdej rozmowy i ponownie przy każdej turze; skille ładują się tylko wtedy, gdy są wywołane. Ta różnica została zmierzona.

Anthropic dostarcza przełącznik do kasowania: goła flaga, ta sama zmienna, którą Cherny wymienia ze sceny. Repozytorium to moja prawdziwa aplikacja: 177 linii instrukcji, trzy skille, cztery komendy i jeden hook, który uruchamia się przy każdym wyszukiwaniu.

Wymiar Wartość
Codzienne zadania 5 (nowy komponent, edycja, refaktoryzacja, zmiana store'a, pytanie architektoniczne)
Konfiguracje 5 (pełna, bez pliku, bez skilli, bez hooka, nic)
Model jeden, przypięty
Środowisko pusty katalog konfiguracyjny, świeży klon przed każdym przebiegiem
Przebiegi 44
Koszt $39

Każdy przebieg był oceniany tak samo, na tym samym klonie, przez skrypt, a nie ręcznie. Za popsute uznaje się złamanie własnych zasad repozytorium (importy, typy, design tokens, tłumaczenia) oraz błędy typecheck i lint.

Jedyne narzędzie zbudowane do tego typu ablacji, Caliper, ablatuje skille i serwery MCP, ale nigdy nie dotyka pliku; wymianę CLAUDE.md wykonano ręcznie. Ograniczenia, podane raz: jedno repozytorium, jeden model, dwa przebiegi na komórkę, bez transkryptu. Pierwszy wynik nadał ton: zadanie refaktoryzacji wypadło identycznie, sześćdziesiąt cztery centy z plikiem i sześćdziesiąt trzy bez.

Co się popsuło: jedna zasada, na nowych plikach

Zasada, która się złamała, to zasada internacjonalizacji, w słowach samego pliku: zawsze dodawaj wersję angielską i francuską, nigdy nie zaszywaj na sztywno tekstu widocznego dla użytkownika. Przy zadaniu nowego komponentu, z plikiem, wszystkie cztery przebiegi napisały plik tłumaczeń. Bez niego trzy z czterech przebiegów zaszyły nagłówek na sztywno. To samo zadanie, to samo repozytorium, ten sam model, ten sam prompt.

Nowy komponent Napisał plik tłumaczeń
Z CLAUDE.md 4 z 4
Bez CLAUDE.md 1 z 4

Zadanie edycji pokazuje drugą połowę historii. Każda konfiguracja, nawet bez niczego, zrobiła to dobrze, bo uczą sąsiedzi: każdy komponent obok edytowanego ma już plik tłumaczeń. Wszystko inne utrzymało się we wszystkich czterdziestu czterech przebiegach: alias importu, type zamiast interface, design tokens, wzorzec store'a. Kod to pokazuje; plik to powtarza.

Praca badawcza z ETH Zurich zmierzyła to samo na 138 realnych issue. Jej wniosek: pliki kontekstowe nie poprawiają skuteczności i kosztują około dwudziestu procent więcej, a model faktycznie stosuje się do instrukcji. Jedno zastrzeżenie: jeden przebieg bez pliku i tak napisał plik tłumaczeń. Ta zasada nie jest niemożliwa bez pliku, jest niepewna. Popsuła się jedna zasada, ta, której nie mógł nauczyć kod. A przebieg, który pominął tę pracę, był też najtańszy.

Ile kosztował plik, zadanie po zadaniu

Koszt tokenów CLAUDE.md to różnica liczby odczytanych tokenów między przebiegiem z plikiem a tym samym przebiegiem bez niego.

Zadanie Mniej odczytanych tokenów bez pliku
Nowy komponent 61%
Edycja 15%
Refaktoryzacja 5%
Zmiana store'a 4%
Pytanie architektoniczne 14%
Na dziesięciu przebiegach 32% tokenów, 22% pieniędzy

Trzydzieści dwa procent to liczba, którą każdy film wziąłby na nagłówek, i to ta zła. Największa oszczędność pochodzi z przebiegu, który nie napisał pliku tłumaczeń: tańszy, bo zrobił mniej. Tam, gdzie wynik był identyczny, plik kosztował od czterech do czternastu procent. To jego prawdziwa cena, a dwadzieścia procent z pracy badawczej mieści się dokładnie między tymi dwiema liczbami.

Mechanizm to około 1800 tokenów, odczytywanych ponownie przy każdej turze. Skille, hook i graf wiedzy nie dały niczego mierzalnego, obecne czy nieobecne. Szum jest większy niż większość z tego: to samo zadanie z tym samym plikiem kosztowało 2,11 dolara w jednym przebiegu i 1,33 dolara w drugim. Dwa przebiegi trafiły w limit tury, jeden z plikiem i jeden bez. Plik kosztuje więc trochę wszędzie i zarabia na siebie raz, chyba że też kłamie.

Linijki, które kłamały

Kłamiąca linia to instrukcja, której model nie może przestrzegać albo która niczego nie zmienia. Linia zapowiedziana na początku: importuj motyw z aliasu design-tokens. Alias nie istnieje: konfiguracja TypeScript mapuje jeden prefiks, a folder tokens nie ma pliku motywu. Każdy przebieg, z plikiem czy bez, robił to, co sąsiedzi — tę samą linię importu, czterdzieści cztery razy.

Plik zawiera osiemdziesiąt dwie linie przeglądu architektury. To samo pytanie, sześć odpowiedzi: wszystkie sześć znalazło te same dziewięć plików, od backendu po ekran, w tej samej kolejności, z przeglądem i bez niego. Jeden blok wskazuje na graf wiedzy, którego klon nie ma; gdy graf był obecny, pytanie kosztowało tyle samo.

Miara Wartość
Zasada rozmiaru Anthropic poniżej 200 linii
Ten plik 177 linii
Mediana pliku w zbiorze danych reporails (30 tys. repo) 50 elementów, 12 dyrektyw
Linie dyrektyw w tym pliku 24 z 177

Pozycja decyduje, która z dwóch sprzecznych zasad wygrywa, a model nigdy tego nie mówi — około dziewięćdziesięciu punktów w teście jednego dostawcy. Przegląd mógłby pomóc w zadaniu, którego tu nie uruchomiono: jedna próba, jedna odpowiedź. Trzy rodzaje linii, zatem: ta, która zasłużyła na swoje miejsce, te, których uczy kod, i te, które kłamią.

Zachowaj, przenieś, skasuj: krótka lista

Trzy stosy, a za każdym z nich pomiar.

Stos Co tam trafia Pomiar
Zachowaj Zasada, której nie pokaże kod 6 linii, które uratowały 4 przebiegi
Przenieś Przegląd architektury i komendy 107 linii bez zmierzonego zysku
Skasuj Linie, które kłamią, i linie, które już pokazuje drzewo plików 44 identyczne przebiegi

Zachowaj to, co model dwukrotnie zrobił źle: to własne kryterium Anthropic dla tego pliku. Przenieś przegląd i komendy do drzewa plików ładowanych w razie potrzeby; lipcowy wpis Anthropic nazywa centralne repozytorium mitem. Hooki zostają: bramka nie wygasa, gdy model się poprawia. Wytnij prozę, z której wyrósł, zachowaj bramkę.

Plik po zmianach: około siedemdziesiąt linii plus sześć, które sobie zasłużyły. To metoda Cherny'ego, odczytana w całości: skasuj, przywracaj linia po linii, mierz. Jedno repozytorium, jeden model, dwa przebiegi na komórkę; twoje stosy będą inne, metoda nie. Skasowanie kosztowało jedną zasadę i niewiele zaoszczędziło. Wygraną było znalezienie linii, które kłamią.

Źródła

Najczęstsze pytania

Czy powinieneś skasować swój CLAUDE.md, tak jak powiedział Boris Cherny?
Nie na ślepo. Wystąpienie Cherny'ego opisuje ablację: skasuj plik, przywracaj linia po linii i mierz każdą linię. Na prawdziwym 177-liniowym pliku skasowanie go złamało jedną zasadę w 44 przebiegach i niewiele zaoszczędziło; wygraną było znalezienie linii, które kłamią.
Co się psuje, gdy skasujesz CLAUDE.md?
W tym repozytorium jedna zasada: zawsze dodawaj tłumaczenia angielskie i francuskie. Bez pliku trzy przebiegi na cztery zaszyły nagłówek na sztywno w zadaniu nowego komponentu. Każda inna zasada się utrzymała, bo sąsiadujący kod już to pokazuje.
Ile tokenów kosztuje CLAUDE.md?
Około 1800 tokenów, odczytywanych ponownie przy każdej turze. Zadanie po zadaniu to od 4% do 61% mniej odczytanych tokenów bez pliku; tam, gdzie wynik był identyczny, plik kosztował od 4% do 14%, co zgadza się ze średnią 20% z pracy ETH Zurich na 138 realnych issue.
Co powinno zostać w CLAUDE.md?
Zasady, których nie pokaże kod — to zresztą własne kryterium Anthropic: zachowaj to, co model pomylił dwa razy. Przenieś przeglądy i listy komend do plików ładowanych w razie potrzeby, skasuj instrukcje, które wskazują na coś, co nie istnieje, i zachowaj hooki, bo bramka nie wygasa, gdy model się poprawia.
Czy pliki kontekstowe, takie jak CLAUDE.md czy AGENTS.md, poprawiają agentów kodujących?
Praca badawcza ETH Zurich na 138 realnych issue wykazała, że pliki kontekstowe nie poprawiają skuteczności zadań i podnoszą koszt wnioskowania średnio o ponad 20%, mimo że model faktycznie stosuje się do instrukcji. Ten pomiar na jednym repozytorium wypadł w tym samym przedziale.
Czym jest ablacja w kontekście Claude Code?
Usuwanie jednego elementu konfiguracji na raz, przy przypiętym modelu i świeżym klonie na każdy przebieg, oraz mierzenie efektu. Anthropic użył tego, by wyciąć 80% systemowego promptu Claude Code; tutaj przeszła przez pięć konfiguracji: pełną, bez pliku, bez skilli, bez hooka, nic.

Powiązane filmy