Introducción
Al empezar a trabajar en un código base desconocido, o se le pide que cambie una parte de un código base grande que nunca ha tocado antes, normalmente necesita un experto en la materia (SME) para que le ponga al día. Normalmente, el SME es un desarrollador más experimentado en el equipo que sabe cómo encaja el código y puede responder a sus preguntas. Las pymes no siempre están disponibles, pueden estar en otra zona horaria, estar ocupadas con su propio trabajo o ya no en el equipo.
Cuando necesite comprender un código base desconocido, normalmente se basa en un compañero de equipo que conoce el código. Cuando esa persona no esté disponible, CLI de Copilot puede llenar el espacio. En este tutorial, harás CLI de Copilot preguntas sobre el código de un repositorio, aprenderás técnicas de prompting que producen respuestas fundamentadas en el código y ganarás la confianza necesaria para empezar a realizar cambios.
¿Cuándo usar un SME de IA (o incluso cuando uso un SME de IA?)
Este tutorial es útil siempre que necesite comprender un código base más rápido. Por ejemplo:
- Acaba de unirse a un equipo o un proyecto de código abierto y necesita ponerse al día rápidamente.
- Necesita cambiar un área de una gran base de código en la que nunca ha trabajado antes.
- Ha heredado un servicio o biblioteca que los autores originales ya no mantienen.
En el tutorial se da por supuesto que está trabajando en un terminal y lee código en el lenguaje que usa el proyecto que está explorando. No necesita ninguna experiencia previa con CLI de Copilot.
Prerequisites
Antes de empezar, asegúrese de que dispone de lo siguiente:
- Una GitHub Copilot suscripción. Consulte Planes para GitHub Copilot.
- CLI de Copilot instalado y autenticado. Consulte Introducción a la CLI de GitHub Copilot.
- Un clon local del repositorio que desea explorar. Consulte Clonar un repositorio.
1. Iniciar una sesión en el repositorio
Abra un terminal y cambie a la raíz del repositorio sobre el que desea obtener información. Iniciar CLI de Copilot desde la raíz del repositorio significa que tiene toda la base de código disponible como contexto.
cd PATH/TO/YOUR/REPOSITORY copilot
cd PATH/TO/YOUR/REPOSITORY
copilot
Ahora estás en una sesión interactiva CLI de Copilot. Todo lo que escribes en el indicador se envía al modelo, que puede leer archivos del repositorio, ejecutar comandos de shell como git log o grep y responder a tus preguntas según lo que encuentre.
Sugerencia
- Si confía CLI de Copilot en ejecutar comandos sin solicitar aprobación, mientras bloquea los cambios de archivo, comience por
copilot --deny-tool='write' --allow-all-tools. Consulte Permitir y denegar el uso de la herramienta. - Si está trabajando en un código base muy grande, puede obtener mejores resultados empezando CLI de Copilot por el subdirectorio correspondiente. Esto limita el contexto a los archivos más relevantes.
2. Respuestas básicas en el código, no en los documentos
La mayoría de los repositorios contienen una combinación de código y documentación: archivos LÉAME, notas de diseño, diagramas de arquitectura, etc. La documentación es útil para averiguar sobre un proyecto, pero puede estar obsoleta. Si hace CLI de Copilot una pregunta sobre cómo se comporta el código y recoge una respuesta de un archivo Markdown obsoleto, obtendrá una respuesta segura que no es correcta.
Antes de empezar a formular preguntas, indique CLI de Copilot que base sus respuestas en el propio código y que marque cualquier incertidumbre en lugar de rellenar espacios. Por ejemplo:
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.
Puede colocar este tipo de preámbulo en un archivo de instrucciones personalizado y reutilizarlo en sesiones, por lo que no tiene que volver a escribirlo cada vez. Consulte Adición de instrucciones personalizadas para CLI de GitHub Copilot.
3. Obtener información general sobre el código base
Comience con preguntas generales para crear un mapa mental del proyecto. El objetivo es comprender la forma del código (dónde están los puntos de entrada, qué directorios contienen qué y cómo encajan las partes principales) antes de profundizar en una característica específica.
Pruebe las indicaciones, 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 citas y pruebas es importante. Cuando CLI de Copilot le indica "esto se controla en src/auth/middleware.ts", puede abrir ese archivo y comprobar la respuesta por sí mismo. Si la cita no coincide con lo que encuentres, eso es una señal útil para cuestionarla y hacer preguntas de seguimiento.
4. Explorar en profundidad una característica específica
Una vez que tenga información general, limite en el área que necesita cambiar. Trata esto como una conversación, no una sola consulta. Cada respuesta mostrará términos, nombres de archivo y conceptos que puede usar en la siguiente pregunta.
Es una buena idea formular preguntas similares que se aproximan a un tema desde distintos ángulos. Esto le ayuda a asegurarse de que está obteniendo la imagen completa y le dará confianza de que Copilot no ha entendido mal lo que está intentando averiguar y no ha perdido un detalle importante.
Por ejemplo, supongamos que se le ha pedido que agregue una limitación de velocidad a un punto de conexión de API determinado y que nunca haya trabajado en esta parte del código antes, podría empezar con preguntas 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?
Hacer preguntas de seguimiento dentro de la misma sesión de la CLI le permite profundizar en los detalles de una característica y proporciona Copilot el contexto que necesita para proporcionar respuestas específicas que le indican lo que necesita saber.
5. Investigar el comportamiento y los casos perimetrales
Leer código le indica lo que hace el código. A menudo no le dice lo que se supone que el código debe hacer o cómo se comporta en situaciones inusuales. Estas son las preguntas en las que un SME humano es más valioso, y dónde CLI de Copilot puede ayudarle cuando no haya ningún humano disponible.
Algunos ejemplos de preguntas sobre comportamiento y casos límite que podrías hacer:
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?
Cuando reciba una respuesta, siga con "mostrarme el código" o "en qué archivo lo encontró?" si aún no se ha citado. Esto te da un lugar donde comprobar y verificar la respuesta.
6. Uso del historial de Git como otro origen
Muchos contextos útiles residen en el historial de Git en lugar de en el código actual: por qué se escribió una función como era, cuando se corrigió por última vez un error, que originalmente agregó un módulo.
CLI de Copilot puede ejecutar git comandos automáticamente y usar la salida para responder a preguntas que no pudo responder fácilmente leyendo el código solo.
Pruebe las indicaciones, 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. Comprobar antes de confiar
CLI de Copilot es un poderoso SME, pero no es infalible. Puede leer mal el código, conflar archivos similares o, en ocasiones, crear cosas. Trate sus respuestas de la manera en que trataría el consejo de un compañero útil pero fallible: útil como punto de partida, pero vale la pena comprobar antes de actuar sobre cualquier cosa importante.
Algunos hábitos te mantendrán fuera de problemas:
- Compruebe los archivos citados. Cuando CLI de Copilot hace referencia a un archivo específico o un número de línea, ábralo y confirme. Si la cita es incorrecta, trate el resto de la respuesta con más dudas.
- Hazlo tú mismo. Si CLI de Copilot indica que una función devuelve
nulluna entrada vacía, escriba una prueba rápida o una invocación REPL que lo llame con una entrada vacía y compruebe. - Comprobación cruzada con los humanos. Cuando la respuesta importe (seguridad, integridad de datos, cualquier cosa en la que te avergonzaría equivocarte en producción), usa la respuesta de CLI de Copilot como punto de partida y confírmala con un experto en la materia o mediante una revisión de código.
Conclusión
En este tutorial, ha usado CLI de Copilot como su SME personal para:
- Obtenga información general sobre un código base desconocido, anclado en archivos reales.
- Explore en profundidad una característica específica para saber qué archivos se van a cambiar y qué patrones se van a seguir.
- Investigue el comportamiento, los casos perimetrales y el historial de Git.
- Compruebe las respuestas para que pueda confiar en ellas cuando sea importante.
Usado de esta manera, CLI de Copilot no sustituye a los expertos humanos, pero hace que dependas menos de ellos para las preguntas del día a día que surgen mientras trabajas. Tus compañeros de equipo humanos pueden centrar su tiempo en las preguntas que realmente necesitan su experiencia, y puedes seguir moviéndose cuando no estén alrededor.
Pasos siguientes
- Guarde los preámbulos de aviso más útiles como instrucciones personalizadas, por lo que puede reutilizarlos en sesiones y proyectos. Consulte Adición de instrucciones personalizadas para CLI de GitHub Copilot.
- Una vez que comprenda el área del código que desea cambiar, use CLI de Copilot para ayudarle a realizar el cambio. Consulte Refactorización de código con GitHub Copilot y Escritura de pruebas con GitHub Copilot.
- Obtenga información sobre cómo controlar qué herramientas CLI de Copilot se pueden ejecutar durante una sesión. Consulte Permitir y denegar el uso de la herramienta.