0Pricing
AI Agents · Lezione

Interfacce degli strumenti per il coding (Read, Edit, Bash)

Gli strumenti minimi di cui ha bisogno un agente di coding: leggere un file, modificarlo, eseguire la shell ed eseguire i test

Interfacce degli strumenti per il coding (Read, Edit, Bash) è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Di quali strumenti ha bisogno un agente di codice?

Il minimo indispensabile:

  1. read_file — visualizzare il codice
  2. edit_file / write_file — modificare il codice
  3. bash — eseguire comandi shell (test, build)
  4. search / grep — trovare il codice tramite stringa o simbolo

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)

Le letture per intervallo di righe fanno risparmiare token

Per i file di grandi dimensioni, leggere solo l'intervallo pertinente. Si risparmiano moltissimi token rispetto alla lettura dell'intero file a ogni chiamata.

edit_file (sostituzione di stringhe)

Il pattern str_replace di Anthropic: trovare una stringa univoca in un file e sostituirla:

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)

Perché usare la sostituzione di stringhe invece dei diff

  • È più semplice per il modello rispetto alla produzione di una sintassi diff valida
  • Obbliga il modello a esaminare il codice REALE (aiuta a individuare le allucinazioni)
  • Genera un errore in caso di ambiguità

È il formato usato da Claude Code.

write_file

Per creare nuovi file:

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

Comandi shell per test, build e installazione dei pacchetti:

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}")

Isolare lo strumento bash

Non eseguire MAI bash sul proprio host. Usare Docker / Firecracker / E2B. (Consultare il corso precedente sull'isolamento in sandbox.)

Troncare l'output lungo

Gli errori dei test possono produrre megabyte di output. Troncare alle ultime unità di KB: di solito contengono l'errore effettivo:

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]

Opzionale: strumenti AST

Per comprendere più a fondo il codice:

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)

Qui le descrizioni degli strumenti sono fondamentali

Gli agenti di codice scelgono lo strumento sbagliato più spesso degli agenti conversazionali. Dedicare più tempo alle descrizioni:

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.'

Questo è l'intero set di strumenti

Leggere, modificare, scrivere, bash, grep, list. Con questi sei strumenti, un agente può svolgere quasi qualsiasi attività di software engineering. Aggiunga strumenti specializzati solo quando esiste un vantaggio misurabile.

Pattern di modifica

Perché una modifica con "string-replace" è più sicura di una modifica che "invia il file completo"?

Riepilogo

Read, edit (str_replace), write, bash, grep, list. Sei strumenti, descritti e isolati correttamente, sono sufficienti per quasi qualsiasi agente di programmazione.

Domande Frequenti

La lezione «Interfacce degli strumenti per il coding (Read, Edit, Bash)» è gratuita?

Sì — il testo completo di «Interfacce degli strumenti per il coding (Read, Edit, Bash)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Interfacce degli strumenti per il coding (Read, Edit, Bash)»?

Gli strumenti minimi di cui ha bisogno un agente di coding: leggere un file, modificarlo, eseguire la shell ed eseguire i test Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Interfacce degli strumenti per il coding (Read, Edit, Bash)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Pattern agentici: pianificare, eseguire, verificare
  2. Interfacce degli strumenti per il coding (Read, Edit, Bash)
  3. Cicli iterativi di autocorrezione
  4. Architetture di SWE-Agent e OpenDevin
← Torna a AI Agents