Case · AI-kodning
Mit firmas IT drives af en kodeagent.
Dette website, dets database, dets hosting og firmaets dokumentation drives af en kodeagent, der arbejder inden for regler, jeg har skrevet. Repositoriet er offentligt, så det, der står på denne side, kan efterprøves dér.
11
pull requests lagt i drift på lanceringsdagen, 30. september 2026. Hver af dem havde først et godkendt preview-build.
13
wiki-artikler skrevet samme dag, sideløbende med koden: hvad der findes, hvad der blev besluttet og hvorfor.
28 min
hvor domænet ikke kunne slås op den dag, efter en DNS-flytning slog fejl. Beskrevet nedenfor, med den regel, det førte til.
Hvad agenten får udleveret
Intet her afhænger af en særlig model. Det afhænger af fire ting i repositoriet.
Projektinstruktioner
Én fil, agenten læser i starten af hver session: hvordan koden er organiseret, hvor teksterne ligger, de faste navne på ydelserne, og hvordan jeg skriver. Den indeholder reglen om, at ingen fakta, tal eller titler må opfindes.
En firmawiki
Hvad der findes, hvordan det er sat op, hvad der blev besluttet og hvorfor, og hvad der stadig er åbent. Kilder gemmes først og redigeres aldrig; artiklerne skrives ud fra dem. Agenten læser wikien, før den handler, og opdaterer den i samme arbejdsgang.
Forbindelser
Kommandolinjeadgang til kodehosting, hostingudbyderen og databasen, knyttet til dette projekt alene. De rettigheder, der gælder for mit kundearbejde, holdes adskilt og bliver ikke rørt.
Tjek, der kan fejle
Hver pull request får et produktionsbuild og en preview-udgave. Et script tjekker wikien og afviser pull requesten ved et brudt link, en manglende kilde eller et forældet indeks.
Hvem bestemmer hvad
Grænsen står skrevet i repositoriet, og jeg er den eneste, der flytter den.
Agenten, på egen hånd
- Ændringer i sitets kode, tekster og design
- Databasemigreringer
- Domæne-, miljø- og deploy-kommandoer hos hostingudbyderen
- Hele pull requesten: branch, tjek, merge og kontrol af driften bagefter
- At holde wikien opdateret
Kræver mig
- Konti, agenten ikke kan nå: domæneregistrator, e-mail, betaling
- Hemmeligheder. Jeg lægger dem selv ind; agenten kender deres navne, aldrig deres værdier
- Alt destruktivt, fx at slette data eller nedlægge en tjeneste, hver gang
- Beslutninger om penge, kunder og hvad firmaet sælger
- Enhver ny oplysning om mig eller mine kunder på sitet
Et automatisk sikkerhedstjek forhindrer agenten i at læse adgangsoplysninger og i at ændre sine egne rettigheder, også når den bliver bedt om det i chatten.
Jeg gennemgår ikke ændringerne før merge her. Det er mit eget firma, og risikoen er min. I et team hører den grænse til et andet sted, og at beslutte hvor er en del af opsætningen.
Sådan når en ændring i drift
De samme seks trin hver gang, uanset om ændringen er én sætning eller en ny del af sitet.
- 01
Jeg beder om det
I almindeligt sprog, som jeg ville bede en kollega.
- 02
Den læser
Projektinstruktionerne og wiki-siderne for det område, den skal til at røre ved.
- 03
Den bygger
På en branch, og åbner derefter en pull request, der siger, hvad der er ændret og hvorfor.
- 04
Tjek kører
Produktionsbuild, preview-udgave og wiki-tjekket. Agenten merger kun, når de er bestået.
- 05
Den merger
Ændringen er i drift efter cirka et minut.
- 06
Den kontrollerer
Den tjekker det levende site og noterer derefter ændringen i wikien.
Lanceringsdagen, 30. september 2026
Alle pull requests, der blev merget den dag, i dansk tid. Hver linje linker til selve ændringen.
Hvad der gik galt
På lanceringsdagen flyttede vi domænets navneservere til hostingudbyderen. Udbyderen oprettede aldrig en zone for domænet, så fra 15.59 til 16.27 kunne intet slås op for nogen uden et gemt svar. Det gjaldt også indgående e-mail, som blev forsinket, ikke tabt. Vi skiftede tilbage.
Agenten havde noteret, hvad hver navneserver svarede, mens det stod på. Samme dag blev de noter til en runbook med ét trin, der ville have fanget problemet: spørg den nye udbyders navneservere direkte, før der skiftes, og stop, hvis svaret er tomt eller afvist.
Senere samme eftermiddag så sitet ud til at være nede fra mit eget netværk, mens det virkede alle andre steder. En resolver havde gemt et tomt svar under reparationen. Det blev til endnu et punkt: tjek udefra, før noget ændres.
Ting går galt med eller uden en agent. Det, opsætningen tilføjer, er, at læren bliver skrevet ned samme dag og læst før næste ændring.
Fire linjer fra repositoriet
Gengivet ordret. Repositoriet er skrevet på engelsk.
No hype and no invented facts, clients, numbers or job titles; leave things out rather than guess. Every figure comes from real work and says whether it was measured in production or tested on historical data.Held back: an AI coding FAQ about safety and payoff, because it would state new claims about Mathias's methods in his voice.Stop before `main` only when Mathias has to do something specific first, and say what.Query the new provider's nameserver directly and compare with the old one, record by record. A "refused" answer or an empty answer means stop.De samme dele, i jeres kodebase
Det er det, jeg sætter op for et udviklingsteam: instruktioner, agenten læser hver gang, en nedskrevet grænse mellem det, den må gøre selv, og det, der kræver et menneske, tjek, der kan afvise en pull request, og et sted, hvor beslutninger og hændelser bliver noteret. Hvor grænsen ligger, afhænger af jeres systemer og jeres risiko.
Fortæl mig, hvad I har brug for.
Tre linjer er nok. Jeg svarer inden for én arbejdsdag med, hvordan jeg ville gribe det an, og hvad det kræver.
- Gratis og uforpligtende
- Et klart svar på, om jeg kan hjælpe
- En pris, før arbejdet går i gang
