0Pricing
AI Agents · Aula

Superfícies de ferramentas para programação (ler, editar, Bash)

As ferramentas mínimas de que um agente de código precisa: ler arquivo, editar arquivo, executar comandos do sistema e executar testes.

Superfícies de ferramentas para programação (ler, editar, Bash) é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

De Quais Ferramentas um Agente de Código Precisa?

O mínimo:

  1. read_file — ver o código
  2. edit_file / write_file — alterar o código
  3. bash — executar comandos do shell (testes, compilações)
  4. search / grep — encontrar código por texto ou símbolo

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)

Leituras por Intervalo de Linhas Economizam Tokens

Para arquivos grandes, leia apenas o intervalo relevante. Isso economiza muitos tokens em comparação com ler o arquivo inteiro a cada chamada.

edit_file (Substituição de Texto)

O padrão str_replace da Anthropic: encontre uma cadeia de texto exclusiva em um arquivo e substitua-a:

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)

Por Que Substituir Texto em Vez de DIFFS

  • É mais simples para o modelo do que produzir uma sintaxe válida de DIFFS
  • Obriga o modelo a examinar o código REAL (ajuda a detectar alucinações)
  • Gera erros quando há ambiguidade

É o formato usado pelo Claude Code.

write_file

Para criar novos arquivos:

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

Comandos do shell — para testes, compilações e instalações de pacotes:

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

Isole a Ferramenta bash

NEVER execute bash no seu host. Use Docker / Firecracker / E2B. (Consulte o curso anterior sobre isolamento.)

Trunque Saídas Longas

As falhas nos testes podem despejar megabytes de texto. Trunque para os últimos KB — eles geralmente contêm o erro real:

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]

Opcional: Ferramentas de AST

Para uma compreensão mais profunda do código:

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)

As Descrições das Ferramentas São o Mais Importante Aqui

Agentes de código escolhem a ferramenta errada com mais frequência do que agentes de conversa. Dedique tempo extra às descrições:

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

Esse é o Conjunto Completo de Ferramentas

Ler, editar, escrever, executar comandos, pesquisar e listar. Com essas seis ferramentas, um agente pode realizar praticamente qualquer tarefa de engenharia de software. Adicione ferramentas especializadas somente quando houver um benefício comprovado.

Padrão de edição

Por que a edição por "substituição de texto" é mais segura do que a edição por "envio do arquivo inteiro"?

Recapitulação

Ler, editar (substituição de texto), escrever, executar comandos, pesquisar e listar. Seis ferramentas, descritas e isoladas adequadamente, são suficientes para praticamente qualquer agente de programação.

Perguntas Frequentes

A aula “Superfícies de ferramentas para programação (ler, editar, Bash)” é grátis?

Sim — o texto completo de “Superfícies de ferramentas para programação (ler, editar, Bash)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.

O que vou aprender em “Superfícies de ferramentas para programação (ler, editar, Bash)”?

As ferramentas mínimas de que um agente de código precisa: ler arquivo, editar arquivo, executar comandos do sistema e executar testes. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Agents?

Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Superfícies de ferramentas para programação (ler, editar, Bash)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Agents?

Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Padrões agênticos: planejar, executar e verificar
  2. Superfícies de ferramentas para programação (ler, editar, Bash)
  3. Ciclos iterativos de autocorreção
  4. Arquiteturas do SWE-Agent e do OpenDevin
← Voltar para AI Agents