Structure du Projet

Comprendre l'organisation de la base de code et l'architecture de Gemini CLI

Aperçu du Projet

Gemini CLI est organisé comme un monorepo avec plusieurs packages interconnectés

Gemini CLI est un projet monorepo basé sur Lerna qui modularise les fonctionnalités en packages indépendants pour faciliter le développement, les tests et la maintenance.

Structure des Packages

Packages principaux qui composent l'écosystème Gemini CLI

Package CLI

packages/cli

Interface de ligne de commande principale et commandes orientées utilisateur

Responsabilités Clés:

  • Analyse et routage des commandes
  • Interface utilisateur et interaction
  • Gestion de la configuration
  • Gestion et rapport d'erreurs
  • Affichage de l'aide et de la documentation

Package Core

packages/core

Fonctionnalité principale et logique métier

Responsabilités Clés:

  • Implémentations de client API
  • Interactions de modèle
  • Système de gestion d'outils
  • Gestion du protocole MCP
  • Gestion d'état

Package Outils

packages/tools

Outils intégrés et utilitaires

Responsabilités Clés:

  • Opérations du système de fichiers
  • Exécution de commandes shell
  • Requêtes web et recherches
  • Gestion de la mémoire
  • Enregistrement d'outils

Package Extensions

packages/extensions

Système d'extension et gestion de plugins

Responsabilités Clés:

  • Chargement et gestion d'extensions
  • Registre de plugins
  • API d'extension
  • Gestion du cycle de vie
  • Résolution de dépendances

Flux de Travail de Développement

Comment travailler efficacement avec la base de code

Commandes Globales

npm run bootstrap

Installer et lier tous les packages

npm run build

Construire tous les packages

npm run test

Exécuter tous les tests

npm run lint

Linter tous les packages

Commandes Spécifiques aux Packages

lerna run build --scope @gemini/cli

Construire un package spécifique

lerna run test --scope @gemini/core

Tester un package spécifique

lerna add lodash packages/core

Ajouter une dépendance au package

Ressources Connexes

Continuez à explorer la documentation de développement