Estructura del Proyecto

Comprensión de la organización de la base de código y la arquitectura de Gemini CLI

Resumen del Proyecto

Gemini CLI está organizado como un monorepo con múltiples paquetes interconectados

Gemini CLI es un proyecto monorepo basado en Lerna que modulariza la funcionalidad en paquetes independientes para facilitar el desarrollo, las pruebas y el mantenimiento.

Estructura de Paquetes

Paquetes principales que conforman el ecosistema Gemini CLI

Paquete CLI

packages/cli

Interfaz de línea de comandos principal y comandos orientados al usuario

Responsabilidades Clave:

  • Análisis y enrutamiento de comandos
  • Interfaz de usuario e interacción
  • Gestión de configuración
  • Manejo y reporte de errores
  • Visualización de ayuda y documentación

Paquete Core

packages/core

Funcionalidad principal y lógica de negocio

Responsabilidades Clave:

  • Implementaciones de cliente API
  • Interacciones de modelo
  • Sistema de gestión de herramientas
  • Manejo del protocolo MCP
  • Gestión de estado

Paquete de Herramientas

packages/tools

Herramientas integradas y utilidades

Responsabilidades Clave:

  • Operaciones del sistema de archivos
  • Ejecución de comandos shell
  • Solicitudes web y búsquedas
  • Gestión de memoria
  • Registro de herramientas

Paquete de Extensiones

packages/extensions

Sistema de extensiones y gestión de plugins

Responsabilidades Clave:

  • Carga y gestión de extensiones
  • Registro de plugins
  • API de extensión
  • Gestión del ciclo de vida
  • Resolución de dependencias

Flujo de Trabajo de Desarrollo

Cómo trabajar eficazmente con la base de código

Comandos Globales

npm run bootstrap

Instalar y enlazar todos los paquetes

npm run build

Construir todos los paquetes

npm run test

Ejecutar todas las pruebas

npm run lint

Lintear todos los paquetes

Comandos Específicos de Paquete

lerna run build --scope @gemini/cli

Construir paquete específico

lerna run test --scope @gemini/core

Probar paquete específico

lerna add lodash packages/core

Agregar dependencia al paquete

Recursos Relacionados

Continúe explorando la documentación de desarrollo