---
title: "Det usynlige arbeidet: Hva som endrer seg når du optimaliserer for lange økter"
url: https://kwhorne.com/blog/det-usynlige-arbeidet-hva-som-endrer-seg-nar-du-optimaliserer-for-lange-okter
author: "Knut W. Horne"
published: 2026-05-17T08:49:46+02:00
updated: 2026-05-17T08:51:35+02:00
category: "Elyra"
tags: ["AI", "Tech Insights", "Noteworthy News"]
language: nb-NO
---

# Det usynlige arbeidet: Hva som endrer seg når du optimaliserer for lange økter

> Elyra v0.6.0 handler ikke om nye kommandoer eller temaer. Det handler om hva som skjer inne i agenten i løpet av en to-timers økt — hvordan den husker, hva den koster, og hvilken modell som gjør jobben.

<h1>Det usynlige arbeidet</h1><h3>Hva som endrer seg når du optimaliserer for lange økter</h3><p>De fleste forbedringene i kodeagenter er synlige. En ny kommando, et nytt tema, en ny utvidelse. Du skriver noe, noe skjer, du ser det.</p><p>Endringene i <strong>Elyra v0.6.0</strong> er av et annet slag. De handler om hva som skjer <em>inne i</em> agenten i løpet av en to-timers økt — hvordan den husker, hvor mye den koster, og om den velger riktig modell for hver runde. Du kommer ikke til å legge merke til disse endringene direkte. Du kommer til å legge merke til at øktene flyter bedre, koster mindre, og mister mindre kontekst underveis. Men du kommer ikke til å se hvorfor.</p><p>Her er hva som er endret, og hvorfor det betyr noe.</p><h2>Komprimering pleide å glemme det viktige</h2><p>Når en økt blir lang, <em>komprimerer</em> Elyra samtalen — den oppsummerer gamle meldinger for å frigjøre kontekstplass. Sammendraget erstatter den rå historikken, slik at agenten har rom til å fortsette å jobbe uten å smelle inn i grensen på kontekstvinduet.</p><p>Problemet var hva sammendraget bevarte. Det gamle formatet hadde seks seksjoner: Mål, Begrensninger, Fremdrift, Viktige beslutninger, Neste steg, og Kritisk kontekst. Funksjonelt, men det manglet ting som teller i reelt utviklingsarbeid.</p><p>Det hadde ingen dedikert plass for <strong>arkitekturbeslutninger</strong>. Hvis du og agenten ble enige om å bruke repository-mønsteret for databasetilgang, levde den beslutningen som en one-liner under "Viktige beslutninger" — hvis oppsummereren i det hele tatt fanget den opp. To komprimeringer senere kunne den være borte. Agenten begynte å foreslå inline-spørringer fordi den ikke lenger visste at du hadde valgt et mønster.</p><p>Det sporet ikke <strong>feilhistorikk</strong>. Hvis du brukte tjue minutter på å feilsøke en race condition i en kø-worker, ble løsningen — hva som feilet, hva stack tracen sa, hva som var fiksen — komprimert til "Fikset bug i kø-worker" under Fremdrift. Hvis en lignende feil dukket opp senere i økten, hadde agenten ingen hukommelse om hva den allerede hadde prøvd.</p><p>Det nye formatet legger til to seksjoner:</p><p><strong>Arkitektur og mønstre</strong> bevarer strukturelle beslutninger eksplisitt. <em>"Bruker repository-mønster for DB-tilgang."</em> <em>"Delt opp i service- og controller-lag."</em> <em>"Hendelser sendes via Laravels event-system, ikke direkte kall."</em> Disse overlever komprimering fordi oppsummeringsprompten spør spesifikt etter dem.</p><p><strong>Feilhistorikk</strong> bevarer hva som gikk galt og hvordan det ble løst. Filstier, linjenumre, selve feilmeldingen, løsningen. Hvis agenten fikset en null pointer exception i <code>UserService.php</code> på linje 47 ved å legge til en null-sjekk, blir det bevart med nok detalj til å kjenne igjen samme mønster hvis det dukker opp igjen.</p><p>Reglene for oppsummering ble også mer eksplisitte. I stedet for <em>"hold det kortfattet,"</em> sier prompten nå: bevar nøyaktige filstier, funksjonsnavn, klassenavn, variabelnavn, feilmeldinger og stack traces <em>ordrett</em>. Inkluder spesifikke linjenumre der det refereres. Noter hvilke filer som ble opprettet, endret eller slettet.</p><p>På serialiseringssiden ble verktøyresultater tidligere kuttet til 2000 tegn før de ble sendt til oppsummereren. Det er trangt. En PHP stack trace alene kan være 1500 tegn. En filediff med kontekst overstiger lett 2000. Grensen er nå 4000 tegn, som betyr at oppsummereren ser mer av selve feilutdataen og filinnholdet når den bestemmer hva som skal bevares.</p><h2>En dato kostet deg penger hver dag</h2><p>Denne er nesten pinlig enkel.</p><p>Systemprompten — den lange tekstblokken som forteller agenten hvem den er, hvilke verktøy den har, hvilke ferdigheter den kjenner, hvordan prosjektkonteksten ser ut — sluttet med:</p><pre><code>Current date: 2026-05-16
</code></pre><p>Hver dag ved midnatt endret den datoen seg. Og når datoen endret seg, ble hele systemprompt-cachen invalidert.</p><p>Anthropic og OpenAI cacher systemprompts slik at gjentatte kall med samme prompt ikke må reprosessere alle de tokenene. En cache hit er omtrent <strong>10× billigere</strong> enn en cache miss. Men fordi datoen var bakt inn i systemprompten, var det første kallet etter midnatt alltid en cache miss — for <em>hele</em> prompten, ikke bare datoen.</p><p>For en typisk systemprompt på 3000 tokens betyr det 3000 tokens reprosessert til full inputpris i stedet for cache-pris. Multipliser med hver økt som spenner over midnatt, eller starter på en ny dag.</p><p>Fiksen: flytt datoen ut av systemprompten og injiser den som en del av første samtalemelding i stedet. Systemprompten er nå stabil på tvers av dager. Datoen når fortsatt agenten (den ligger i konteksten sammen med pinnede filer), men den invaliderer ikke prompt-cachen lenger.</p><p>Dette er den typen optimalisering du aldri ser, men alltid kjenner på fakturaen.</p><h2>Den smarte ruteren pleide å tvile på seg selv</h2><p>Elyras smarte ruter velger mellom billige modeller (for enkle oppgaver som å lese filer) og dyre modeller (for komplekse oppgaver som refaktorering på tvers av flere filer). Ideen er fornuftig: ikke betal Opus-priser for en <code>grep</code>.</p><p>Men klassifikatoren hadde problemer.</p><p>Den kjente <strong>åtte nøkkelord</strong>. Hvis meldingen din inneholdt <em>refactor</em>, <em>debug</em>, eller <em>architect</em>, eskalerte den til den dyre modellen. Hvis den ikke inneholdt ett av de åtte ordene, holdt den seg billig — selv om du skrev <em>"undersøk hvorfor betalingssystemet stille slipper transaksjoner under samtidig last."</em> Det er åpenbart en kompleks oppgave, men ingen av de magiske ordene dukket opp.</p><p>Nøkkelordlisten er nå <strong>35 termer</strong>. Den dekker:</p><ul><li><p><strong>Ytelsesarbeid</strong> — optimize, memory leak, race condition</p></li><li><p><strong>Feilsøking</strong> — investigate, diagnose, troubleshoot, root cause</p></li><li><p><strong>Arkitektur</strong> — design pattern, dependency injection, decouple</p></li><li><p><strong>Omfangsindikatorer</strong> — implement from scratch, build a system</p></li></ul><p>Det er fortsatt nøkkelordmatching — ikke semantisk analyse — men dekningen er dramatisk bedre.</p><p>Viktigere: ruteren hadde ingen hukommelse. Hver runde ble klassifisert uavhengig. En kompleks refaktorering i flere steg kunne se slik ut:</p><ol><li><p><strong>powerful</strong> — bruker beskriver refaktoreringen</p></li><li><p><strong>powerful</strong> — agenten planlegger</p></li><li><p><strong>powerful</strong> — agenten redigerer filer</p></li><li><p><strong>fast</strong> — agenten leser en fil for å sjekke resultatet</p></li><li><p><strong>powerful</strong> — agenten fortsetter å redigere</p></li></ol><p>Det fallet til <em>fast</em> midt i var feil. Agenten var midt i en oppgave, og gjorde bare et verifiseringssteg uten skriving. Men fordi klassifikatoren bare så på den aktuelle runden, så den "read-only-verktøy + kort melding" og nedgraderte.</p><p>Ruteren har nå <strong>hysterese</strong>. Hvis forrige runde ble klassifisert som powerful, faller ikke neste runde direkte til fast — den demper til <em>balanced</em> i stedet. Dette forhindrer oscilleringen uten å bli klebrig: hvis oppgaven faktisk blir enkel (et nytt urelatert spørsmål), legger den seg tilbake til fast etter én balanced-runde.</p><p>Nedgraderingen for read-only ble også smartere. Den utløses nå bare i korte samtaler (under 10 meldinger). I en lang økt er en read-only-runde nesten helt sikkert et mellomsteg i en større oppgave, ikke et frittstående enkelt spørsmål. Ruteren respekterer den konteksten nå.</p><p>Og store verktøyutdata (over 5000 tegn) eskalerer nå til powerful. En enkelt filskriving som skriver om en hel modul er komplekst arbeid, selv om brukerens melding var kort. Ruteren fanger det signalet nå.</p><h2>Hvorfor dette betyr mer enn nye funksjoner</h2><p>Nye kommandoer og utvidelser er spennende. De utvider hva Elyra <em>kan gjøre</em>. Men optimaliseringene i v0.6.0 forbedrer det Elyra <strong>allerede gjør</strong> — kjerneløkken med å forstå kontekst, holde kostnadene nede, og velge riktig verktøy for jobben.</p><p>En økt som mister arkitektonisk kontekst etter komprimering produserer dårligere kode i den andre timen enn i den første. En cache miss på systemprompten hver morgen koster reelle penger på tvers av tusenvis av økter. En smart ruter som oscillerer kaster bort tokens på modellbytter og retries.</p><p>Dette er ikke ting du feilsøker. Det er ting du <em>merker</em> — som en vag følelse av at "agenten virker som den glemmer ting," eller "dette koster mer enn det burde." Fiksene er usynlige. Men forbedringen hoper seg opp på tvers av hver økt, hver dag, hver bruker.</p><p>Og det, stille og rolig, er jobben.</p>
