Интерактивный CLI-агент для генерации сообщений коммитов и описаний PR/MR с помощью LLM.
- Клонируйте репозиторий:
git clone git@github.com:FRiMN/commit_agent.git
cd commit_agent- Запустите Ollama:
ollama serve- Запустите агент:
uv run main.pyЧтобы запускать агент из любой директории с git-репозиторием:
- Создайте скрипт в
~/.local/bin/commit:
mkdir -p ~/.local/bin
cat > ~/.local/bin/commit << 'EOF'
#!/bin/bash
exec uv run ~/commit_agent/main.py "$@"
EOF
chmod +x ~/.local/bin/commit- Убедитесь, что
~/.local/binв PATH (добавьте в~/.bashrcили~/.zshrc):
export PATH="$HOME/.local/bin:$PATH"- Теперь можно запускать в любой директории с git-репозиторием:
cd my_project_dir
commitГенерирует сообщение коммита на основе diff последнего коммита.
uv run main.pyГенерирует полное описание PR/MR на основе diff ветки и истории коммитов.
uv run main.py --prС явным указанием базовой ветки:
uv run main.py --pr --base developИли с использованием синонима --mr:
uv run main.py --mr| Команда | Описание |
|---|---|
/help |
Показать список доступных команд |
/undo |
Отменить последнее изменение |
/history |
Показать полную историю диалога |
/exit |
Выйти без сохранения |
| Команда | Описание |
|---|---|
/diff |
Показать diff последнего коммита |
/commit или /save |
Сохранить сообщение и выполнить amend |
- Агент анализирует diff последнего коммита и примеры сообщений из вашего репозитория
- Ведет диалог для создания идеального commit message
- Сохраняет сообщение с помощью git amend
- Агент определяет базовую ветку (main/master) или принимает её из параметра
--base - Анализирует полный diff текущей ветки относительно базовой
- Анализирует историю коммитов на ветке
- Генерирует структурированное описание PR/MR
При запуске в PR/MR режиме без параметра --base агент автоматически определяет базовую ветку:
- Проверяет
git symbolic-ref refs/remotes/origin/HEAD(стандарт GitHub) - Проверяет существование локальной ветки
main - Проверяет существование локальной ветки
master - По умолчанию использует
main
GNU GPLv3. Подробности в LICENSE файле.