Introdução
Quando você começa a trabalhar em uma base de código desconhecida, ou pedem que você altere uma parte de uma grande base de código na qual você nunca mexeu antes, geralmente precisa de um especialista no assunto para colocá-lo a par. O SME normalmente é um desenvolvedor mais experiente na equipe que sabe como o código se encaixa e pode responder suas perguntas. Os SMEs nem sempre estão disponíveis , eles podem estar em outro fuso horário, ocupados com seu próprio trabalho ou não mais na equipe.
Quando você precisa entender uma base de código desconhecida, você geralmente conta com um colega de equipe que conhece o código. Quando essa pessoa não está disponível, CLI do Copilot pode preencher a lacuna. Neste tutorial, você fará CLI do Copilot perguntas sobre o código de um repositório, aprenderá técnicas de solicitação que produzem respostas fundamentadas em código e criará a confiança para começar a fazer alterações.
Quando usar um SME de IA (ou até mesmo quando uso um SME de IA?)
Este tutorial é útil sempre que você precisa entender uma base de código mais rapidamente. Por exemplo:
- Você acabou de se juntar a uma equipe ou a um projeto código aberto e precisa se atualizar rapidamente.
- Você precisa alterar uma área de uma base de código grande em que você nunca trabalhou antes.
- Você herdou um serviço ou biblioteca que os autores originais não mantêm mais.
O tutorial pressupõe que você esteja confortável trabalhando em um terminal e lendo código no idioma usado pelo projeto que você está explorando. Você não precisa de nenhuma experiência anterior com CLI do Copilot.
Pré-requisitos
Antes de começar, verifique se você tem estes itens:
- Uma GitHub Copilot assinatura. Consulte Planos para GitHub Copilot.
- CLI do Copilot instalado e autenticado. Consulte Introdução à CLI do GitHub Copilot.
- Um clone local do repositório que você deseja explorar. Consulte Clonar um repositório.
1. Iniciar uma sessão no repositório
Abra um terminal e altere para a raiz do repositório sobre o qual você deseja aprender. Iniciar CLI do Copilot a partir da raiz do repositório significa que CLI do Copilot tem toda a base de código disponível como contexto.
cd PATH/TO/YOUR/REPOSITORY copilot
cd PATH/TO/YOUR/REPOSITORY
copilot
Agora você está em uma sessão interativa CLI do Copilot . Tudo o que você digitar no prompt é enviado para o modelo, que pode ler arquivos no repositório, executar comandos de shell, como git log ou grep, e responder suas perguntas com base no que ele encontra.
Dica
- Se você confiar CLI do Copilot para executar comandos sem solicitar aprovação, ao bloquear alterações de arquivo, comece com
copilot --deny-tool='write' --allow-all-tools. Consulte Permitir e negar o uso da ferramenta. - Se você estiver trabalhando em uma base de código muito grande, poderá obter melhores resultados começando CLI do Copilot pelo subdiretório relevante. Isso limita o contexto aos arquivos mais relevantes.
2. Respostas básicas no código, não nos documentos
A maioria dos repositórios contém uma mistura de código e documentação: arquivos README, notas de design, diagramas de arquitetura e assim por diante. A documentação é útil para descobrir sobre um projeto, mas pode estar desatualizada. Se você fizer CLI do Copilot uma pergunta sobre como o código se comporta e ele receber uma resposta de um arquivo markdown desatualizado, você obterá uma resposta confiante que está errada.
Antes de começar a fazer perguntas, diga CLI do Copilot para basear suas respostas no próprio código e sinalizar qualquer incerteza em vez de preencher lacunas. Por exemplo:
For the rest of this session, when I ask how something works, base your answer on the code in this repository, not on documentation files such as README.md or files under docs/. If a documentation file conflicts with the code, treat the code as the source of truth. If you can't find a definitive answer in the code, say so - don't guess.
For the rest of this session, when I ask how something works, base your answer on the code in this repository, not on documentation files such as README.md or files under docs/. If a documentation file conflicts with the code, treat the code as the source of truth. If you can't find a definitive answer in the code, say so - don't guess.
Você pode colocar esse tipo de preâmbulo em um arquivo de instruções personalizado e reutilizá-lo entre sessões, para que você não precise digitá-lo novamente todas as vezes. Consulte Adicionando instruções personalizadas para CLI do GitHub Copilot.
3. Obter uma visão geral da base de código
Comece com perguntas amplas para criar um mapa mental do projeto. O objetivo é entender a forma do código (onde estão os pontos de entrada, quais diretórios contêm o quê e como as partes principais se encaixam) antes de analisar um recurso específico.
Experimente instruções como:
Give me an overview of this codebase. What does the application do, what are the main components, and how do they communicate? Cite the files you used as evidence.
Give me an overview of this codebase. What does the application do, what are the main components, and how do they communicate? Cite the files you used as evidence.
What are the entry points for this application? For each entry point, tell me which file contains the entry point and which directories contain the code it calls into.
What are the entry points for this application? For each entry point, tell me which file contains the entry point and which directories contain the code it calls into.
Pedir citações e provas é importante. Quando CLI do Copilot diz a você “isso é tratado em src/auth/middleware.ts”, você pode abrir esse arquivo e conferir a resposta você mesmo. Se a citação não corresponder ao que você encontra, esse é um sinal útil para recuar e fazer perguntas de acompanhamento.
4. Analisar em detalhes um recurso específico
Depois de ter uma visão geral, restrinja a área que você precisa alterar. Trate isso como uma conversa, não como uma única consulta. Cada resposta apresentará termos, nomes de arquivo e conceitos que você pode usar na próxima pergunta.
É uma boa ideia fazer perguntas semelhantes que abordam um tópico de diferentes ângulos. Isso ajuda a garantir que você esteja recebendo o quadro completo e lhe dará confiança de que Copilot não entendeu mal o que você está tentando descobrir e não perdeu um detalhe importante.
Por exemplo, suponha que você tenha sido solicitado a adicionar limitação de taxa a um ponto de extremidade de API específico e nunca tenha trabalhado nessa parte do código antes, você pode começar com perguntas como:
Is there any existing rate limiting in this codebase? If so, where is it implemented, and how is it configured?
Is there any existing rate limiting in this codebase? If so, where is it implemented, and how is it configured?
If I wanted to add per-user rate limiting to the /api/v1/upload endpoint, which files would I most likely need to change, and which existing patterns in the codebase should I follow?
If I wanted to add per-user rate limiting to the /api/v1/upload endpoint, which files would I most likely need to change, and which existing patterns in the codebase should I follow?
Fazer perguntas de acompanhamento na mesma sessão da CLI permite que você analise os detalhes de um recurso e fornece Copilot o contexto necessário para fornecer respostas específicas que informem o que você precisa saber.
5. Investigar comportamento e casos extremos
Ler o código mostra o que o código faz. Muitas vezes, ele não informa o que o código deve fazer ou como ele se comporta em situações incomuns. Essas são as perguntas em que um SME humano é mais valioso e onde CLI do Copilot pode ajudá-lo quando nenhum humano está disponível.
Alguns exemplos de perguntas sobre comportamento e casos extremos que você pode fazer:
What happens if the database connection drops while a request is being processed? Walk me through the error handling, based on the code.
What happens if the database connection drops while a request is being processed? Walk me through the error handling, based on the code.
The `getUser` function takes a `userId` parameter. What validation is performed on it before it reaches the database query? Are there any code paths where an unvalidated value could reach the query?
The `getUser` function takes a `userId` parameter. What validation is performed on it before it reaches the database query? Are there any code paths where an unvalidated value could reach the query?
Quando você receber uma resposta, siga com "mostre-me o código" ou "em qual arquivo você encontrou isso?" se ainda não estiver citado. Isso dá a você uma forma de conferir e verificar a resposta.
6. Usar o histórico do Git como outra origem
Muitos contextos úteis residem no histórico do Git e não no código atual: por que uma função foi escrita da maneira que foi, quando um bug foi corrigido pela última vez, que originalmente adicionou um módulo.
CLI do Copilot pode executar git comandos para você e usar a saída para responder perguntas que você não poderia responder facilmente lendo o código sozinho.
Experimente instruções como:
When was the `PaymentProcessor` class introduced, and what was the original commit message? Has it been substantially refactored since then?
When was the `PaymentProcessor` class introduced, and what was the original commit message? Has it been substantially refactored since then?
Look at the last 20 commits that touched files under `src/billing/`. Summarize what kinds of changes have been made recently.
Look at the last 20 commits that touched files under `src/billing/`. Summarize what kinds of changes have been made recently.
Who has made the most commits to `src/auth/`? Use that information to suggest the best person on this team to ask about authentication.
Who has made the most commits to `src/auth/`? Use that information to suggest the best person on this team to ask about authentication.
7. Verificar antes de confiar
CLI do Copilot é um SME poderoso, mas não é infalível. Ele pode ler incorretamente o código, confundir arquivos semelhantes ou, ocasionalmente, inventar coisas. Trate suas respostas da maneira como você trataria os conselhos de um colega de trabalho útil, mas falível: útil como ponto de partida, mas vale a pena verificar antes de agir sobre qualquer coisa importante.
Alguns hábitos vão mantê-lo fora de problemas:
- Verifique os arquivos citados. Quando CLI do Copilot fizer referência a um arquivo ou número de linha específico, abra-o e confirme. Se a citação estiver errada, trate o resto da resposta com mais ceticismo.
- Faça você mesmo. Se CLI do Copilot disser a você que uma função retorna
nullpara uma entrada vazia, escreva um teste rápido ou faça uma chamada no REPL que a invoque com uma entrada vazia e verifique. - Verificação cruzada com humanos. Quando a resposta for importante (segurança, integridade de dados, qualquer coisa que você tenha vergonha de errar na produção), use CLI do Copilota resposta como ponto de partida e confirme com um SME humano ou uma revisão de código.
Conclusion
Neste tutorial, você usou CLI do Copilot como seu SME pessoal para:
- Obtenha uma visão geral de uma base de código desconhecida, ancorada em arquivos reais.
- Faça uma busca detalhada em um recurso específico para saber quais arquivos serão alterados e quais padrões seguir.
- Investigue o comportamento, os casos extremos e o histórico do Git.
- Verifique as respostas, para que você possa confiar nelas quando isso for importante.
Usado dessa forma, CLI do Copilot não substitui SMEs humanos, mas torna você menos dependente deles para as perguntas diárias que surgem enquanto você trabalha. Seus colegas humanos podem dedicar seu tempo às perguntas que realmente exigem sua experiência, e você pode seguir em frente mesmo quando eles não estiverem por perto.
Próximas Etapas
- Salve os preâmbulos de prompt mais úteis como instruções personalizadas, para que você possa reutilizá-los entre sessões e projetos. Consulte Adicionando instruções personalizadas para CLI do GitHub Copilot.
- Depois de entender a área do código que você deseja alterar, use CLI do Copilot para ajudá-lo a fazer a alteração. Confira Refatorando código com GitHub Copilot e Escrevendo testes com GitHub Copilot.
- Saiba como controlar quais ferramentas podem ser executadas CLI do Copilot durante uma sessão. Consulte Permitir e negar o uso da ferramenta.