Como criar um agente de programação
(ghuntley.com)- Em 2025, criar você mesmo um agente de programação é um dos melhores projetos que um desenvolvedor individual pode experimentar
- Um agente funciona com apenas 300 linhas de código e um loop de tokens de LLM, e ao construí-lo você ganha a chance de deixar de ser consumidor para se tornar um produtor de IA
- Os componentes básicos são ferramentas como leitura de arquivos, listagem de arquivos, execução de Bash, edição de arquivos e busca de código, que permitem implementar automações reais
- Na escolha de modelos, modelos agentic como Claude Sonnet e Kimi K2 são adequados; quando necessário, modelos oráculo como o GPT podem ser conectados como ferramenta para realizar verificações de nível mais alto
- Na prática, produtos comerciais como Amp, Cursor, Claude Code e GitHub Copilot também usam uma estrutura semelhante
Visão geral do workshop
- Workshop gratuito conduzido por Geoffrey Huntley, com foco prático em como criar um agente de programação e entender seus princípios
- Oferece a oportunidade de comparar estrutura e princípios com assistentes de IA comerciais existentes como Roo code, Cline, Amp, Cursor, Windsurf e OpenCode, além de implementar um você mesmo
- Com a experiência de criação, é possível deixar de ser apenas um usuário de IA e evoluir para um desenvolvedor que cria ferramentas de automação usando IA diretamente
- A estrutura central é criar funções de agente usando um loop de tokens de LLM em cerca de 300 linhas de código
- Ao adicionar primitivas por ferramenta — leitura, listagem de arquivos, execução, edição e busca de código — os exemplos reais de funcionamento e o código estão publicados no repositório GitHub
O que é um agente
- Nos últimos tempos, o termo "agente" tem sido usado amplamente, mas seu significado prático e o princípio interno de funcionamento ainda não são claros
- À medida que a barreira de entrada para criar agentes diminui, torna-se possível ir além do consumo de IA e crescer como produtor capaz de liderar a automação do trabalho
- Em 2025, assim como conceitos básicos de banco de dados como Primary key, os princípios de criação de agentes passam a ser conhecimento essencial
- Empresas como a Canva já incentivam o uso de IA em processos de entrevista, e a capacidade de automação com IA tornou-se um elemento central de contratação
- Agora, ficar para trás não acontece por causa da IA, mas por não aprender novas ferramentas por meio do próprio desenvolvimento
Princípios centrais do agente de programação
- Um agente de programação é composto por apenas 300 linhas de código e um loop de tokens de LLM, executando funções por meio da entrada repetitiva de tokens
- O conceito de trabalho concorrente (concurrent work) é importante
- Ex.: mesmo durante uma reunião no Zoom, o agente pode continuar trabalhando em paralelo, aumentando bastante a eficiência
- Nem todo LLM é agentic
- 'alta segurança' (ex.: Anthropic, OpenAI)
- 'baixa segurança' (ex.: Grok)
- 'oráculo' (vantajoso para resumo e raciocínio de alto nível)
- 'agentic' (tendência à ação, iteração rápida e chamadas de ferramentas)
- O desenvolvedor deve entender as características de cada modelo e escolher o modelo de acordo com o objetivo
- Alocar janela de contexto de forma indiscriminada prejudica o desempenho, e é preciso ter em mente que “quanto menos alocado, melhor o resultado”
- Registrar ferramentas MCP em excesso também leva à queda de desempenho
- Regra: “Less is more” → para obter desempenho ideal, ferramentas e dados devem ser colocados no contexto apenas na medida do necessário
Fluxo do processo de criação de um agente de programação
-
1. Registro de ferramentas e chamadas de função
- Por exemplo, registra-se no LLM uma ferramenta de consulta de clima, permitindo que o LLM responda em formato de chamada de função quando a situação for adequada
- MCP (Model Context Protocol) é semelhante a um "banner de informações sobre a função", e só com o registro da descrição da função já é possível fazer a chamada automática
-
2. Funções essenciais por ferramenta primitiva
- Leitura de arquivo (ReadFile): ao receber um caminho, lê o conteúdo do arquivo para o contexto
- Listagem de arquivos (ListFiles): fornece a lista de arquivos e pastas dentro do diretório
- Execução de comandos (Bash): o LLM executa comandos de shell do sistema e retorna o resultado
- Edição de arquivo (Edit): automatiza a criação e modificação do arquivo especificado
- Busca de código (CodeSearch): faz buscas rápidas em toda a base de código com base em padrões, palavras-chave ou nomes de funções (usando ripgrep)
-
3. Exemplos e fluxo de resultados
- Ao integrar cada ferramenta ao LLM, é possível automatizar tarefas contínuas apenas com prompts em linguagem natural, como gerar código FizzBuzz → executar e verificar, explorar diretórios → analisar conteúdo etc.
- As funções das ferramentas são chamadas sequencialmente conforme a entrada do usuário ou o cenário, e seus resultados são retornados repetidamente dentro do loop
- Sequência principal de funcionamento do agente: entrada do usuário → decisão sobre chamar ferramenta → execução da ferramenta → alocação do resultado no contexto → repetição
Possibilidades de expansão e open source
- Atualmente, a maioria dos agentes de programação funciona com base em ferramentas open source existentes, como o ripgrep
- No GitHub, existem projetos de agentes simples, mas poderosos, como SST Open Code e mini-swe-agent, implementados com apenas 100 linhas, que servem de referência para desempenho e estrutura
- Recomenda-se que desenvolvedores entendam e apliquem os princípios construindo os próprios agentes, em vez de apenas comparar produtos existentes
- Ao aplicar isso ao trabalho real e à automação, criar agentes próprios e difundi-los dentro da organização se torna uma vantagem competitiva
Conclusão e implicações
- Agentes de programação não são uma tecnologia complexa, mas sim uma combinação de estrutura de loop simples e conjunto de ferramentas
- O ponto central para criar um agente de programação é entender a estrutura e executar rapidamente, e a experiência prática de construção permite responder ativamente às mudanças na tecnologia de IA
- Mais importante do que a IA em si é investir em si mesmo, com desenvolvimento contínuo e capacidade de criar ferramentas, o que hoje é a estratégia de crescimento pessoal mais importante
- “A ameaça não é a IA tirar o seu trabalho, mas seu colega se armar com agentes, automatizar processos e trabalhar mais rápido”
4 comentários
Comentários no Hacker News
Nossa equipe do Princeton SWE-bench criou um agente com cerca de 100 linhas de código que tem bom desempenho no SWE-bench; se tiver interesse, vale dar uma olhada no mini-swe-agent
Fiquei surpreso com como a estrutura é realmente bem simples; obrigado por compartilhar isso
O código inteiro, na prática, roda com estes prompts código-fonte do prompt base do agente
Entre os prompts de exemplo do agente, a parte “1. encontrar e ler os arquivos relevantes no codebase 2. criar um script para reproduzir a issue 3. corrigir a issue 4. verificar a correção com o script 5. testar edge cases” é útil
Eu também uso um prompt parecido nesse estilo no meu loop de debugging
A abordagem de “analisar o codebase, listar hipóteses para a causa raiz, ordenar por probabilidade e validar as hipóteses com scripts ou debug logging” ajuda bastante na minha rotina pessoal de resolução de problemas
Quando o problema está autocontido em um único arquivo, é muito fácil usar LLM para corrigir
Mas, em codebases gerais, os arquivos e o contexto ficam espalhados por todo lado, então não é fácil entender tudo de acordo com a intenção de design estruturada e a organização feita pelo desenvolvedor
Palmas pela ótima tentativa, mas o ponto fraco é que não há muitas ferramentas
A maior parte do código corresponde ao framework do agente, e o código especializado só para SWE não é tanto quanto eu esperava
Eu também fiz um agente SWE por diversão, então talvez valha ver o autocode
Adicionei aos materiais de referência como forma de agradecimento
Existe também um “guia de como construir um agente” muito parecido, escrito por Thorsten Ball, no AmpCode How To Guide
No geral, o Amp também é bem interessante
Já não é mais um serviço secreto, mas é bom ver que ferramentas relacionadas a agent coding continuam sendo divulgadas
Acho que, no futuro, vários tipos de software vão incluir esses modelos de agente por padrão
Isso ficou muito mais fácil de ler, obrigado
Também foi mencionado que o próprio autor trabalha na Amp
Ghuntley também trabalha na Amp
Dizem que uma imagem vale mil palavras, mas neste material parece que as imagens estão com 99,6% de desconto
Fico me perguntando o que é isso
O texto é uma transcrição das falas reais da apresentação
Queria saber se alguém pode confirmar como funciona o uso de ferramentas
Pelo que entendo, Claude, ChatGPT etc. oferecem “ferramentas” via API e, quando chega uma solicitação de chamada de ferramenta, o respondente executa de fato a ferramenta e depois devolve o resultado
Mas, como na prática o modelo é estritamente baseado em texto, fico curioso sobre como a API transforma a resposta do modelo em várias estruturas
Imagino que, no fine-tuning, deve ter havido exemplos em que certas chamadas de ferramenta foram inseridas em blocos especiais para o modelo aprender isso, e depois os servidores do Claude/ChatGPT interpretam esse formato
Gostaria de saber se há documentação sobre isso ou informações sobre tokens especiais usados internamente, e também como impedem que a entrada do usuário abuse desses tokens “responsáveis pelo significado”
Há documentação pública da Anthropic sobre a implementação
Anthropic Tool Use Documentation
Ali fica bem claro que o modelo, na verdade, não opera com “texto”, mas em nível de tokens
É parecido com a forma como um compilador faz parsing do código-fonte e cria uma sequência de “tokens” como palavras-chave, parênteses e estruturas
A saída pode incluir metadados junto com as palavras de fato
Conceitualmente, você entendeu certo
A única interface real com o LLM são “tokens”, e não há separação entre canal de controle e canal de dados
Na camada de API do modelo, instruções de chamada de ferramenta e a lista de ferramentas disponíveis são inseridas no prompt, junto com a descrição de cada uma
Quando é preciso chamar uma ferramenta, o modelo insere um bloco especial na resposta (com tokens especiais, nome da ferramenta e parâmetros), e a camada de API extrai isso e converte para JSON
O resultado da execução da ferramenta também é inserido codificado com tokens especiais
A camada de API impede que o próprio input do usuário injete esses tokens
Os modelos mais recentes (SoTA) passaram por bastante fine-tuning para chamadas de ferramenta, incluindo tanto chamadas genéricas quanto casos específicos de certas ferramentas (por exemplo, o modelo Claude Sonnet sendo especializado nas ferramentas do Claude Code)
É até impressionante que tudo funcione tão bem; em tool calling, o fine-tuning realmente tem um papel central
Mesmo sem fine-tuning ainda dá para funcionar, mas a taxa de sucesso cai bastante
Acho que a suposição de “fizeram fine-tuning para retornar exemplos que precisam de chamada de ferramenta em um bloco especial” está correta
O modelo é treinado para responder no formato de chamada de ferramenta quando não sabe a resposta ou quando recebe essa instrução
Há tanto exemplos de chamadas de ferramenta seguindo o formato (o próprio formato) quanto treinamento mais específico para algumas ferramentas
Por exemplo, o gpt-oss tende a tentar usar ferramenta de busca mesmo sem qualquer menção
Na documentação da Anthropic também existe uma lista de ferramentas familiares (como
text_editor,bash), e é bem provável que tenham treinado separadamente um entendimento mais profundo de como usar essas ferramentasNa prática, a estrutura quebra com relativa facilidade e tudo depende de sinais de baixo nível como “tokens especiais ou sequências de tokens”
A frase “se você continuar jogando tokens no loop, surge um agente” vira uma sátira bem realista se você trocar “tokens” por “dinheiro”
No fim, seria como dizer que, se continuar queimando dinheiro, aparece um agente
Modelos locais também continuam melhorando
Por enquanto, para ter os melhores resultados ainda é preciso tokens (= dinheiro), mas no futuro isso pode mudar bastante
Quando fica cheio de imagens assim, vira algo muito difícil de ler
Parece um simulador de scroll
Fico me perguntando por que seria necessário qualquer ferramenta além de bash
Coisas como listar arquivos, encontrar e explorar repositórios e editar conteúdo de arquivos não poderiam ser feitas só com bash?
Ou isso é mais como o caso mostrado acima no exemplo do mini-swe-agent?
Do ponto de vista técnico, só bash já permite uma variedade enorme de tarefas, e eu mesmo já tive sucesso assim
O interessante é que, quanto mais você restringe as ferramentas, mais criativo o agente fica
Mas, quando você oferece várias ferramentas treinadas, o modelo já sabe bem como usar cada uma, então o uso de tokens fica mais eficiente e a taxa geral de sucesso também sobe
Quando só há bash, ele também costuma se enrolar com bashisms, tratamento de argumentos e tratamento de espaços
Usar ferramentas separadas é muito mais simples do que concentrar tudo em um único bash
Se tudo for resolvido por bash, você precisará implementar à parte um esquema em que comandos sempre seguros de executar (como listar arquivos) rodem direto, e comandos mais perigosos exijam aprovação do usuário
Se você oferecer listagem de arquivos como uma ferramenta separada, também pode impedir a exposição de arquivos fora do diretório do projeto
Na prática, só com a ferramenta bash e uma ferramenta de Edit já dá para fazer um agente de programação funcionar (Edit não é absolutamente obrigatória, mas a ineficiência cresce bastante)
Ainda assim, partes como busca no código podem ficar difíceis
Talvez dê para contornar isso ajustando o prompt para fazer o bash usar o ripgrep, por exemplo
Por que um IDE é necessário? Se tudo pode ser feito pelo shell, por que usar um?
A UI (interface) existe justamente para oferecer a informação e as ações de que você precisa naquele momento
Quanto à pergunta de por que há coisas além da ferramenta bash, acho que é porque faz sentido começar com o conjunto mínimo de ferramentas e depois adicionar bash mais tarde, se quiser
Em vez de explicar longamente “como criar um agente”, eu queria ver um projeto real feito por um agente
Alguém consegue explicar o que significam os eixos Oracle, Agent, high safety e low safety?
Testei diretamente com os modelos on-device do Edge e do Chrome (
phi4-mini,gemini nano) e fiquei surpreso com como funcionou bem, considerando o tamanho dos modelosexperimento de como construir um agente no dispositivo
Bom demais kkkkkkk eu não tinha entendido o que ele quis dizer, mas quando entrei no link entendi tudo na hora
As miniaturas dos outros posts do blog também são meio toscas, passam uma impressão de que dá zero vontade de clicar.
kkkkkkkkkkkkkkkkkkkkkkkkkkk