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:
- read_file — ver o código
- edit_file / write_file — alterar o código
- bash — executar comandos do shell (testes, compilações)
- 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
- Padrões agênticos: planejar, executar e verificar
- Superfícies de ferramentas para programação (ler, editar, Bash)
- Ciclos iterativos de autocorreção
- Arquiteturas do SWE-Agent e do OpenDevin