Agentdriven kodning

Kodagenter är konversationella AI-modeller med tillgång till verktyg som läsning/skrivning av filer, webbsökning och körning av skalkommandon. De finns antingen i IDE:n eller i fristående kommandorads- eller GUI-verktyg. Kodagenter är mycket autonoma och kraftfulla verktyg som möjliggör många olika användningsfall.

Den här föreläsningen bygger vidare på materialet om AI-stödd utveckling från föreläsningen Utvecklingsmiljö och verktyg. Som en snabb demonstration fortsätter vi med exemplet från avsnittet AI-stödd utveckling:

from urllib.request import urlopen

def download_contents(url: str) -> str:
    with urlopen(url) as response:
        return response.read().decode('utf-8')

def extract(content: str) -> list[str]:
    import re
    pattern = r'\[.*?\]\((.*?)\)'
    return re.findall(pattern, content)

print(extract(download_contents("https://raw.githubusercontent.com/missing-semester/missing-semester/refs/heads/master/_2026/development-environment.md")))

Vi kan prova att ge en kodagent följande uppgift:

Gör om detta till ett riktigt kommandoradsprogram, med argparse för argumentparsning.
Lägg till typannoteringar och se till att programmet klarar typkontroll.

Agenten kommer att läsa filen för att förstå den, sedan göra ändringar och till sist köra typkontrollen för att säkerställa att typannoteringarna är korrekta. Om den gör ett misstag som gör att typkontrollen misslyckas kommer den sannolikt att iterera, även om det här är en enkel uppgift där det är mindre troligt. Eftersom kodagenter har tillgång till verktyg som kan vara skadliga ber agentramverk som standard användaren att bekräfta verktygsanrop.

Om kodagenten gör ett misstag — till exempel om du har mypy-binären direkt tillgänglig på $PATH men agenten försöker köra python -m mypy — kan du ge textåterkoppling för att hjälpa den kurskorrigera.

Kodagenter stöder interaktion i flera turer, så du kan iterera över arbetet i en fram-och-tillbaka-konversation med agenten. Du kan till och med avbryta agenten om den är på väg åt fel håll. En hjälpsam mental modell är att tänka på dig själv som chef för en praktikant: praktikanten gör grovjobbet men behöver vägledning och gör ibland fel som måste rättas.

För en tydligare demonstration kan du som uppföljning be agenten köra det resulterande skriptet. Observera utdata och be den göra en ändring (t.ex. att endast inkludera absoluta URL:er).

Hur AI-modeller och agenter fungerar

Att fullständigt förklara det inre arbetssättet i moderna stora språkmodeller (LLM:er) och infrastruktur som agentramverk ligger utanför den här kursens omfång. Det är dock hjälpsamt att ha en övergripande förståelse för några nyckelidéer för att effektivt använda den här tekniken i framkant och förstå dess begränsningar.

LLM:er kan ses som modeller av sannolikhetsfördelningen för fullföljande strängar (utdata) givet promptsträngar (indata). LLM-inferens (det som händer när du t.ex. skickar en fråga till en konversationsapp) drar stickprov från denna sannolikhetsfördelning. LLM:er har ett fast kontextfönster, den maximala längden på in- och utsträngarna.

AI-verktyg som konversationschatt och kodagenter bygger ovanpå denna grundmekanism. För interaktioner i flera turer använder chattappar och agenter turmarkörer och skickar hela konversationshistoriken som promptsträng varje gång det kommer en ny användarfråga, vilket kör LLM-inferens en gång per användarfråga. För verktygsanropande agenter tolkar ramverket vissa LLM-utdata som förfrågningar om att anropa ett verktyg, och ramverket skickar tillbaka resultatet av verktygsanropet till modellen som en del av promptsträngen (så LLM-inferens körs igen vid varje verktygsanrop och svar). Kärnkoncepten i verktygsanropande agenter kan implementeras på 200 rader kod.

Integritet

De flesta AI-kodverktyg i standardkonfiguration skickar mycket av din data till molnet. Ibland kör ramverket lokalt medan LLM-inferensen kör i molnet. Andra gånger körs ännu mer av programvaran i molnet (och t.ex. kan tjänsteleverantören i praktiken få en kopia av hela ditt kodförråd och alla interaktioner du har med AI-verktyget).

Det finns AI-kodverktyg med öppen källkod och öppna LLM:er som är ganska bra (även om de inte är fullt lika bra som de proprietära modellerna), men i dagsläget är det för de flesta användare inte praktiskt möjligt att köra de mest avancerade öppna LLM:erna lokalt på grund av hårdvarubegränsningar.

Användningsfall

Kodagenter kan vara hjälpsamma för en stor variation av uppgifter. Några exempel:

Avancerade agenter

Här ger vi en kort översikt över några mer avancerade användningsmönster och förmågor hos kodagenter.

För många av de avancerade funktioner som kräver att du skriver uppmaningar (t.ex. skills/färdigheter eller subagenter) kan du använda LLM:er för att komma igång. Vissa kodagenter har till och med inbyggt stöd för detta. Till exempel kan Claude Code generera en subagent från en kort uppmaning (anropa /agents och skapa en ny agent). Prova att skapa en subagent med följande uppmaning:

En Python-agent för kodkontroll som använder `mypy` och `ruff` för typkontroll, lintning och formatkontroll av alla filer som har ändrats sedan senaste git-incheckning.

Sedan kan du använda toppnivåagenten för att uttryckligen anropa subagenten med ett meddelande som “använd subagenten för kodkontroll”. Du kan också vid behov få toppnivåagenten att automatiskt anropa subagenten när det är lämpligt, till exempel efter att Python-filer har ändrats.

Saker att se upp med

AI-verktyg kan göra misstag. De bygger på LLM:er, som bara är probabilistiska modeller för nästa token. De är inte “intelligenta” på samma sätt som människor. Granska AI-utdata för korrekthet och säkerhetsfel. Ibland kan det vara svårare att verifiera kod än att skriva koden själv. För kritisk kod kan det vara bättre att skriva den för hand. AI kan fastna i kaninhål och försöka vilseleda dig, så var uppmärksam på felsökningsspiraler. Använd inte AI som krycka, och var vaksam på överberoende eller ytlig förståelse. Det finns fortfarande en stor klass av programmeringsuppgifter som AI ännu inte klarar. Beräkningstänkande är fortfarande värdefullt.

Rekommenderad programvara

Många IDE:er och AI-kodtillägg innehåller kodagenter (se rekommendationerna från föreläsningen om utvecklingsmiljö). Andra populära kodagenter inkluderar Anthropics Claude Code, OpenAI:s Codex och agenter med öppen källkod som opencode.

Övningar

  1. Jämför upplevelsen av att koda för hand, använda AI-autokomplettering, inbäddad chatt och agenter genom att göra samma programmeringsuppgift fyra gånger.
  2. Den bästa kandidaten är en liten funktion i ett projekt du redan arbetar med.
  3. Om du vill ha fler idéer kan du överväga att lösa uppgifter av typen “good first issue” i öppen källkod-projekt på GitHub, eller problem från Advent of Code eller LeetCode.
  4. Använd en AI-kodagent för att navigera i en obekant kodbas.
  5. Det fungerar bäst när du vill felsöka eller lägga till en ny funktion i ett projekt du faktiskt bryr dig om.
  6. Om du inte kommer på något kan du prova att använda en AI-agent för att förstå hur säkerhetsrelaterade funktioner fungerar i agenten opencode.
  7. Vibekoda en liten app från grunden.
  8. Skriv inte en enda rad kod för hand.
  9. För den kodagent du föredrar, skapa och testa en AGENTS.md (eller motsvarande för din agent, som CLAUDE.md), en skill (t.ex. skill in Claude Code eller skill in Codex) och en subagent (t.ex. subagent in Claude Code).
  10. Fundera på när du vill använda den ena jämfört med den andra.
  11. Observera att din valda kodagent kanske inte stöder alla dessa funktioner.
  12. Du kan då antingen hoppa över dem eller prova en annan kodagent som har stöd.
  13. Använd en kodagent för att uppnå samma mål som i regex-övningen om Markdown-punktlistor från föreläsningen om kodkvalitet.
  14. Löser den uppgifterna via direkta filändringar?
  15. Vilka nackdelar och begränsningar finns med att låta en agent redigera filen direkt för att lösa en sådan uppgift?
  16. Ta reda på hur du ska formulera uppmaningen så att agenten inte löser uppgiften via direkta filändringar.
  17. Tips: be agenten använda ett av kommandoradsverktygen som nämns i första föreläsningen.
  18. De flesta kodagenter stöder någon form av “yolo mode” (t.ex. i Claude Code, --dangerously-skip-permissions).
  19. Det är inte säkert att använda detta läge direkt, men det kan vara acceptabelt att köra en kodagent i en isolerad miljö som en virtuell maskin eller container och sedan aktivera autonom drift.
  20. Få den här uppsättningen att fungera på din dator.
  21. Dokumentation som Claude Code devcontainers eller Docker Sandboxes / Claude Code kan vara användbar.
  22. Det finns mer än ett sätt att sätta upp detta.

Edit this page.

Licensed under CC BY-NC-SA.