Få Claude Code til at tie stille (og andre tilpasninger, der har gjort sig fortjent)
Det første, jeg gjorde med Claude Code, var at få den til at tale mindre. De små, delbare tilpasninger, der overlevede mit eget filter — kortfattet output, en statuslinje, de rigtige hooks — plus dem, jeg bevidst nægter at automatisere, og hvorfor det at styre kontekstvinduet slet ikke burde være en færdighed.
Det første, jeg gjorde med Claude Code, var at få den til at tale mindre.
Claude Code er Anthropics terminal-kodeassistent — du taler med den, og den læser, skriver og kører kode i dit projekt. Ud af boksen er den høflig. “Certainly! I’d be happy to help you with that. The issue you’re seeing is likely caused by…” Jeg læser hurtigt, jeg betaler per token, og jeg har ikke brug for opvarmningen. Det slog jeg fra. Jeg kører et community-plugin, caveman, der skærer svarene ind til benet: ingen artikler, ingen høfligheder, hver eneste tekniske detalje intakt. “Bug in auth middleware. Token expiry check uses < not <=. Fix:” — og så rettelsen.
Det kræver tilvænning. Nogle af de komprimerede sætninger får dig til at stoppe op og læse dem to gange; et fragment kan bære mere mening, end det først lader ane, og du bruger det sparede sekund på at afkode det. Men byttet falder klart ud til min fordel. Jeg kommer hurtigere til sagen, kontekstvinduet fyldes langsommere, og hvis en linje er decideret uklar, er der altid nødudgangen: bed den om at udfolde den. Den brokker sig aldrig.
Den tilstand er det mindst mulige eksempel på det, hele dette indlæg handler om. Claude Code ud af boksen er generisk. Den er bygget til at være fornuftig for alle, hvilket betyder, at den er optimal for ingen. Gevinsten ligger ikke i modellen selv — du kan ikke ændre, hvor god den er, kun hvilken én du kører. Gevinsten ligger i at forme værktøjet om din egen arbejdsgang.
Fælden
Tilpasning er ikke gratis, og jeg vil være ærlig om regningen. Du kan hælde uger i et setup, ingen anden kan læse — heller ikke dit fremtidige jeg.
De værktøjer, der drev konfigurerbarhed længst, er dem, alle hylder: vim og git. Dybe, kraftfulde, uendeligt indstillelige. Og, vil jeg forsigtigt påstå, ikke just særligt tilgængelige. Dybden er både pointen og prisen. Vim er det eneste værktøj, jeg kender, med et meme om, hvordan man overhovedet lukker det — det burde sige os noget.
Jeg hører indvendingen oftest om git: “men git er da så nemt.” Er det nu det? Det er nemt — lige indtil din første rigtige merge-konflikt, eller eftermiddagen, hvor du rebaser det forkerte og stille skriver din egen historik om uden nogen ren vej tilbage. Ja, du kan godt se, hvor du prøver at komme hen. Det kan ham, der sidder med æsken til et puslespil på halvtreds tusind brikker, også — med det færdige billede trykt lige der på låget. At se målet er ikke det samme som, at vejen er tilgængelig. Det er to forskellige påstande, og vi bliver ved med at blande dem sammen.
Her er overbevisningen, sagt rent ud i stedet for som en klage: et godt værktøj bør være så tilgængeligt, som det overhovedet kan være — og derefter, når det har gjort sig fortjent, tilbyde uendelig dybde til enhver, der vil grave. Den tilgængelige del er hele opgaven, ikke en trøstepræmie til begyndere. Dybden er bonussen, du lægger ovenpå.
Min målestok for enhver Claude Code-tilpasning er ét spørgsmål: ville jeg kunne række det til en kollega uden en times briefing? Hvis svaret er nej, overlever det sjældent. Min stak holdes bevidst simpel og dum. Her er, hvad der er tilbage efter det filter.
Hvad fortjente en plads
Den kortfattede output-tilstand. Dækket ovenfor. Den enkeltvis mest virkningsfulde ændring, fordi den rører hvert eneste svar. Mindre at læse, færre tokens brændt, længere levetid for konteksten.
Statuslinjen. Den betyder mere, end den lyder til. Jeg har som regel flere ting i gang på én gang og mister overblikket over, hvor jeg er — hvilket repo, hvilken opgave, hvor meget budget jeg har tilbage. Min statuslinje viser det hele i én stribe: modellen, jeg kører på, hvor fyldt kontekstvinduet er, hvor jeg står i forhold til min 5-timers forbrugsgrænse (Claude Code sætter et loft over, hvor meget du kan køre inden for et rullende fem-timers vindue), og min nuværende mappe. Ingen klik, ingen gætteri. Jeg kigger ned og kender min situation. For enhver, der jonglerer mere end én ting ad gangen, er det den billigste sindsro, jeg har købt.
Indstillingslaget. Det er her, det bliver personligt, og hvor mulighederne aldrig hører op. Min konfiguration spiller en lyd, når Claude er færdig, så jeg kan kigge væk og blive kaldt tilbage. Den sender OS-notifikationer. Du kan få den til at logge formålet med hver session, holde styr på tokens og pris, hvad end du beslutter er værd at vide. Der findes ingen “rigtig” opsætning — pointen er, at hooks’ene findes (små kommandoer, værktøjet kører automatisk på bestemte tidspunkter, for eksempel når det er færdigt), og at du former dem til dit formål. Mit er “sig til, når du er færdig.” Dit kunne være noget helt andet.
Ingen af dem er smarte. Det er netop pointen. Hver enkelt fjerner en lille, daglig friktion, og ingen af dem kræver en forklaring.
Selve ledningsføringen
Lyden er et Stop-hook i settings.json:
"hooks": {
"Stop": [{ "hooks": [{
"type": "command",
"command": "afplay ~/.claude/sounds/done.mp3",
"async": true
}]}]
}
async: true, så den aldrig blokerer sessionen, og afplay er bare den indbyggede macOS-afspiller — skift den ud med hvad du vil.
Statuslinjen er knap nok mere end det. Claude rækker dit script en klump JSON ved hver gengivelse; scriptet printer en linje. Du peger på det én gang:
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline.sh"
}
og scriptet læser de felter, det er interesseret i, fra stdin:
input=$(cat) # session state, as JSON
model=$(jq -r '.model.display_name' <<<"$input")
ctx=$( jq -r '.context_window.used_percentage // 0 | floor' <<<"$input")
fh=$( jq -r '.rate_limits.five_hour.used_percentage // 0 | floor' <<<"$input")
dir=$( jq -r '.workspace.current_dir' <<<"$input")
Derfra er det bare at tegne strenge. Min tegner en lille farvet bjælke for hver procentdel — grøn, så gul, så rød, efterhånden som den fyldes — og højrejusterer stien, så striben ender med at se sådan ud:
Opus 4.8 xhigh · CTX ████░░░░░░ 38% · 5h ██░░░░░░░░ 21% ~/dev/golfnext
(xhigh der er bare det niveau af ræsonneringsindsats, jeg holder modellen på.) Det er hele molevitten. Ingen framework, ingen afhængighed at holde opdateret. Et shell-script og en klump JSON.
Hvad jeg ikke automatiserer
Mere automatisering er ikke altid en gevinst. Noget af det flytter bare omkostningen hen et sted, du ikke kan se, og dem lader jeg være slået fra.
Du kan få Claude til at linte og formatere hver fil i samme øjeblik, den redigerer den. Lyder ryddeligt. Det er det modsatte. Hvis et hook omformaterer en fil lige efter, modellen har rørt den, er modellens billede af den fil nu forældet — så næste gang den arbejder der, må den læse hele filen igen for at følge med. Du har byttet et rent diff for en langsommere, mere token-sulten session. Jeg vil hellere have, at den bare kører linteren én gang, til allersidst, når tænkningen er færdig.
Samme logik gælder automatisk model-fallback. Du kan få den til stille at skifte til en mindre model, når dit første valg er optaget. Det vil jeg ikke have. Jeg vælger en model bevidst, som regel fordi opgaven kræver den større ræsonneringsmodel — den, der standser op og arbejder et problem igennem, før den svarer. Hvis den er overbelastet, vil jeg hellere komme tilbage om to timer og skrive “tag den her op igen” end at lade noget stille række mit svære problem videre til en model, der ikke kan bære det. Bekvemmelighed er ikke et dårligere svar værd, som jeg ikke opdagede, jeg fik.
Vinduet bør være en ikke-begivenhed
Folk taler meget om at styre kontekstvinduet — komprimere det (få værktøjet til at opsummere samtalen indtil videre for at frigøre plads), holde øje med det, pleje det. Jeg prøver aldrig at være i den samtale.
Måden, jeg undgår det på, er strukturel: skub det tunge arbejde over på subagenter — separate hjælpe-instanser af Claude Code, hver med sin egen private kontekst — og hold hovedtråden ren. En subagent tager af sted, brænder sin egen kontekst af på at læse og søge, og rækker det korte svar tilbage. Hovedsessionen forbliver let. Gjort rigtigt rækker jeg næsten aldrig ud efter komprimering, fordi jeg aldrig lader vinduet blive fyldt i første omgang.
Men her er den ærlige del: jeg synes, det er en lugt i sig selv, at nogen af os overhovedet skal vide det her. Ingen burde behøve at forstå kontekstvinduer for at begynde at være produktiv med værktøjet. Det er en nuværende begrænsning forklædt som en færdighed. Om et par år vil jeg vædde på, at det er abstraheret helt væk, og at vi taler om det, som vi taler om at styre vores egen RAM — hvilket vil sige, at det gør vi ikke. Jeg optimerer omkring det i dag, og jeg prøver ikke at forveksle det at arbejde uden om en begrænsning med noget, der er værd at lære fra sig.
Kan jeg bevise det? Ikke med tal. Jeg har ikke et rent før-og-efter, og jeg er skeptisk over for enhver, der citerer en pæn procentdel for det her. Hvad jeg har, er en fornemmelse: vinduet fyldes langsommere, budgettet rækker længere, sessionerne forbliver lette længere. Det er subjektivt, og jeg ville mærke det i samme øjeblik, det var væk.
Sådan finder du dine egne
Den svære del er ikke at konfigurere noget. Det er at vide, hvad der overhovedet er muligt.
Claude Code bevæger sig hurtigt — det føles som ti nye kommandoer om ugen. Så hurtigt, at modellen selv ikke kan følge med. Jeg spørger den om en rigtig slash-kommando — “hvad gør /goal, kan du forklare det?” — og den aner ikke, at kommandoen findes. Der er noget komisk over det: det mest kapable, jeg arbejder med, kan ofte ikke fortælle dig om funktioner, der er kommet til efter dens træningsgrænse. Den er bagud på sig selv, helt bogstaveligt. Du kan ikke bare spørge modellen, hvad den kan. Du er nødt til at gå og kigge — læs changelogen, skim en guide, peg den ud på det åbne web, hvor det friske faktisk lever.
Den næste ting, jeg vil prøve, er slet ikke en indstilling. Jeg har et halvt dusin projekter i gang, så jeg vil bygge ét lille meta-repo: ét sted, der peger på dem alle, og som enhver — ikke kun jeg — kan navigere i. Samme instinkt som alt andet her: hvis det kun virker for mig, virker det ikke rigtigt.
Det er hele filteret, når det kommer til stykket. Tag de to-tre ting, der dræber en rigtig, gentagen friktion. Lad resten ligge, uanset hvor smart det ser ud. Målet var aldrig det mest avancerede setup. Det var det, du stadig ville være glad for at række videre til en anden.
