En inställning kapade min AI-kodagenters tokenanvändning med 17 %: här är siffrorna

Publicerad den Sep 22, 2026 av Štefan Moravík.
AI Agents Token Optimization Claude Code Developer Tools
På den här sidan 7 min läsning
  1. 1Den korta versionen
  2. 2Varför ett fönster på 1M kostar mer än det ser ut
  3. 3Vad jag ändrade
  4. 4Hur jag mätte
  5. 5Två sessioner, samma agent
  6. 6Veckosiffrorna
  7. 7Var pengarna gick
  8. 8Höll taket
  9. 9Vad det skulle ha kostat utan taket
  10. 10Vad det kostar dig
  11. 11Så ställer du in det
  12. 12Om du har en veckogräns
  13. 13Läs nästa

Den korta versionen

  • Jag kör en AI-kodagent hela dagen på en modell med ett kontextfönster på 1M tokens. Sessionerna växte förut tills de nästan fyllde det.
  • Jag lade till en rad i dess konfiguration, som begränsar en session till 350 000 tokens kontext innan den sammanfattar sig själv och fortsätter.
  • Mätt över 1 117 sessionstranskript: 17 % färre tokens för samma antal prompter, och i de långa sessionerna där taket faktiskt slår till, 55 % färre.

Nedan finns metoden, varje diagram och vad det kostar dig i gengäld, så att du kan avgöra om det gäller din uppsättning.

Varför ett fönster på 1M kostar mer än det ser ut

En konversation med en modell är tillståndslös. Varje förfrågan bär hela historiken: systemprompten, varje verktygsdefinition, varje fil agenten har läst, varje verktygsresultat, varje meddelande. Inte en delta. Allt, varje gång.

Så en session som har växt till 900 000 tokens betalar för 900 000 tokens indata vid nästa anrop, och vid anropet efter det. Tur 400 gör inte mer arbete än tur 4. Den kostar bara många gånger mer.

Prompt-cachning mildrar detta. Tokens som modellen har sett tidigare faktureras till ungefär en tiondel av det normala indatapriset. Den rabatten är verklig, den är det som gör långa sessioner genomförbara över huvud taget, och den är också anledningen till att ingen tittar på problemet. I mina data var 98 % av alla indatatokens cache-läsningar. En tiondel av ett mycket stort tal var fortfarande den största posten på räkningen.

Frågan är inte om din historik är cachad. Det är hur stor den tillåts bli innan något nollställer den.

FlowHunt Logotyp

Redo att växa ditt företag?

Starta din kostnadsfria provperiod idag och se resultat inom några dagar.

Vad jag ändrade

Agenten är Claude Code som kör Opus på kontextfönstret på 1M. Inställningen är autoCompactWindow i ~/.claude/settings.json. När en session når så många tokens sammanfattar agenten konversationen och fortsätter från sammanfattningen.

{
  "autoCompactWindow": 350000
}

Jag hade aldrig satt den, så sessionerna körde tills de närmade sig hela fönstret. Under fyra dagar provade jag tre värden:

DatumInställning
14 september250 000
15 september300 000
18 september350 000

Hur jag mätte

Claude Code skriver varje session till ett JSONL-transkript under ~/.claude/projects/, inklusive tokenanvändningen för varje API-anrop. Jag parsade alla 1 117 av dem, som täcker fem veckor från 19 augusti till 22 september, deduplicerade per request-ID och behöll bara interaktiva sessioner. Körningar i GitHub Actions använder samma konto men kan inte påverkas av en inställning på min laptop, så de är uteslutna.

Råa tokentotaler är missvisande i sig. En hektisk vecka slår en lugn vecka vad du än ändrar. Så varje siffra nedan är cache-viktad, vilket är vad mätaren faktiskt läser: färsk indata vid 1x, cache-skrivningar vid 1,25x (5-minuterscache) eller 2x (1-timmescache), cache-läsningar vid 0,1x. Och varje jämförelse normaliseras efter utfört arbete, antingen prompterna jag skrev eller de API-anrop agenten gjorde.

Två sessioner, samma agent

Detta är mekanismen i en bild. Till vänster en verklig session från 3 september, före taket. Till höger en verklig session från 15 september, efter det.

Kontext som bärs av varje API-anrop i två verkliga sessioner: före taket klättrar kontexten till 996k tokens, kompakteras en gång och klättrar tillbaka till 880k. Efter taket sågar den mellan 24k och 270k och kompakterar femton gånger.

Sessionen till vänster körde 781 anrop. Den klättrade till 996 000 tokens kontext, träffade väggen i 1M-fönstret, kompakterade en gång och klättrade sedan rakt tillbaka till 880 000. Under andra halvan av den sessionen läste varje enskilt anrop om mer än en halv miljon tokens.

Sessionen till höger körde 1 642 anrop, mer än dubbelt så länge, och bar aldrig mer än 270 000. Den kompakterade femton gånger. Varje kompaktering är en prick.

Veckosiffrorna

Endast interaktiva sessioner. Staplarna är cache-viktade indatatokens per API-anrop, vilket är det mest rättvisa enskilda talet eftersom det inte bryr sig om hur mycket jag arbetade en viss vecka.

Cache-viktade indatatokens per API-anrop per vecka. De fyra veckorna före taket ligger mellan 27,9k och 36,1k. Veckan då taket tillämpades sjunker till 27,3k, och den följande delveckan till 22,4k.

Den renaste jämförelsen i datasetet är veckan den 7 september mot veckan den 14 september, eftersom jag inte valde dem. De råkade helt enkelt hamna på varsin sida om ändringen, och jag skrev nästan exakt lika många prompter i var och en.

Vecka frånPrompterAPI-anropCache-viktad indataPer anrop
7 sep97111 364348,1M30,6k
14 sep96810 555288,5M27,3k

971 prompter mot 968. Effektiv indata ner från 348,1M till 288,5M. Det är 17 % mindre för samma mängd promptande. De två dagarna i veckan efter kom in på 22,4k per anrop, ännu lägre.

Var pengarna gick

Dela upp varje API-anrop efter hur mycket kontext det bar, och mekanismen syns direkt.

Andel av all cache-viktad indatakostnad efter anropets kontextstorlek. Före taket gick 24 % av kostnaden till anrop som bar 350k till 500k kontext och 15 % till anrop över 500k. Efter taket är dessa andelar 8 % och 5 %.

Före taket gick 39 % av allt jag spenderade till anrop som släpade mer än 350 000 tokens historik efter sig. De anropen gjorde inte mer arbete än de andra. De var samma arbete med mer bagage. Efter taket är den andelen 12 %.

Höll taket

En prick per session, placerad vid den största kontext som sessionen någonsin bar.

Största uppnådda kontext per session, en prick vardera. Före taket spreds 260 sessioner från 100k till 996k. Efter taket klustrar 59 sessioner under 320k, med två undantag på 434k och 561k från de två första dagarna.

Två sessioner under de första två dagarna körde fortfarande förbi taket, till 434 000 och 561 000, och jag hittade inte varför. Sedan inställningen 350 000 lades in den 18 september har ingen session överskridit den. Svansen av sessioner som levde mellan 500k och 1M, där det mesta av slöseriet fanns, är borta.

Vad det skulle ha kostat utan taket

För att sätta en totalsiffra på det spelade jag upp varje session som startade efter ändringen som om den borttagna kontexten aldrig hade sammanfattats och fortfarande lästes om vid varje senare anrop, begränsad till 1M-fönstret.

Cache-viktad indata
Faktiskt, 73 sessioner, 9 675 anrop, 55 kompakteringar216,8M
Samma sessioner utan taket479,2M
Undviket262,5M, eller 55 %

Sessionen till höger i det första diagrammet står för 118,5M av det på egen hand. En lång refaktorering som annars hade spenderat sina sista flera hundra anrop på att läsa om nära en miljon tokens varje gång.

Behandla 55 % som den optimistiska änden. Utan taket skulle jag inte riktigt ha låtit en session mala på 900k i timmar; till slut skulle jag ha rensat den manuellt, vilket också nollställer kostnaden. Den konservativa änden är den observerade siffran per anrop, 30,6k ner till 22,4k, alltså ungefär 20 % till 27 %. Sanningen ligger någonstans mellan dessa två.

Vad det kostar dig

Detta är inte gratis, och den som rekommenderar det borde säga det.

Väntan. 67 kompakteringar sedan ändringen, i median ungefär tre minuter vardera. Ungefär 3,4 timmar av att titta på när en sammanfattning skrivs, utspritt över åtta dagar.

Visst omarbete. Kompaktering tappar mycket. Vid inställningen 350K tog mediankompakteringen en session på 318 000 tokens ner till 24 000. Agenten tappar detaljer och bygger ibland upp dem igen: filer som lästes om inom samma session gick från 11,5 % av läsningarna före den första kompakteringen till 20,5 % efter. Urvalet bakom den andra siffran är litet, så läs den som en riktning snarare än en mätning.

Valet av tröskel spelar roll. Vid 250K nådde 36 % av mina långa sessioner en kompaktering. Vid 350K gjorde 12 % det, samtidigt som taket höll. Sätt den för lågt och du betalar de tre minuterna och omarbetet gång på gång för en besparing du redan hade säkrat.

Så ställer du in det

Claude Code. Lägg till autoCompactWindow i ~/.claude/settings.json. På en modell med 1M-kontext var 350 000 det bästa av de tre värden jag provade. På en 200K-modell, skala ner och börja runt 120 000 till 140 000. Nya sessioner plockar upp den; en session som redan kör behåller det gamla värdet.

Andra agenter. Leta efter samma idé under ett annat namn: en kompakteringstrigger, en kontextgräns, en tröskel för sammanfatta-och-fortsätt. Om det inte finns någon är den manuella versionen att rensa sessionen oftare än vad som känns naturligt. Instinkten att hålla en lång session vid liv hela dagen för att den “känner till projektet” är den dyra.

Vad du än använder gör två vanor mer än någon inställning. Håll varaktigt tillstånd i filer snarare än i konversationen, så att agenten billigt kan läsa om en fil i stället för att bära varje tidigare svar för evigt. Och skjut läsintensivt arbete till subagenter med egen kortlivad kontext, så att de tjugo filer de läser aldrig kommer in i huvudsessionsen alls.

Om du har en veckogräns

Om du betalar en prenumeration med en veckovis användningsgräns i stället för en räkning per token, är detta den hävstång med bäst förhållande mellan insats och effekt som jag har hittat. En rad JSON, ingen ändring i hur du arbetar, och samma gräns sträcker sig mätbart längre. I mitt fall kostade samma veckovolym av promptande 17 % mindre, och de långa sessionerna kostade ungefär hälften.

Läs nästa

Kontextfönster säljs som kapacitet. De beter sig som en löpande mätare, som debiterar varje tur för allt du någonsin har lagt in. Om du vill ha mekaniken bakom detta i stället för bara inställningen, går den kompletterande artikeln igenom vad som faktiskt fyller ett kontextfönster, varför en lång session kostar mycket mer än arbetet den utför, och hur cachning, rensning och kompaktering var för sig ändrar räkneuppgiften.

Vanliga frågor

Štefan är en AI- och mjukvaruingenjör som bygger FlowHunt. Bortom produkten själv designar han agentic software-engineering-arbetsflöden för utvecklare som minskar utvecklingskostnaderna samtidigt som kodkvaliteten ökar.

Štefan Moravík
Štefan Moravík
AI- och mjukvaruingenjör

Bygg AI-agenter som inte slösar bort sin kontext

FlowHunt låter dig designa agentarbetsflöden där varje steg bara bär den kontext det behöver, så att du spenderar tokens på arbete i stället för på att läsa om historik.