Структура проекта
Понимание организации кодовой базы и архитектуры 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
Добавить зависимость в пакет
Связанные ресурсы
Продолжите изучение документации по разработке