Skip to main content

Command Palette

Search for a command to run...

Agentes de código

Entendendo sua base de código

Uma das tarefas mais importantes de um engenheiro de software é criar um mapa mental da base de código e entender profundamente como o sistema funciona. À medida que um projeto cresce, fica cada vez mais difícil encontrar o código certo.

No passado, explorar uma grande base de código significava memorizar padrões de regex ou aprender ferramentas especializadas para pesquisar com eficiência. Com agentes de programação, você pode descrever o que procura em linguagem natural e deixar que o agente use ferramentas para encontrar o que você precisa.

O Cursor fornece aos agentes ferramentas específicas para pesquisar com eficiência, e entender como elas funcionam ajudará você a fazer perguntas melhores e obter resultados mais precisos.

Busca agêntica

A maneira mais precisa de encontrar um trecho de código é buscar uma correspondência exata, seja o nome de uma função, uma variável ou outra parte do código.

Os agentes podem usar o grep, uma ferramenta para encontrar strings exatas, e criar padrões de regex mais complexos ou correspondências em limites de palavras. Também há aprimoramentos do grep, como o ripgrep, que permitem buscas recursivas.

Ambas as ferramentas funcionam muito bem. No entanto, o Cursor aprimorou ainda mais o grep com o Grep Instantâneo, que pode acelerar significativamente as buscas agênticas em grandes bases de código em relação ao ripgrep.

Você não precisa configurar nada nem mudar a forma como trabalha para usar essas ferramentas. O Cursor as disponibiliza automaticamente e, quando você conversa com um agente, ele as usa nos bastidores.

Pesquisa por significado

Quando você não sabe o símbolo ou texto exato, o agente pode pesquisar na sua base de código por significado. Ele combina essa pesquisa com o grep para encontrar arquivos relevantes e rastrear referências exatas. Consulte como o agente pesquisa sua base de código para saber mais.

Fazendo boas perguntas

A forma como você formula as perguntas afeta quais ferramentas de busca o agente usa e a eficácia dos resultados. Isso varia de buscas específicas a amplas: você pode começar pedindo uma correspondência exata de texto, como o nome de uma função, e chegar a buscas amplas como "ajude-me a entender o que acontece quando um usuário faz um pagamento no nosso app."

Comece de forma específica quando souber o que procura. Amplie a busca quando estiver explorando território desconhecido. Vejamos alguns exemplos.

Neste primeiro exemplo, o agente começa com grep porque o prompt pede algo específico. Ele busca por import.*PaymentService para encontrar todos os arquivos que fazem referência ao serviço.

Ask mode example: Busca direcionada
Encontre todos os arquivos que importam do nosso PaymentService e mostre como eles lidam com o PaymentFailedError.

Quando estiver explorando território desconhecido, amplie a busca. Neste próximo exemplo, fazemos uma pergunta geral sobre como o app lida com pagamentos recusados. Observe como a primeira chamada de ferramenta é "Buscar na base de código". O agente encontra arquivos relevantes e, em seguida, usa grep para obter mais detalhes.

Ask mode example: Exploração ampla
Como nosso app lida com pagamentos recusados? Explique o fluxo de erro, desde o formulário de checkout até a mensagem de erro que o usuário vê.

O subagente de exploração

O agente também pode criar subagentes para concluir tarefas com mais eficiência.

Há um subagente de exploração integrado que ajuda você a pesquisar na sua base de código. O subagente de exploração é executado em uma janela de contexto própria, separada do agente pai, e usa um modelo mais rápido, podendo realizar muitas pesquisas em paralelo sem sobrecarregar a conversa principal.

Você não precisa invocá-lo manualmente. O agente o usará quando considerar relevante. No entanto, se preferir, também pode pedir diretamente que o subagente seja usado.

Como vimos no curso de fundamentos, é importante entender e acompanhar o uso do contexto. Se você pesquisar em muitos arquivos da sua base de código, isso gerará muito contexto. Os subagentes podem melhorar significativamente o gerenciamento de contexto ao retornar apenas seus resultados e manter a conversa principal focada.

Diagramas de arquitetura

Para bases de código grandes ou pouco conhecidas, você pode pedir ao agente que gere diagramas de arquitetura, como diagramas Mermaid, para visualizar sua base de código.

Ask mode example: Diagrama de arquitetura
Crie um diagrama Mermaid mostrando o fluxo de dados do nosso sistema de pagamentos, incluindo o formulário de checkout, as rotas de API, o serviço de pagamentos e a integração com o Stripe.

Esses diagramas são úteis para onboarding, documentação e revisões de design. Eles também podem revelar problemas de arquitetura, como um serviço que depende de muitos outros serviços ou um fluxo de dados que segue um caminho inesperado.

Padrão comum de falha: alterar antes de entender

Um erro comum é pedir ao agente que altere o código sem antes entender o que já existe. O agente pode criar uma nova função utilitária quando já existe uma ou usar um padrão diferente do restante da sua base de código.

Antes de pedir alterações, peça primeiro ao agente para explorar:

Ask mode example: Explorar antes de alterar
Antes de fazer qualquer alteração, mostre como funciona nossa validação de formulários atual. Quais padrões usamos e onde estão os validadores compartilhados?

Agentes de programação interpretam suas solicitações literalmente. Quando você não informa a intenção, eles usam o próprio julgamento. Às vezes, isso funciona bem. Mas, para alterações que precisam seguir padrões existentes, você terá melhores resultados se primeiro entender a base de código e souber exatamente o que pedir.

A seguir

Você já sabe encontrar e entender código. No próximo capítulo, aprenderá a transformar esse entendimento em entregas: planejar funcionalidades, escrever testes e transformar designs em código.

Você concluiu este capítulo