AI-agenter · Lektion

Verktygsgränssnitt för kodning (Read, Edit, Bash)

De minsta verktyg en kodagent behöver: läsa en fil, redigera en fil, köra skalet och köra tester.

Lektion 2 av 416 steg

Verktygsgränssnitt för kodning (Read, Edit, Bash) är en gratis lektion i AI-agenter på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-agenter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-agenter innehåller totalt 4 lektioner.

Delar av den här lektionen har ännu inte översatts och visas på engelska.

Vilka verktyg behöver en kodagent?

Det minsta:

  1. read_file — se kod
  2. edit_file / write_file — ändra kod
  3. bash — köra skal kommandon (tester, byggen)
  4. search / grep — hitta kod efter sträng eller symbol

read_file

def read_file(path: str, start_line: int = 0, end_line: int | None = None) -> str:
    with open(path) as f:
        lines = f.readlines()
    return ''.join(lines[start_line:end_line])

# --- demo ---
with open('demo_source.py', 'w', encoding='utf-8') as f:
    f.write('line0\nline1\nline2\nline3\nline4\n')

snippet = read_file('demo_source.py', start_line=1, end_line=3)
print('Lines 1-2 of demo_source.py:')
print(snippet)

Läsning av radintervall sparar tokens

För stora filer ska ni endast läsa det relevanta intervallet. Det sparar mycket tokens jämfört med att läsa hela filen vid varje anrop.

edit_file (strängersättning)

Anthropics str_replace-mönster: hitta en unik sträng i en fil och ersätt den:

def edit_file(path: str, old_string: str, new_string: str):
    contents = read_file(path)
    occurrences = contents.count(old_string)
    if occurrences == 0:
        raise ValueError('old_string not found')
    if occurrences > 1:
        raise ValueError('old_string is not unique')
    contents = contents.replace(old_string, new_string)
    with open(path, 'w') as f:
        f.write(contents)

Varför strängersättning i stället för diffar

  • Enklare för modellen än att skapa giltig diffsyntax
  • Tvingar modellen att titta på RIKTIG kod, vilket hjälper till att upptäcka hallucinationer
  • Ger fel vid tvetydighet

Det är formatet som används av Claude Code.

write_file

För att skapa nya filer:

def write_file(path: str, content: str):
    os.makedirs(os.path.dirname(path), exist_ok=True)
    with open(path, 'w') as f:
        f.write(content)

bash

Skalkommandon – för tester, byggen och paketinstallationer:

def bash(command: str, timeout: int = 60) -> dict:
    import subprocess
    try:
        result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=timeout)
        return {'stdout': result.stdout[-5000:], 'stderr': result.stderr[-5000:], 'exit_code': result.returncode}
    except subprocess.TimeoutExpired:
        return {'error': 'timeout', 'exit_code': -1}

# --- demo ---
result = bash("echo hello from the sandboxed shell")
print(f"exit_code={result['exit_code']}")
print(f"stdout={result['stdout'].strip()!r}")

Sandlådekör bash-verktyget

Kör ALDRIG bash på värddatorn. Använd Docker / Firecracker / E2B. (Se föregående kurs om sandboxning.)

Korta ned lång output

Testfel kan generera megabyte av text. Korta ned till de sista kilobyten – där finns vanligtvis det faktiska felet:

stderr = 'error line\n' * 1000

if len(stderr) > 5000:
    stderr = '...[truncated]...' + stderr[-5000:]

print(f'Truncated stderr length: {len(stderr)}')

search / grep

def grep(pattern: str, path: str = '.', file_glob: str = '**/*') -> list[str]:
    matches = []
    for f in glob(file_glob, recursive=True):
        for i, line in enumerate(open(f)):
            if re.search(pattern, line):
                matches.append(f'{f}:{i+1}: {line.rstrip()}')
    return matches[:50]

list_files

def list_files(path: str = '.') -> list[str]:
    return [p for p in glob(f'{path}/**', recursive=True) if os.path.isfile(p)][:200]

Valfritt: AST-verktyg

För djupare kodförståelse:

def find_function(name: str, path: str):
    tree = ast.parse(open(path).read())
    for node in ast.walk(tree):
        if isinstance(node, ast.FunctionDef) and node.name == name:
            return ast.unparse(node)

Verktygsbeskrivningar är viktigast här

Kodagenter väljer fel verktyg oftare än chattagenter. Lägg extra tid på beskrivningarna:

description='Edit a file by replacing a unique string. The old_string MUST appear exactly once in the file. Reads the file first to validate. Use this for any code change in an existing file.'

Det är hela verktygsuppsättningen

Read, edit, write, bash, grep, list. Med dessa sex verktyg kan en agent utföra nästan alla programvaruutvecklingsuppgifter. Lägg bara till specialiserade verktyg när det finns en uppmätt nytta.

Redigeringsmönster

Varför är redigering med "string-replace" säkrare än redigering med "send full file"?

Sammanfattning

Read, edit (str_replace), write, bash, grep, list. Sex verktyg som är korrekt beskrivna och begränsade i en sandbox räcker för nästan alla kodagenter.

Gratis att börja

Lär dig AI-agenter med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
60
Lektioner
239

Vanliga frågor

Är lektionen ”Verktygsgränssnitt för kodning (Read, Edit, Bash)” gratis?

Ja – hela texten till ”Verktygsgränssnitt för kodning (Read, Edit, Bash)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-agenter, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-agenter innehåller totalt 4 lektioner.

Vad lär jag mig i ”Verktygsgränssnitt för kodning (Read, Edit, Bash)”?

De minsta verktyg en kodagent behöver: läsa en fil, redigera en fil, köra skalet och köra tester. Ni övar på AI-agenter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-agenter?

Du behöver inga förkunskaper. Utbildningen i AI-agenter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Verktygsgränssnitt för kodning (Read, Edit, Bash)”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-agenter-lektionen?

Ja. Varje AI-agenter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Agentiska mönster: planera–utför–verifiera
  2. Verktygsgränssnitt för kodning (Read, Edit, Bash)
  3. Iterativa självkorrigeringsloopar
  4. Arkitekturerna bakom SWE-Agent och OpenDevin
← Tillbaka till AI-agenter