Din AI-assistent er for dum til at svare ja eller nej
Din AI-kodningsagent fortjener smartere merge-gates end bare ja eller nej
Forestil dig situationen: Din AI-kodningsagent har lige submitte en pull request. Alle tests er grønne. Din linter er tilfreds. Din sikkerhedsscanner har ingen indvendinger.
På papiret ser alt perfekt ud.
Så du merger, ikke?
Ikke så hurtigt.
Den binære fælde
Traditionelle CI/CD-gates fungerer fint for menneskeskrevet kode. Vi mennesker har en tendens til at skrive kode, der svinger mellem "god nok" og "skal rettes". Vi kan tjekke et par bokse, køre nogle tests og træffe en fornuftig beslutning.
Men AI-kodningsagenter? De opererer i en helt anden virkelighed. De kan generere funktionel kode, der ser perfekt ud på papiret, men som gemmer på subtile problemer: overkomplicerede løsninger på simple problemer, mønstre der virker i dag men ikke skalerer, eller kode der antager noget om den bredere kodebase, som måske ikke holder.
En boolesk merge gate – bestå eller dump, merge eller bloker – forstår grundlæggende ikke denne virkelighed. Den behandler kodekvalitet som en binær tilstand, når det i virkeligheden er et spektrum med kontekstafhængige grænseværdier.
Hvad gør AI-kode anderledes
Her bliver det interessant. Når en menneskelig udvikler skriver kode, samler deres fejl sig omkring kendte svagheder. De glemmer edge cases. De skriver forvirrende variabelnavne. De er mennesker.
Når en AI-kodningsagent skriver kode, er fejltilstandene anderledes:
Det "teknisk korrekte" problem: Koden virker, men den løser det forkerte abstraktionsniveau. Den kan bestå alle tests, men introducere teknisk gæld der vokser over tid.
Kontekstblindheden: AI er bemærkelsesværdigt god til at generere kode, der virker isoleret, men går i stykker når den integreres med resten af systemet. En boolesk gate ser beståede tests og godkender mergen. En smartere gate ville flagge potentielle integrationsproblemer.
Fælden "god nok i dag": AI optimerer ofte for at bestå de nuværende krav uden at tænke på morgendagens behov. En boolesk gate kan ikke skelne mellem "dette virker perfekt til vores brugs case" og "dette akkurat akkurat holder".
Byg gates der tænker i nuancer
Så hvad ser en bedre merge gate ud? Det starter med at opgive den booleske tankegang og omfavne gradueret vurdering.
Tænk på en trinvis tilgang: kode der fejler kritiske gates (sikkerhedssårbarheder, ødelagt funktionalitet) blokeres. Kode der fejler kvalitetsgates (stilproblemer, mindre kompleksitetsproblemer) flags til menneskelig gennemgang. Kode der består alt merges med tillid.
Dette handler ikke om at være blød på kvalitet – det handler om at være realistisk omkring hvordan AI-genereret kode bør evalueres. En sikkerhedssårbarhed er en binær beslutning. Et lidt for langt funktionsnavn er en samtale.
Menneske-AI samarbejdsmodellen
Her er min holdning: AI-kodningsagenter erstatter ikke udviklerens dømmekraft – de udvider den. Din merge gate bør afspejle denne virkelighed.
Nogle teams eksperimenterer med gates der scorer kode på flere dimensioner – korrekthed, vedligeholdbarhed, sikkerhed, performance – og router pull requests derefter. En simpel bugfix med en høj korrekthedsscore men lavere vedligeholdbarhed kan gå igennem med minimal gennemgang. En større feature med blandede scores på tværs af alle dimensioner fortjener grundig menneskelig opmærksomhed.
Denne tilgang respekterer både den hastighed AI muliggør og den visdom erfaringen bringer.
Find din balance
Det rigtige niveau af gate-kompleksitet afhænger af din kontekst. En startup der shipper hurtigt kan acceptere mere risiko i bytte for hastighed. En virksomhed der håndterer følsomme data har brug for strammere kontroller.
Det universelle er dette: at behandle din AI-kodningsagents bidrag som enten "god nok til at merge" eller "ikke god nok" er et falsk valg. Den software vi bygger er for kompleks, og værktøjerne vi bruger er for avancerede, til så simplistisk evaluering.
Din merge gate bør være den klogeste del af din pipeline – fordi det er den sidste forsvarslinje mellem AI-kapabilitet og produktionsvirkelighed.
Hvilken tilgang har virket (eller fejlet) for dit team? Jeg er oprigtigt nysgerrig på hvordan andre tænker over dette problem.