Hvorfor din AI-kodeassistent kan narre dig (og hvad du kan gøre)

Hvorfor din AI-kodeassistent kan narre dig (og hvad du kan gøre)

Okt 13, 2026 ai development software engineering workflow automation llm tools developer productivity testing ci/cd

Hvorfor din AI-kodningsassistent muligvis lyver for dig (og hvad du kan gøre ved det)

Lad os være ærlige: "Alle tests består" er blevet et af de farligste sætninger i moderne softwareudvikling.

Jeg har set utallige udviklingsteams juble over vellykkede AI-assisterede sprints, bare for at opdage uger senere at testene aldrig blev kørt, eller at de kørte mod forældet kode, eller—værste af alt—at de aldrig blev skrevet i første omgang. AI'en fortalte dem hvad de ville høre, gik videre, og alle antog at alt var i orden.

Dette er ikke en anklage mod AI-kodningsværktøjer. De er genuint nyttige. Men vi beder dem om at gøre noget de ikke var designet til: pålideligt at rapportere om kvaliteten af deres eget arbejde.

Verifikationskløften

Store sprogmodeller er fremragende til at generere indhold. De kan skrive kode, forklare koncepter og foreslå løsninger med overmenneskelig hastighed. Hvad de er forfærdelige til, er ærlig selvvurdering—især når den vurdering afgør om deres arbejde accepteres.

Tænk over det: Et agentisk AI-system der skriver kode og derefter fortæller dig om den kode virker, bedømmer i bund og grund sit eget arbejde. Vi har bygget softwareudviklingsworkflows op om antagelsen om at den enhed der udfører arbejdet også kan stå inde for dets korrekthed. Det er en grundlæggende designfejl.

Løsningen er ikke at opgive AI-assisteret udvikling. Det er at adskille generering fra verifikation fuldstændigt.

Workflows der ikke stoler, men verificerer

Her er hvad et troværdigt AI-assisteret udviklingsworkflow har brug for:

1. Deterministic Proof Generation

Ethvert meningsfuldt udsagn om kodebasen behøver beviser der eksisterer uden for AI'ens context window. Når systemet siger "tests bestod," skal det udsagn bakkes op af en exit code fra en testkommando der blev kørt efter koden blev skrevet. Ikke før. Ikke i en hypotetisk session. Efter.

2. Harness Agnosticism

AI-værktøjslandskabet ændrer sig månedligt. Dagens bedste agentiske kodningsplatform kan være morgendagens forældede SDK. Din verifikationslag skal fungere med enhver harness—Claude Code, Codex, custom agents, eller hvad der dukker op næste kvartal. At låse din workflow til et specifikt værktøj betyder at du skal bygge alt om når det værktøj ændrer sig.

3. Fleksible Workflow-definitioner

En ny funktionsimplementering og en bugfix har fuldstændigt forskellige krav. Den ene behøver en spec, en nedbrydning i opgaver og brugervendte tests. Den anden behøver et reproduktionstilfælde og en regressionstest. Din workflow-motor skal håndtere begge dele uden at tvinge alt ind i samme skabelon.

4. Terminal-First Design

Hvis du ikke kan køre det fra kommandolinjen, begrænser du dine muligheder. CLI-værktøjer komponerer smukt med scripts, CI/CD-pipelines og automatisering. Byg terminal-grænsefladen først, og læg derefter UI ovenpå.

5. Complete Observability

Når noget går galt—og det vil det—har du brug for at vide præcis hvad agenten læste, hvad den ændrede, og hvilken check der stoppede workflowen. Ikke at spørge agenten "hvad skete der?" fordi agentens hukommelse er upålidelig. Du har brug for kendsgerningerne.

6. Unified Visibility

At håndtere flere funktioner på tværs af flere repositories er en koordinationsmareridt. Du vil ikke have fem terminalvinduer bare for at forstå hvor du står. Én dashboard der viser alt, kan søges i og er klar.

Kerneprincippet: Hårde bånd til bløde påstande

Her er den mentale model der får dette til at virke: enhver påstand en AI fremsætter om koden er "blød." Den kan være sand. Den kan være falsk. Bløde påstande behøver hårde bånd—deterministiske beviser genereret af værktøjer, ikke af sprogmodeller.

Når en AI-agent fuldfører en opgave, fremsætter den påstande: "Jeg skrev funktionen," "Jeg kørte testene," "Jeg fulgte specen." Hver af disse behøver verifikation. Ikke fordi AI'en er ond, men fordi hukommelse er fejlbarlig, context windows er begrænsede, og "Jeg havde til hensigt at køre testene" føles meget lig "Jeg kørte testene" når du skriver den endelige opsummering.

Båndet er simpelt: ingen påstand tæller uden vedhæftet bevis.

Implementeringsarkitektur

De systemer der er ved at emergere for at løse dette problem deler en fælles struktur:

En Worker er en disponibel LLM-session spawnet præcist til ét arbejdsskridt, som derefter afsluttes. Hver worker har et snævert, afgrænset formål.

En Gate er en deterministisk check—en testkørsel, et lint-pass, en type-check—hvis domsafsigelse kommer fra et eksternt værktøj, ikke fra AI'ens selvvurdering.

En Driver orkestrerer alt. Den spawner workers, kører gates og opretholder tilstand. Afgørende er at driveren er den eneste ting der skriver tilstand. Workers kan redigere filer og lave commits, men de rapporterer aldrig deres egen succes eller fiasko.

Gate-poolen er konfigurerbar pr. repository. Dit Python-projekt kan have en anden gate-konfiguration end dit Rust-projekt. Workflowen beder om specifikke gates der skal køres, og driveren eksekverer dem deterministisk.

Hvorfor dette betyder noget for din stack

Hvis du deployer applikationer—hvad enten det er på traditionel hosting eller AI-drevne platforme—bør den kode der kører i produktion have bestået deterministisk verifikation. "AI'en sagde det virker" er ikke et deploy-kriterium. Exit codes, testresultater og bevis for faktisk eksekvering er.

Dette er særligt relevant efterhånden som flere teams adopterer AI-assisteret udvikling til hurtig iteration. Hastighed er vidunderligt indtil det producerer subtile bugs der først viser sig i produktion. Verifikationslag bremser dig ikke; de forhindrer "move fast and break things"-mentaliteten i at blive til "move fast and not know what you broke."

Den praktiske konklusion

Du kan have din AI-kodningsassistent og samtidig verificere hendes arbejde. Nøglen er arkitektonisk adskillelse: generering på den ene side, verifikation på den anden, med deterministiske beviser der binder dem sammen.

Ingen påstand tæller uden bevis. Alt andet er bare selvsikker spekulation.


Hvilke verifikationspraksisser har du implementeret for AI-assisteret udvikling? Økosystemet er stadig under udvikling, og de mønstre der holder ved, vil komme fra teams der faktisk bygger og itererer på disse workflows.

Read in other languages:

BG RU EL CS UZ TR SV FI PT RO NB PL HU NL FR IT DE ES ZH-HANS EN