Gå ud over prompten: Din AI coding assistant har brug for snor (og en hjerne)

Gå ud over prompten: Din AI coding assistant har brug for snor (og en hjerne)

Jun 20, 2026 ai coding agentic ai developer productivity software development automated testing prompt engineering ai workflows

Hvorfor dine AI-prompts sidder fast i 11. klasse

Lad mig male et billede op. Klokken er 23. Du har en feature der skal shipped, og du har siddet og kastet bold med en AI-assistent i den sidste time. Hvert prompt får et svar. Hvert svar bliver klistret ind. Noget af det virker. Noget af det gør ikke. Og du er ikke helt sikker på hvad der er hvad.

Bekendt historie?

Her er den ubehagelige sandhed: De fleste udviklere bruger AI-agenter på samme måde som man ville bruge en lommeregner hvis man selv skulle trykke på knapperne. Ja, den laver matematik. Nej, du ved ikke rigtig hvad der foregår indeni. Og når den uundgåeligt serverer noget der lyder plausibelt men er subtilt i stykker, så er det dig der sidder og debugger klokken 00:01.

De teams der faktisk shipper ægte produktionskode med AI, har fundet ud af noget andet. De er holdt op med at tænke på AI-assistance som et prompt-og-svar-spil. I stedet bygger de systemer — loops — der lader AI lave små, sikre, verificerbare ændringer løbende. Resultaterne taler for sig selv: færre regressioner, mindre context overflow, og diffs der faktisk kan læses.

Problemet med at gøre alt i ét skud

Der er en tillokkende enkelhed ved one-shot prompting. "Skriv et brugerautentificeringssystem til mig." Færdig. "Refactor hele modulet til at bruge den nye API." Bum. Det føles produktivt. Det føles hurtigt.

Indtil det ikke gør.

Overvej hvad der faktisk sker når du kaster en stor opgave efter en AI i ét skud. Først rammer du context-væggen. De fleste kodebaser der er værd at arbejde med, er for store til at fitte ind i en AIs hukommelse. Så den begynder at gætte på de dele den ikke kan se — og danne sig antagelser om afhængigheder, navngivningskonventioner, arkitekturmønstre der meget vel kan være helt forkerte.

Derefter kommer review-problemet. Hvis AI'en returnerer et 500-liniers diff, hvad gør du så egentlig med det? Du skimmer det. Du stoler på det mere end du bør fordi AI'en virker sikker. Du merger det og håber.

Her er sagen med håb: det er ikke en kvalitetskontrolproces.

Det tredje problem er det listigste. AI-modeller er trænet til at være hjælpsomme, hvilket betyder at de er trænet til at lyde sikre. Når en AI giver dig kode der ser fornuftig ud, ser den sandsynligvis fornuftig ud fordi den er trænet på fornuftig kode. Det betyder ikke at koden er korrekt i din specifikke kontekst. Uden en gate der tjekker faktisk adfærd, bliver sikkerhed din eneste acceptkriterie — og sikkerhed er en forfærdelig erstatning for korrekthed.

Ind i Loopet

Alternativet lyder næsten skuffende simpelt: i stedet for ét stort prompt, lav mange små skridt. Efter hvert skridt, tjek dit arbejde. Derefter gør det næste skridt.

Handle. Tjek. Gentag.

Det er et agentic loop i sin mest basale form, og hvis det lyder næsten for oplagt til at diskutere, så overvej at de fleste teams stadig ikke gør det. Magien ligger ikke i konceptet — det ligger i disciplinen om at håndhæve det stringent.

Her er hvad det ser ud i praksis. I stedet for at bede en AI om at "fikse alle de fejlende tests," ville du:

  1. Kør test-suiten og find den første fejl
  2. Bed AI'en om kun at rette den ene fejl
  3. Kør testene igen for at verificere rettelsen
  4. Hvis den passerer, gå videre til næste fejl; hvis den fejler, bliver ændringen reverted
  5. Gentag indtil null fejl — eller indtil AI'en melder at den ikke kan komme videre

Læg mærke til hvad der sker her. Hver ændring er uafhængigt verificeret. Når noget går i stykker, ved du præcis hvilken edit der forårsagede det. Når noget virker, bliver det. Loopet bygger en ratspin af verificeret fremgang i stedet for en bunke håbefuldt-korrekt kode.

De Tre Regler Der Får Det Til At Virke

Ikke alle loops er skabt lige. Et dårligt designet loop er værre end ingenting — det kan køre for evigt og lave kosmetiske ændringer, eller det kan sikkert ødelægge ting mens det ser ud til at virke. De loops der faktisk leverer, har tre ikkeforhandlingsbare egenskaber.

Først: en automatiseret gate der ikke lader sig overtale. Gaten er din sandhedsdetektor. Det kan være et testsuite der passerer, en linter der returnerer nul fejl, en type checker der bekræfter ingen type-mismatches, eller en automatiseret screenshot-sammenligning der fanger visuelle regressioner. Det afgørende punkt er at gaten er deterministisk og objektiv. Du kan ikke snakke dig uden om den, og det kan AI'en heller ikke. Hvis koden ikke passerer gaten, skete det ikke — reverted, ikke merged.

Dette er sværere end det lyder fordi det betyder at forpligte sig til at bygge infrastrukturen til dine gates. Du har brug for rigtige tests med rigtig coverage. Du har brug for at din type checker faktisk kører. Du har brug for at CI/CD-pipelinen er en førsteklasses borger, ikke en eftertanke.

Andet: én ændring per iteration. Dette føles smertefuldt langsomt når du er vant til one-shot prompting. Hvorfor ikke fixe alle type-fejl på én gang? Hvorfor ikke adressere hver linting-advarsel i én omgang?

Fordi når du sampler ændringer sammen og noget går i stykker, har du ingen idé om hvad der forårsagede det. AI'en fixer tre ting, ødelægger én, og det samlede resultat ser positivt ud — så ændringen bliver merged. Nu har du en regression uden nogen klar skyldige.

Én ændring, én verificering, én dom. Det er langsommere per skridt, men monumentalt hurtigere overordnet set fordi hvert skridt er uafhængigt reviewbart og revertabelt. Når noget går i stykker i produktion, kan du git bisect til præcis den ændring der forårsagede det i stedet for at debugge et halvfertigt rod af sammenvævede modifikationer.

Tredje: en ærlig stopbetingelse. Et loop uden stopbetingelse er enten uendeligt eller stopper arbitrært. Begge dele er dårligt. Stopbetingelsen skal være et målbart signal: test-antal der rammer nul, en "nothing to improve"-rapport i flere runder, en evaluationsscore der plateauer.

Disciplinen her er at acceptere ærlige skips. Når koden er genuint god, er det korrekte output "changed nothing—nothing needed changing." Et loop der ved hvornår det er færdigt, er ti loops værd der bliver ved med at slide marginale ændringer ud for at virke produktive.

Hvad Loops Fanger Som Prompts Misser

Lad mig give dig et konkret eksempel på hvorfor dette betyder noget.

Forestil dig et self-improvement loop der kører på et produktions admin-panel. Loopet tager screenshots af hver side, beder AI'en om at identificere og rette ét usability-problem per runde, kører type checks og linting, og fortsætter indtil det ikke kan finde mere at forbedre.

Over flere runder producerer dette loop snesevis af genuint forbedringer. Poleret UI. Bedre fejlmeddelelser. Klogere empty states.

Men den mest værdifulde rettelse var ikke kosmetik — det var en bug. Én runde flaggede screenshot-harnesset at en settings-side renderede frameworkets fulde-side crash-skærm. Her er pointen: dette crash var helt client-side. API health checks havde været grønne hele tiden fordi API'en var fin. Et menneske der reviewede screenshots kunne have scrolled forbi just den side eller antaget at det var et forbigående renderingsglitch.

Det automatiserede loop fangede det, ekstraherede den egentlige fejl ("Cannot read properties of undefined (reading 'memes')"), sporede den til en state-merge bug i component lifecyclen, og fixed den ved roden. Og fordi harnesset nu ved at tjekke for det crash-skærm-mønster, vil det fange den hele klasse af bugs for evigt.

Det er udbyttet. Et loop gør ikke bare arbejde — det bygger en ratspin der akkumulerer verificerede forbedringer og forhindrer verificerede regressioner i at vende tilbage.

Hvorfor Dette Betyder Noget For Dit Team

Hvis du bygger en startup, har du ikke tid til AI-værktøjer der kræver konstant pasning. Hvis du er udvikler, har du ikke tålmodighed for værktøjer der introducerer flere bugs end de fixer.

Agentic loops adresserer begge bekymringer. De gør AI-assistance genuint pålidelig ved at erstatte tillid med verifikation. De gør fremgang målbar ved at gøre hver ændring ansvarlig. De gør debugging håndterbar ved at sikre at når noget går i stykker, ved du præcis hvornår og hvorfor.

Det bedste ved det? Denne tilgang er ikke begrænset til kode-generering. Samme mønster virker til automatiseret testing, bug-jagt, sikkerhedsscanning, dokumentationsopdateringer, dependency management — overalt hvor du har brugt one-shot prompts hvor du ville have gavn af løbende verifikation.

Uanset om du arbejder solo eller leder et team, er spørgsmålet ikke om du skal bruge AI til kodning. Spørgsmålet er om du bruger det på en måde der faktisk gør dig hurtigere — eller bare får dig til at føle dig travl mens du akkumulerer teknisk gæld.

Loops er ikke den eneste måde at arbejde med AI på. Men de er den eneste måde jeg har set der skalerer til seriøs produktionsudvikling uden at akkumulere en kirkegård af plausibelt-men-forkert kode.

Din tur.

Read in other languages:

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