by Nutlope (community) git, bash, zsh, любая ОС
CLI-инструмент, который генерирует git commit message по diff. Запускаешь `aicommits` после `git add` — получаешь готовое сообщение по conventional commits. Возможности: - Анализирует `git diff --staged` и генерирует сообщение - Формат conventional commits (feat, fix, chore, refactor) - Несколько вариантов на выбор (--generate N) - Поддержка OpenAI, Anthropic, Ollama, Groq - Настраиваемый locale (сообщения на любом языке) - git hook — автоматически при каждом commit - Проверка на staged изменения перед запуском
# npm: npm install -g aicommits # Настройка: aicommits config set OPENAI_KEY=sk-... # Anthropic: aicommits config set type=anthropic aicommits config set ANTHROPIC_KEY=sk-ant-... # Использование: git add . aicommits # Несколько вариантов: aicommits --generate 3 # Установить как git hook: aicommits hook install
CLI-утилита, которая пишет сообщения коммитов в git за вас с помощью ИИ. Больше никогда не пишите сообщения коммитов вручную.
Минимальная поддерживаемая версия Node.js — v22. Проверьте вашу версию Node.js командой
node --version.
sh
npm install -g aicommits
sh
aicommits setup
Это направит вас через:
provider)Поддерживаемые провайдеры включают:
Для сред CI/CD вы также можете настроить конфигурацию через файл конфигурации:
bash
aicommits config set OPENAI_API_KEY="your_api_key_here"
aicommits config set OPENAI_BASE_URL="your_api_endpoint" # Опционально, для пользовательских конечных точек
aicommits config set OPENAI_MODEL="your_model_choice" # Опционально, по умолчанию используется модель провайдера
Примечание: При использовании переменных окружения убедитесь, что все связанные переменные (например,
OPENAI_API_KEYиOPENAI_BASE_URL) установлены последовательно, чтобы избежать несоответствия конфигурации с файлом конфигурации.
Это создаст файл .aicommits в вашей домашней директории.
Проверьте установленную версию с помощью:
aicommits --version
Чтобы обновиться до последней версии, выполните:
aicommits update
Это автоматически определит ваш пакетный менеджер (npm, pnpm, yarn или bun) и обновит с помощью правильной команды.
В качестве альтернативы вы можете обновить вручную:
npm install -g aicommits
Вы можете вызвать aicommits напрямую, чтобы сгенерировать сообщение коммита для ваших индексированных изменений:
git add <files...>
aicommits
aicommits передает неизвестные флаги в git commit, поэтому вы можете передавать флаги коммита.
Например, вы можете проиндексировать все изменения в отслеживаемых файлах во время коммита:
aicommits --all # или -a
👉 Совет: Используйте псевдоним
aic, еслиaicommitsслишком длинное для вас.
--all или -a: Автоматически индексировать изменения в отслеживаемых файлах для коммита (по умолчанию: false)--clipboard или -c: Копировать выбранное сообщение в буфер обмена вместо коммита (по умолчанию: false)--generate или -g: Количество сообщений для генерации (по умолчанию: 1)--exclude или -x: Файлы для исключения из анализа ИИ--type или -t: Формат сообщения коммита git (по умолчанию: plain). Поддерживает plain, conventional, conventional+body, gitmoji и subject+body--prompt или -p: Пользовательский промпт для направления поведения LLM (например, конкретный язык, инструкции по стилю)--no-verify или -n: Обход хуков перед коммитом (pre-commit hooks) во время коммита (по умолчанию: false)--yes или -y: Пропуск подтверждения после генерации сообщения перед коммитом (по умолчанию: false)Иногда рекомендуемое сообщение коммита не является лучшим, и вы хотите, чтобы было сгенерировано несколько вариантов для выбора. Вы можете сгенерировать несколько сообщений коммита одновременно, передав флаг --generate <i>, где 'i' — количество генерируемых сообщений:
aicommits --generate <i> # или -g <i>
Предупреждение: это использует больше токенов, что стоит дороже.
Вы можете выбрать из пяти различных форматов сообщений коммитов:
Используйте флаг --type для указания формата:
aicommits --type conventional # или -t conventional
aicommits --type conventional+body # или -t conventional+body (conventional тема + тело)
aicommits --type gitmoji # или -t gitmoji
aicommits --type plain # или -t plain (по умолчанию)
aicommits --type subject+body # или -t subject+body (тема + тело)
Эта функция полезна, если ваш проект следует определенному стандарту сообщений коммитов или если вы используете инструменты, которые полагаются на эти форматы коммитов.
Вы можете настроить поведение LLM с помощью флага --prompt, чтобы направлять генерацию сообщений коммитов:
# Писать сообщения коммитов на определенном языке
aicommits -p "Write commit messages in Italian"
# Сфокусироваться на определенных аспектах изменений
aicommits -p "Focus on performance implications of changes"
# Использовать определенный стиль или тон
aicommits -p "Use technical jargon suitable for senior developers"
# Включить определенные детали в сообщение
aicommits -p "Always mention the specific function names and file paths changed"
Вы также можете интегрировать aicommits с Git через хук prepare-commit-msg. Это позволяет вам использовать Git как обычно и редактировать сообщение коммита перед коммитом.
В репозитории Git, куда вы хотите установить хук:
aicommits hook install
В репозитории Git, откуда вы хотите удалить хук:
aicommits hook uninstall
sh
git add <files...>
git commit # Генерирует сообщение только когда оно не передано явно
Если вы когда-нибудь захотите написать свое собственное сообщение вместо генерации, вы можете просто передать его:
git commit -m "Мое сообщение"
Aicommits сгенерирует сообщение коммита и передаст его обратно в Git. Git откроет его в настроенном редакторе для вашего просмотра/редактирования.
Сохраните и закройте редактор для выполнения коммита!
Вы также можете настроить aicommits с помощью переменных окружения вместо файла конфигурации.
Пример:
export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://api.example.com"
export OPENAI_MODEL="gpt-4"
aicommits # Использует переменные окружения
Настройки конфигурации разрешаются в следующем порядке приоритета:
Чтобы просмотреть все текущие параметры конфигурации, которые отличаются от значений по умолчанию, выполните:
aicommits config
Это покажет только нестандартные значения конфигурации, при этом API-ключи будут скрыты для безопасности. Если пользовательская конфигурация не установлена, будет показано "(using all default values)".
Чтобы интерактивно выбрать или изменить вашу модель ИИ, выполните:
aicommits model
Это:
Чтобы обновиться до последней версии, выполните:
aicommits update
Это:
Чтобы получить параметр конфигурации, используйте команду:
aicommits config get <ключ>
Например, чтобы получить API-ключ, можно использовать:
aicommits config get OPENAI_API_KEY
Вы также можете получить несколько параметров конфигурации одновременно, разделяя их пробелами:
aicommits config get OPENAI_API_KEY generate
Чтобы установить параметр конфигурации, используйте команду:
aicommits config set <ключ>=<значение>
Например, чтобы установить API-ключ, можно использовать:
aicommits config set OPENAI_API_KEY=<ваш-апи-ключ>
Вы также можете установить несколько параметров конфигурации одновременно, разделяя их пробелами, например
aicommits config set OPENAI_API_KEY=<ваш-апи-ключ> generate=3 locale=en
Ваш API-ключ OpenAI или API-ключ пользовательского провайдера.
Пользовательский URL конечной точки API, совместимой с OpenAI.
Модель для использования у провайдеров, совместимых с OpenAI.
Выбранный провайдер ИИ. Устанавливается автоматически во время aicommits setup. Допустимые значения: openai, togetherai, groq, xai, openrouter, ollama, lmstudio, custom.
По умолчанию: en
Язык (локаль) для использования в генерируемых сообщениях коммитов. Консультируйтесь со списком кодов в: https://wikipedia.org/wiki/List_of_ISO_639-1_codes.
По умолчанию: 1
Количество сообщений коммитов для генерации для выбора.
Обратите внимание, что это будет использовать больше токенов, так как генерирует больше результатов.
Тайм-аут для сетевых запросов к API OpenAI в миллисекундах.
По умолчанию: 10000 (10 секунд)
aicommits config set timeout=20000 # 20s
Максимальная длина в символах для генерируемого сообщения коммита.
По умолчанию: 72
aicommits config set max-length=100
По умолчанию: plain
Тип сообщения коммита для генерации. Доступные варианты:
plain: Простые, неструктурированные сообщения коммитовconventional: Формат Conventional Commits с типом и областьюconventional+body: Тема conventional коммита плюс тело, сгенерированное из диффаgitmoji: Сообщения коммитов на основе эмодзиsubject+body: Строка темы в стиле git плюс тело, сгенерированное из диффаПримеры:
aicommits config set type=conventional
aicommits config set type=conventional+body
aicommits config set type=gitmoji
aicommits config set type=plain
aicommits config set type=subject+body
Эта CLI-утилита запускает git diff, чтобы собрать все ваши последние изменения кода, отправляет их настроенному провайдеру ИИ (по умолчанию TogetherAI), а затем возвращает сгенерированное ИИ сообщение коммита.
Скоро выйдет видео, где я пересоберу его с нуля, чтобы показать вам, как легко создавать собственные CLI-утилиты на основе ИИ.
Hassan El Mghari: @Nutlope
Riccardo Giorato: @riccardogiorato
Hiroki Osame: @privatenumber
Если вы хотите помочь исправить ошибку или реализовать функцию в разделе Issues, ознакомьтесь с Руководством по участию, чтобы узнать, как настроить и протестировать проект.