F· AI engineeringagenter-verktyg· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20
Kodagenter
Kunna bygga en agent som skriver, kör och rättar kod mot tester.
Förkunskaper
Intuition
Kod har en egenskap som text saknar: den går att köra. Det gör kodagenter till det mest välfungerande agentfallet — testresultatet är en objektiv, automatisk återkoppling i varje varv.
Loopen:
läs uppgift och befintlig kod
→ skriv/ändra kod
→ kör testerna i sandlåda
→ testerna gröna? klart
→ annars: läs felutskriften, ändra, försök igen (max n varv)
Det som avgör kvaliteten är inte modellen utan återkopplingen: hela stack tracen, vilka tester som failade, och vilken kod som kördes. En agent som bara får «testerna failade» famlar.
Kod
def kodagent(uppgift, filer, kor_tester, llm, max_varv=6):
"""kor_tester körs ALLTID i sandlåda utan nät. Returnerar (ok, rapport)."""
historik = []
for varv in range(max_varv):
ok, rapport = kor_tester(filer)
if ok:
return {"status": "klar", "varv": varv, "filer": filer, "historik": historik}
if varv and rapport == historik[-1]["rapport"]:
historik.append({"varv": varv, "note": "ingen förändring i testresultat"})
return {"status": "fastnat", "varv": varv, "filer": filer, "historik": historik}
andring = llm.generera({
"uppgift": uppgift,
"filer": filer,
"testrapport": rapport[:4000], # hela felutskriften, inte bara "failade"
"tidigare_forsok": [h.get("sammanfattning") for h in historik[-2:]],
})
filer = applicera(filer, andring) # patch, inte hela filen
historik.append({"varv": varv, "rapport": rapport, "sammanfattning": andring["motivering"]})
return {"status": "budget_slut", "filer": filer, "historik": historik}
Fyra saker som gör skillnad i praktiken:
- Patchar, inte hela filer — mindre risk att agenten raderar orelaterad kod.
- Stoppa vid stagnation — samma testresultat två varv i rad betyder att strategin inte fungerar.
- Testerna får inte ändras av agenten — annars «löser» den uppgiften genom att ta bort testet.
- Sandlåda utan nät — genererad kod är otillförlitlig per definition.
AI-grafens labbrunner är byggd för exakt detta: filer in, tester körs isolerat, strukturerat resultat ut.
Behärskning innebär
- Bygger en agent som skriver, kör och rättar kod mot tester
- Använder testresultatet som styrsignal
- Kör all genererad kod isolerat
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — SWE-bench: Can Language Models Resolve Real-World GitHub Issues? — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Evaluating Large Language Models Trained on Code — arXiv (öppen åtkomst; licens per artikel)