0Pricing
AI Agents · Leçon

Interfaces d’outils pour coder (Read, Edit, Bash)

Les outils minimum dont un agent de codage a besoin : lire un fichier, modifier un fichier, exécuter le shell et exécuter des tests.

Interfaces d’outils pour coder (Read, Edit, Bash) est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

De quels outils un agent de code a-t-il besoin ?

Le minimum :

  1. read_file — voir le code
  2. edit_file / write_file — modifier le code
  3. bash — exécuter des commandes shell (tests, compilations)
  4. search / grep — rechercher du code par chaîne ou symbole

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)

Les lectures par intervalle de lignes économisent des jetons

Pour les fichiers volumineux, ne lisez que la plage pertinente. Vous économiserez énormément de jetons par rapport à la lecture du fichier entier à chaque appel.

edit_file (remplacement de chaîne)

Le modèle de remplacement de chaînes d’Anthropic consiste à trouver une chaîne unique dans un fichier et à la remplacer :

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)

Pourquoi remplacer des chaînes plutôt qu’utiliser des différences

  • Plus simple pour le modèle que de produire une syntaxe de différences valide
  • Force le modèle à examiner le code REAL (ce qui aide à détecter les hallucinations)
  • Signale les erreurs en cas d’ambiguïté

C’est le format utilisé par Claude Code.

write_file

Pour créer de nouveaux fichiers :

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

Commandes shell — pour les tests, les compilations et l’installation de paquets :

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

Isoler l’outil bash

NEVER n’exécutez bash sur votre hôte. Utilisez Docker / Firecracker / E2B. (Consultez le cours précédent sur l’isolation.)

tronquer les sorties longues

Les échecs de tests peuvent produire des mégaoctets de sortie. Tronquez-les aux derniers KB — ils contiennent généralement l’erreur réelle :

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]

Facultatif : outils AST

Pour mieux comprendre le code :

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)

Les descriptions d’outils sont essentielles ici

Les agents de code choisissent plus souvent le mauvais outil que les agents conversationnels. Consacrez davantage de temps aux descriptions :

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

C’est tout l’ensemble d’outils

Lire, modifier, écrire, exécuter des commandes, rechercher, lister. Avec ces six outils, un agent peut accomplir presque toute tâche d’ingénierie logicielle. N’ajoutez des outils spécialisés que si leur bénéfice mesuré le justifie.

Modèle de modification

Pourquoi une modification par « remplacement de chaîne » est-elle plus sûre qu’une modification qui « envoie le fichier complet » ?

Récapitulatif

Lire, modifier (remplacement de chaîne), écrire, exécuter des commandes, rechercher, lister. Six outils, correctement décrits et isolés dans un bac à sable, suffisent pour presque tout agent de programmation.

Questions Fréquemment Posées

La leçon « Interfaces d’outils pour coder (Read, Edit, Bash) » est-elle gratuite ?

Oui — le texte complet de « Interfaces d’outils pour coder (Read, Edit, Bash) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Interfaces d’outils pour coder (Read, Edit, Bash) » ?

Les outils minimum dont un agent de codage a besoin : lire un fichier, modifier un fichier, exécuter le shell et exécuter des tests. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Interfaces d’outils pour coder (Read, Edit, Bash) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Modèles agentiques : planifier, exécuter, vérifier
  2. Interfaces d’outils pour coder (Read, Edit, Bash)
  3. Boucles itératives d’autocorrection
  4. Architectures de SWE-Agent et OpenDevin
← Retour à AI Agents