Структура проекта

Понимание организации кодовой базы и архитектуры Gemini CLI

Обзор проекта

Gemini CLI организован как монорепо с несколькими взаимосвязанными пакетами

Gemini CLI - это проект монорепо на основе Lerna, который модуляризует функциональность в независимые пакеты для упрощения разработки, тестирования и обслуживания.

Структура пакетов

Основные пакеты, составляющие экосистему Gemini CLI

CLI пакет

packages/cli

Основной интерфейс командной строки и пользовательские команды

Основные обязанности:

  • Разбор и маршрутизация команд
  • Пользовательский интерфейс и взаимодействие
  • Управление конфигурацией
  • Обработка и отчетность ошибок
  • Отображение справки и документации

Основной пакет

packages/core

Основная функциональность и бизнес-логика

Основные обязанности:

  • Реализации API-клиента
  • Взаимодействие с моделями
  • Система управления инструментами
  • Обработка протокола MCP
  • Управление состоянием

Пакет инструментов

packages/tools

Встроенные инструменты и утилиты

Основные обязанности:

  • Операции файловой системы
  • Выполнение команд оболочки
  • Веб-запросы и поиск
  • Управление памятью
  • Регистрация инструментов

Пакет расширений

packages/extensions

Система расширений и управление плагинами

Основные обязанности:

  • Загрузка и управление расширениями
  • Реестр плагинов
  • API расширений
  • Управление жизненным циклом
  • Разрешение зависимостей

Рабочий процесс разработки

Как эффективно работать с кодовой базой

Глобальные команды

npm run bootstrap

Установить и связать все пакеты

npm run build

Собрать все пакеты

npm run test

Запустить все тесты

npm run lint

Проверить все пакеты линтером

Команды для конкретных пакетов

lerna run build --scope @gemini/cli

Собрать конкретный пакет

lerna run test --scope @gemini/core

Тестировать конкретный пакет

lerna add lodash packages/core

Добавить зависимость в пакет

Связанные ресурсы

Продолжите изучение документации по разработке