syv.ai logo

Artikel · 30. juli 2026 · 5 min

Vores software retter sig selv, mens vi sover

Mads Henrichsen

For to dage siden gav vi Ailex lov til at rette sig selv. Siden da har systemet deployet 15 fixes til produktion. Ingen af dem er skrevet af et menneske.

Det lyder som en dårlig idé. Det er det ikke, og jeg vil gerne forklare hvorfor.

Loopet

Hver anden time vågner et agentisk loop op i Claude Code, lokalt på vores Mac mini. Det trækker de seneste to timers LLM traces og logs fra Ailex og læser dem igennem. Ikke aggregerede metrikker, men de rå traces. Hvad spurgte brugeren om, hvilke tool calls lavede modellen, hvad kom der tilbage, og hvor gik det galt.

Når loopet finder et problem, skriver det et fix. Nogle gange er det en bug i et skill. Andre gange er det en manglende feature, som traces viser at modellen famler efter. Så kører fixet gennem vores CI gates og vores Legal AI benchmark. Kommer det igennem begge, bliver det deployet automatisk.

Der sidder ikke et menneske og godkender. Gaten er benchmarken.

TRACESrå LLM traces og logsFIXskrevet af agentenGATESCI og benchmarkDEPLOYuden godkendelsehver anden time
Hver anden time læser loopet de rå traces og skriver selv fixet.

Hvad den faktisk har rettet

Abstrakte påstande om agenter er billige, så her er tre af de 15 fixes i detaljer.

Det bedste eksempel er et fix mod EU’s CELLAR-database. Traces viste at opslag på arbejdstidsdirektivet fejlede. Agenten reproducerede selv fejlen med curl og fandt rodårsagen. Direktivet returnerer 404 på XHTML men 200 på HTML, mens GDPR opfører sig præcis omvendt. Fixet var en vægtet Accept-header, der håndterer begge. Det kald der fejlede i tracen, henter nu Artikel 2 af direktivet på dansk uden fejl.

Arbejdstidsdirektivet
XHTML404
HTML200
GDPR
XHTML200
HTML404
Én vægtet Accept-header håndterer begge
Samme database, modsat opførsel, ét fix.

Et andet fix handlede om indholdsfortegnelser i bekendtgørelser. Modellen gættede sig nogle gange forbi lovens faktiske slutning, fordi den ikke kunne se strukturen. Nu printer værktøjet indekset først, så modellen ved at Befordringsgodtgørelse ligger i §§ 129-131, før den begynder at lede.

Et tredje fix ryddede dødt kode op i backenden. Agenten greppede hele kodebasen, fjernede referencer der ikke længere blev brugt, og begrundede de to den beholdt med at de stadig var dækket af tests.

Resultatet på tværs af alle 15 er markant bedre svarkvalitet og færre fejl i tool calls. Ikke fordi modellen blev klogere, men fordi dens værktøjer blev det.

Hvorfor det virker

Jeg skrev for nylig at man ikke skal bygge et loop, man ikke kan verificere. Det her er den positive version af samme pointe.

Grunden til at vi tør lade en agent deploye til produktion, er ikke at agenten er til at stole på. Det er at verifikationen er. CI-gates fanger regressioner i koden. Legal AI benchmarken fanger regressioner i svarkvaliteten. Et fix der forringer noget, kommer ikke igennem.

Et fix fra loopet
CI gates
Fanger regressioner i koden.
Legal AI benchmark
Fanger regressioner i svarkvaliteten.
Deployet til produktion
Et fix der forringer noget, kommer ikke igennem.
Gaten er benchmarken, ikke et menneske.

Det interessante er at agenten selv arbejder efter samme princip. Den nøjes ikke med at skrive et fix og håbe. Den reproducerer fejlen uafhængigt, tester fixet end-to-end mod de præcise kald der fejlede i tracen, og dokumenterer hvad den fandt. Da den ryddede dødt kode op, tjekkede den at de ting den beholdt, stadig var dækket af tests.

Self healing software er med andre ord ikke et spørgsmål om at give en model adgang til sit eget repo. Det er et spørgsmål om at bygge gates, der er stærke nok til at man kan fjerne mennesket fra loopet uden at fjerne kontrollen.

Hvad det betyder

Traces er den mest undervurderede ressource i AI-produkter lige nu. De fleste teams logger dem og kigger aldrig på dem igen. Men hver trace er en beskrivelse af, hvad dit produkt burde have gjort. Et loop der læser dem hver anden time, omsætter den viden til kode, samme dag som problemet opstår.

Femten fixes på to dage svarer til flere ugers backlog-arbejde for et menneske. Ikke fordi fixene er svære, men fordi de aldrig ville være blevet prioriteret. Det er præcis den slags småfejl, der samlet set afgør om et AI-produkt føles skarpt eller sjusket.

Vores rolle har ændret sig. Vi skriver færre fixes og bruger mere tid på det, der faktisk kræver os. At gøre benchmarken bedre. For i et system der retter sig selv, er benchmarken produktet.

Spørgsmål?

Kontakt os og kom i gang med AI

Kontakt os