Skip to main content

Administración del contexto en CLI de GitHub Copilot

Comprenda cómo Copilot administra el contexto de conversación, lo que sucede durante las sesiones largas y cómo mantener el control de la ventana de contexto.

Acerca de la ventana de contexto

Cuando se usa CLI de GitHub Copilot, todos los mensajes que se envían, cada respuesta de Copilot, cada llamada de herramienta y su resultado, y las instrucciones del sistema que definen Copilotel comportamiento se mantienen en una ventana de contexto. La ventana de contexto es la cantidad total de información que el modelo de IA puede tener en cuenta al generar una respuesta.

La ventana de contexto tiene un tamaño fijo, medido en tokens, que varía según el modelo. Los tokens normalmente constan de palabras cortas y fragmentos de palabras multisílaba que se usan habitualmente. A medida que avanza la conversación, la ventana de contexto se rellena con:

  •         **Instrucciones del sistema y definiciones de herramientas**: las instrucciones integradas que indican Copilot cómo comportarse, además de los esquemas de todas las herramientas disponibles. Siempre están presentes y ocupan una parte fija de la ventana de contexto.
    
  •         **Tus mensajes**: Cada indicación que envíes.
    
  •         **
            CopilotRespuestas**: Todo lo que Copilot te responde.
    
  •         **Llamadas a herramientas y resultados**: cuando Copilot lee archivos, ejecuta comandos o busca en el código base, tanto la solicitud como la salida se agregan al contexto. Los resultados de la herramienta pueden ser especialmente grandes, por ejemplo, si una herramienta lee un archivo largo o ejecuta un comando que genera una salida extensa.
    

Todo esto se acumula en la ventana de contexto. En una sesión larga o compleja, la ventana de contexto puede rellenarse.

¿Por qué es importante la ventana de contexto?

La ventana de contexto es lo que le proporciona a Copilot su "memoria" de la conversación. Todo lo que hay dentro de la ventana de contexto está disponible para que Copilot lo use al responderte.

Esto significa que, en una sesión muy larga, Copilot es posible que no pueda mantener todo el historial de conversaciones a la vez. CLI de Copilot, por lo tanto, tiene características de administración de contexto que le permiten continuar una conversación con Copilot durante todo el tiempo que necesite.

Comprobación del uso del contexto

Puede comprobar la cantidad de la ventana de contexto que está actualmente en uso escribiendo el comando de /context barra diagonal. Esto muestra un desglose visual del uso del token, en el que se muestra lo siguiente:

  •         **Sistema o herramientas**: la sobrecarga fija de las instrucciones del sistema y las definiciones de herramientas.
    
  •         **Mensajes**: el espacio utilizado por el historial de conversaciones.
    
  •         **Espacio libre**: cuánto espacio queda para los nuevos mensajes.
    
  •         **Búfer**: una parte reservada que desencadena la administración automática del contexto.
    

Captura de pantalla de la salida del comando de la CLI "/context".

Es posible que quiera usar el /context comando de barra diagonal cuando:

  • Está en una sesión prolongada y desea saber cuánto espacio disponible queda.
  •         Copilot parece olvidar partes anteriores de la conversación.
    
  • Quiere comprender si se ha producido la compactación o es probable que se produzca pronto.

Compactación

La compactación es el proceso que permite CLI de GitHub Copilot admitir sesiones de ejecución prolongada sin alcanzar los límites de la ventana de contexto.

Cuando se produce la compactación

Cuando la conversación alcanza aproximadamente 80% de la capacidad de la ventana de contexto, CLI de Copilot comienza automáticamente a compactar el contexto en segundo plano. Esto deja un búfer de aproximadamente 20% para que las llamadas a herramientas puedan seguir ejecutándose mientras la compactación está en curso. Si el contexto se rellena a aproximadamente 95% antes de que finalice la compactación, CLI de Copilot se pausa brevemente para esperar a que se complete la compactación antes de continuar.

También puede desencadenar la compactación manualmente en cualquier momento escribiendo el /compact comando . Esto es útil si está a punto de iniciar una nueva fase de trabajo y desea liberar espacio de contexto de forma proactiva. Presione Esc para cancelar una compactación manual si cambia de opinión.

Qué hace la compactación

Cuando se ejecuta la compactación, CLI de Copilot:

  1. Toma una instantánea del historial de conversaciones actual.
  2. Envía la conversación completa al modelo de IA con un aviso especial que le pide que genere un resumen estructurado. El resumen captura los objetivos de la conversación, lo que se hizo, los detalles técnicos clave, los archivos importantes y los pasos siguientes planeados.
  3. Reemplaza el historial de conversaciones antiguo por el resumen, junto con las instrucciones de usuario originales y el estado actual de los planes o listas de to-do.
  4. Mantiene los mensajes que se agregaron mientras se estaba ejecutando la compactación en segundo plano.

El resultado es que el historial de conversaciones se comprime en un resumen mucho más pequeño, liberando la mayoría de la ventana de contexto para el nuevo trabajo. Copilot usa este resumen para mantener la continuidad, sabe lo que se ha analizado, lo que se ha decidido y qué hacer a continuación, aunque se han reemplazado los mensajes originales.

¿Qué es lo que la compactación no conserva?

La compactación es un proceso de resumen, por lo que algunos detalles se pierden inevitablemente. El resumen captura los puntos clave, pero detalles detallados, como la redacción exacta de cada mensaje, la salida completa de cada comando o las decisiones menores tomadas al principio de una conversación larga, no se pueden incluir. Si necesita Copilot recuperar un detalle muy específico de mucho más temprano en la sesión, es posible que no tenga esa información tras la compactación.

¿Qué ocurriría sin compactación?

Sin compactación, una vez rellenada la ventana de contexto, Copilot tendría que recurrir a simplemente quitar mensajes antiguos del historial de conversaciones, quitándolos sin ningún resumen o registro. Esto significaría perder el contexto abruptamente, sin ninguna manera de Copilot saber lo que estaba en los mensajes eliminados. Compaction evita esto reemplazando el historial por un resumen inteligente en lugar de descartarlo.

Checkpoints

Cada vez que se produce la compactación, ya sea de forma automática o manual, se crea un punto de control . Un punto de control es una copia guardada del resumen de compactación, almacenada como un archivo numerado con título en el área de trabajo de la sesión.

Visualización de puntos de control

Para ver todos los puntos de control de la sesión actual, escriba:

Copilot prompt
/session checkpoints

Esto enumera cada punto de control con su número y título:

Checkpoint History (3 total):
  3. Refactoring authentication module
  2. Implementing user dashboard
  1. Initial planning and setup

Use el número de punto de control para ver el contenido completo de cualquier punto de control. Por ejemplo, para ver el punto de control 2, escriba:

Copilot prompt
/session checkpoints 2

Cuando los puntos de control son útiles

  •         **Revisión de lo que ha ocurrido**: Después de una sesión larga con varias compactaciones de datos, las etapas anteriores de la conversación ya no están presentes en el contexto activo. Los puntos de control te permiten revisar lo que Copilot hizo en cada compactación.
    
  •         **Comprobación de la continuidad**: si desea comprobar que Copilotel resumen ha capturado con precisión el trabajo anterior antes de continuar, puede revisar el punto de control más reciente.
    
  •         **Confusiones en la depuración**: si Copilot parece haber olvidado una decisión o va en una dirección que contradice el trabajo anterior, la comprobación de los puntos de control puede revelar lo que se conserva durante la compresión y lo que podría haberse resumido de manera diferente a lo que esperabas.
    

Nota:

  • Los puntos de control se crean automáticamente. No es necesario administrarlos, ya que están allí si los necesita. Para la mayoría de las sesiones, no tendrá que examinar los puntos de control en absoluto.
  • No se puede revertir una compactación una vez que se haya completado.

Uso de sesiones prolongadas

La compactación automática le permite seguir trabajando en una sesión de larga duración sin preocuparse por alcanzar los límites de la ventana de contexto. Hay ocasiones en las que esto es muy útil y otras veces cuando es posible que prefiera iniciar una sesión nueva.

Cuando las sesiones largas son útiles

Las sesiones de ejecución prolongada funcionan bien cuando:

  • Está trabajando en una tarea de varias fases, como desarrollar una característica que requiera una estructura inicial, implementación, pruebas y luego crear una solicitud de incorporación de cambios.
  • Está iterando sobre un problema y quiere que Copilot conserve el contexto de lo que se ha intentado y lo que no ha funcionado.
  • Estás realizando un trabajo exploratorio en una base de código y construyendo una comprensión compartida con Copilot a lo largo del tiempo.

Cuándo iniciar una sesión nueva

Iniciar una nueva sesión es mejor cuando:

  • Va a cambiar a una tarea no relacionada. Copilot no necesita el contexto del trabajo anterior y una ventana de contexto limpia significa más espacio para la nueva tarea.
  • La conversación ha pasado por muchas compresiones, y sientes que se está perdiendo contexto importante en el proceso de resumen.
  • Quiere un nuevo comienzo, por ejemplo, si el trabajo se ha desviado en una dirección incorrecta y prefiere empezar de nuevo en lugar de intentar conciliar las decisiones anteriores con un nuevo enfoque.

Sugerencia

Puede reanudar las sesiones anteriores en cualquier momento mediante el /resume comando . Esto le permite elegir donde lo dejó, incluidos los puntos de control que se crearon durante esa sesión.

Lectura adicional

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli)
    
  •         [AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli)
    
  •         [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)