AIDive

Pakiet do filmu

Usuń swój CLAUDE.md, zmierzone: tabele ablacji, checklista i źródła

11 min czytania

TL;DR

  • Na prawdziwym repo z CLAUDE.md na 177 linii, 3 skillami i 1 hookiem usunięcie wszystkiego złamało dokładnie jedną regułę, w jednej sytuacji: regułę i18n w zupełnie nowym pliku. Wszystkie pozostałe konwencje się utrzymały, bo otaczający kod już ich uczył.
  • Plik kosztował od 4 do 14% odczytanych tokenów w zadaniach, w których wynik był identyczny, czyli około jednego dolara na dziesięć. Nagłówkowe 32% oszczędności zdominowało jedno zadanie, w którym plik kazał modelowi zrobić więcej pracy.
  • Skille i hook nie kosztowały nic mierzalnego: skille ładują się dopiero po wywołaniu i żaden nie został wywołany, hook wstrzykuje jedno zdanie.
  • 82-liniowy przegląd architektury nie dał nic w pytaniu o architekturę: sześć odpowiedzi, wszystkie poprawne, z plikiem i bez niego.
  • "Delete" według samego Anthropic oznacza ablację i przeniesienie do progressive disclosure, a nie skasowanie. Zostaw reguły, których kod nie nauczy, resztę przenieś do plików z regułami i skilli, a reguły bezwzględne zamień w hooki.
  • Dwa powtórzenia na konfigurację to dolna granica, nie wyrok: różnice na zadanie poniżej 15% mieszczą się w szumie między uruchomieniami.

Co pokazują pomiary

Wystąpienie, na które wszyscy reagują, mówi dwie rzeczy, a druga ginie. Boris Cherny potwierdza ze sceny, że Claude Code usunął 80% swojego system promptu, i opisuje metodę: usunąć cały system prompt, a potem przywracać go linia po linii, żeby zmierzyć wpływ każdej z nich s2. Fragment o "every 6 months" znajduje się od 00:06:58 do 00:07:05, a sformułowanie brzmi "really do recommend", nie "strongly recommend" s1. Dwóch zdań, które często mu się przypisuje, w wystąpieniu nie ma: "context, goals and a definition of done" (najbliższe prawdziwe zdanie, o 15:22, to "describe the task, the guardrails, the exit criteria") i "64 agents". Mówi "eleven days", a zapytany o liczbę agentów odpowiada "I'm not sure" s2. Liczba 64 pochodzi z wpisu o przepisaniu Buna: "64 Claudes running for 11 days", około $165,000 w cenach API, 9 miliardów niecache'owanych tokenów wejściowych, 690 milionów tokenów wyjściowych i 72 miliardy odczytów cache'owanych tokenów wejściowych s14.

Mechanizm, który pozwala to wszystko zmierzyć, to ładowanie. CLAUDE.md i pliki z regułami są wstrzykiwane w każdej turze; skille ładują się tylko po wywołaniu. Dokumentacja pamięci zawiera też wskazówkę o rozmiarze, którą wszyscy parafrazują: "target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence." s4. Pisemna wersja rady Anthropic przedstawia centralny CLAUDE.md w repozytorium jako mit i wskazuje progressive disclosure oraz auto-memory s3.

Jedyne kontrolowane badanie przed naszym to praca z ETH o AGENTS.md: 138 issues w 12 repo i "providing context files does not generally improve task success rates, while increasing inference cost by over 20% on average". Pliki napisane i zacommitowane przez deweloperów wypadają średnio o 7% lepiej niż generowane przez LLM, a instrukcje wskazujące konkretne narzędzia pomagają s5.

Dwie dane o tym, co zawierają te pliki i jak się je czyta. W 28,721 repozytoriach i 165,063 plikach mediana pliku z instrukcjami ma 50 elementów treści, z czego 12 to faktyczne dyrektywy; autor ujmuje to tak, że tylko 27% pliku robi to, co myślisz s8. W kontrolowanym eksperymencie z dwiema instrukcjami w prawdziwym konflikcie przeniesienie jednej reguły z początku pliku na koniec zmienia o około 90 punktów to, jak często model jej słucha, od prawie nigdy do prawie zawsze s9. Ten sam wydawca stawia granicę, której trzyma się nasz eksperyment: ablacja to nie usuwanie, a hooki to egzekwowanie, które nie wygasa po aktualizacji modelu s7.

Dwa nieformalne punkty odniesienia zgadzają się z naszym wynikiem. CLAUDE.md na 1,000 linii porównany z okrojoną wersją na ~20 linii, na tych samych issues z GitHuba i z tym samym modelem: architektura się utrzymała, reguły zespołu się posypały s6. Komentujący, który przeniósł wszystko do progressive disclosure, podaje spadek automatycznie ładowanego kontekstu z ~35k do ~4.5k tokenów na sesję, bez usunięcia żadnej wiedzy s11. Do oceny ablacji skilli jest narzędzie: --ablate w caliper obejmuje skille i serwery MCP, a jego compare raportuje wskaźnik sukcesu, tokeny i czas wykonania; podmiana CLAUDE.md pozostaje ręczna s16.

Pomiary

Protokół: jedno prywatne repo Expo / React Native (1,021 śledzonych plików), CLAUDE.md na 177 linii, 7,243 znaków, około 1,800 tokenów, 3 skille, 4 slash commands, 1 hook PreToolUse. Model przypięty do claude-opus-5 w każdym uruchomieniu, Claude Code 2.1.278, headless claude -p, --max-turns 40, pusty katalog konfiguracji użytkownika, bez MCP, świeży klon resetowany przed każdym uruchomieniem. Pięć codziennych zadań (nowy komponent, edycja komponentu, refaktoryzacja wspólnych helperów, zapisanie pola store, wyjaśnienie ścieżki danych), ablacja po jednym elemencie. 44 uruchomienia, $38.97 w cenach API, 92 minuty czasu pracy agenta. Ocena: reguły zespołu repo na dodanych liniach, tsc --noEmit, eslint, odpowiedzi oceniane ręcznie.

Jakość, co się zepsuło:

konfiguracja uruchomienia z edycją naruszenia reguł zespołu nowe błędy tsc błędy eslint
A pełna 8 0 0 0
B bez CLAUDE.md 8 1 (nowy nagłówek wpisany na sztywno, brak .content.ts) 0 0
C bez skilli 4 0 0 0
D bez hooka 4 0 0 0
E nic 8 2 (nagłówek wpisany na sztywno dwa razy, brak .content.ts) 0 0

Koszt na uruchomienie, średnia z uruchomień konfiguracji (tokeny = odczyty z cache, kontekst czytany ponownie w każdej turze):

konfiguracja uruchomienia $ / uruchomienie tury / uruchomienie odczytane tokeny / uruchomienie
A pełna 10 0.95 25.6 829k
B bez CLAUDE.md 10 0.74 21.9 568k
C bez skilli 5 0.96 28.2 819k
D bez hooka 5 0.96 27.8 851k
E nic 10 0.85 25.7 655k

Na zadanie, od A do B (średnia z 2 uruchomień każde):

zadanie A $ B $ koszt odczytane tokeny
T1 nowy komponent 1.72 0.96 -44% -61%
T2 edycja komponentu 1.49 1.26 -15% -15%
T3 refaktoryzacja 0.64 0.63 -1% -5%
T4 store 0.57 0.53 -6% -4%
T5 pytanie 0.34 0.31 -9% -14%
wszystkie 10 uruchomień 9.51 7.40 -22% -32%

Jak czytać tabele. Bez CLAUDE.md 3 z 4 uruchomień z nowym komponentem zapisały nagłówek jako zwykły string; z plikiem 4 z 4 utworzyły .content.ts z EN i FR. W zadaniu edycji każda konfiguracja, nawet E, umieściła nowy string w .content.ts: sąsiednie pliki niosły konwencję. Cała reszta utrzymała się we wszystkich 44 uruchomieniach: 0 importów względnych, type zamiast interface w sześciu edycjach pliku z typami, design tokeny w każdym diffie, 0 kolorów hex, brak barrel file. Jedna instrukcja, której nikt nie mógł wykonać: plik każe importować theme z @design-tokens, aliasu, który nie istnieje w tsconfig.json; żadne uruchomienie w żadnej konfiguracji go nie użyło, 1,800 tokenów czytanych na darmo w każdej sesji. Oszczędność w T1 to tańsze uruchomienie, które robi mniej pracy. Wariancja między uruchomieniami jest większa niż większość efektów konfiguracji: T1 z pełną konfiguracją kosztowało $2.11, potem $1.33. Kontrola z obecnym grafem kodu o rozmiarze 333 MB wylądowała na wynikach pełnej konfiguracji ($1.59 wobec $1.72 w T1, $0.38 wobec $0.34 w T5): blok grafu i hook nie zmieniły nic mierzalnego.

Do zrobienia w poniedziałek

  • Policz swój CLAUDE.md: linie, znaki i liczbę linii będących faktycznymi dyrektywami (Always, Never, Use, Prefer). Reszta to kontekst, który model czyta ponownie w każdej turze.
  • Wybierz jedną konwencję z każdej sekcji i sprawdź, czy sąsiedni plik już ją pokazuje. Jeśli trzy pliki w folderze trzymają się reguły, linia jest kandydatem do usunięcia.
  • Znajdź jedną regułę, której kod nie nauczy w zupełnie nowym pliku (i18n, telemetria, nagłówki licencji, wymagany krok rejestracji). Zostaw ją, zapisz w jednej linii i umieść blisko początku.
  • Sprawdź każdą ścieżkę importu i każdą komendę, które wymienia twój plik. Martwy alias albo zmieniona nazwa skryptu to instrukcja, której nikt nie może wykonać.
  • Przenieś długie przeglądy architektury i instrukcje konfiguracji do pliku z regułami albo skilla ładowanego na żądanie, a potem porównaj automatycznie ładowany kontekst przed i po.
  • Zamień swoje dwie lub trzy reguły bezwzględne w hook albo regułę lintera. Egzekwowanie nie zależy od tego, czy model przeczyta akapit.
  • Uruchom dwa najczęstsze zadania dwa razy z plikiem i dwa razy bez, na przypiętym modelu, i przeczytaj tokeny oraz diff. Dwa powtórzenia mówią, gdzie patrzeć, a nie co wnioskować.

Czytaj dalej

  • Samo wystąpienie, dla metody, a nie hasła: usunąć, potem przywracać linia po linii s2.
  • Pełny zestaw wyników pracy, w tym ustalenie, że pliki pisane przez deweloperów biją generowane o 7% i że nazywanie narzędzi pomaga s5.
  • Pozycja reguły jako zmienna: skok o ~90 punktów i to, jak model po cichu rozstrzyga sprzeczne instrukcje s9.
  • Anatomia pliku z instrukcjami na podstawie 30k repo: 50 elementów, 12 dyrektyw i czym jest pozostałe 38 s8.
  • Poradnik HumanLayer o pisaniu dobrego CLAUDE.md i wątek, który z nim polemizuje s10.
  • Wątek "MUST use agent, ignored 80% of the time": argument za hookami tam, gdzie proza zawodzi s12.
  • Wątek "Claude Code now ignores everything", przydatny do odróżnienia dryfu modelu od konfliktów instrukcji s13.
  • caliper, do oceny ablacji skilli i MCP przez wskaźnik sukcesu, tokeny i czas wykonania s16.

Źródła

FAQ

Czy powinienem usunąć swój CLAUDE.md?

Nie na ślepo. W naszym repo jedyną stratą była jedna reguła w nowych plikach; wszystko, co kod już pokazywał, utrzymało się bez pliku. Rób ablację po jednej sekcji i zostaw to, co zmienia wynik.

Dlaczego plik dał 32% oszczędności tokenów, skoro kosztował tylko od 4 do 14%?

Bo sumę zdominowało zadanie z nowym komponentem, w którym plik kazał modelowi napisać drugi plik w dwóch językach. Tańsze uruchomienie zrobiło mniej. W zadaniach z identycznym wynikiem oszczędność wyniosła od 4 do 14%.

Czy skille i hooki kosztują tokeny w każdej turze?

Skille ładują się tylko po wywołaniu, więc niewywołany skill nic nie kosztuje; hook wstrzykuje jedno zdanie. Usunięcie obu nie zmieniło żadnej liczby w naszych uruchomieniach. Pliki z regułami i CLAUDE.md to te, które są czytane ponownie w każdej turze.

Czy dwa uruchomienia na konfigurację wystarczą?

Nie. Dwa powtórzenia lokalizują efekt, ale go nie mierzą. Nasza pełna konfiguracja kosztowała $2.11, potem $1.33 w tym samym zadaniu, więc różnice na zadanie poniżej 15% mieszczą się w szumie.