Trabajar con proyectos grandes

Gestiona bases de código grandes en Bob Shell. Comprende la optimización de la ventana de contexto, el manejo de archivos y las mejores prácticas para proyectos a escala empresarial.

Límites de contexto en proyectos grandes

Bob usa modelos de lenguaje grande que tienen una ventana de contexto limitada. Esta es la cantidad máxima de texto (medida en tokens) que Bob puede procesar a la vez. Si el contexto es demasiado grande, es posible que Bob no pueda entender tu solicitud o generar respuestas precisas.

La ventana de contexto incluye:

  • El prompt del sistema (instrucciones para Bob)
  • El historial de la conversación
  • El contenido de cualquier archivo que incluyas en tu prompt del chat
  • La salida de cualquier comando o herramienta que use Bob

Estrategias para gestionar el contexto

  1. Sé específico: Cuando hagas referencia a archivos o código, usa rutas de archivos y nombres de funciones específicos. Evita referencias vagas como "el archivo principal".
  2. Referencia archivos con precisión: Incluye archivos específicos en tu prompt del chat usando su ruta (por ejemplo, src/components/MyComponent.tsx), o referencia un hash de commit para apuntar a Bob a un estado de Git específico.
  3. Divide las tareas: Divide las tareas grandes en subtareas más pequeñas y manejables. Esto ayuda a mantener el contexto enfocado.
  4. Resume cuando sea necesario: Si necesitas hacer referencia a una gran cantidad de código, considera resumir las partes relevantes en tu prompt en lugar de incluir todo el código.
  5. Prioriza el historial reciente: Bob condensa automáticamente los mensajes más antiguos del historial de conversación para mantenerse dentro de la ventana de contexto. Ten esto en cuenta y vuelve a incluir el contexto importante si es necesario.
  6. Gestiona el uso de herramientas MCP: Puedes deshabilitar y habilitar herramientas específicas en un servicio MCP para usar solo lo que necesitas, reduciendo el consumo de contexto por definiciones de herramientas no utilizadas.
  7. Usa subagentes o subtareas para trabajo aislado: Para piezas de trabajo grandes y autocontenidas, considera usar un subagente o subtarea. Ambos se ejecutan en su propia ventana de contexto separada, manteniendo la sesión del terminal principal compacta. Consulta Herramientas para detalles sobre spawn_subagent y start_subtask.

Ejemplo: Refactorizar un archivo grande

Si necesitas refactorizar un archivo TypeScript grande (src/components/MyComponent.tsx), aquí tienes un enfoque efectivo:

  1. Obtén una visión general inicial:
    Lista las funciones y clases en src/components/MyComponent.tsx
  2. Apunta a funciones específicas:
    Refactoriza la función `processData` en src/components/MyComponent.tsx para usar async/await en lugar de Promises.
  3. Haz cambios iterativos: Realiza cambios pequeños e incrementales, revisando y aprobando cada paso.

Al dividir la tarea y proporcionar contexto específico, puedes trabajar eficazmente con archivos grandes dentro de los límites de la ventana de contexto.

¿Cómo es este tema?