GigaCommit - ИИ генерация коммитов
GigaCommit — это расширение для Visual Studio Code, использующее GigaChat для генерации содержательных комментариев к коммитам в соответствии со стандартами convential commits.

Возможности
✨ Комментарии с ИИ — GigaChat анализирует изменения в коде и генерирует описательные комментарии
🎯 Conventional Commits — все генерируемые сообщения следуют формату Conventional Commits для лучшей читаемости истории проекта
⚡ Интеграция — работает напрямую в интерфейсе Git в VSCode
🔐 Безопасность — ваш код остаётся приватным; только diff отправляется в API GigaChat
⚙️ Настройка — простая настройка учётных данных OAuth и конечных точек
Установка
- Откройте VSCode
- Перейдите во вкладку расширений (Ctrl+Shift+X)
- Найдите "GigaCommit"
- Нажмите Установить
Настройка
Перед использованием GigaCommit необходимо настроить учётные данные OAuth для GigaChat:
- Откройте настройки VSCode (Ctrl+,)
- Найдите "GigaCommit"
- Настройте следующие параметры:
| Параметр |
Описание |
По умолчанию |
gigacommit.authorizationKey |
Base64-закодированный ключ авторизации (ваш API-ключ для OAuth) |
обязательный |
gigacommit.scope |
Охват OAuth — выбрать: PERS / B2B / CORP. Базовый URL API выбирается автоматически по значению |
GIGACHAT_API_PERS |
gigacommit.model |
Модель GigaChat — выбрать: GigaChat-2 / GigaChat-2-Pro / GigaChat-2-Max |
GigaChat-2-Pro |
gigacommit.commitLanguage |
Язык текста коммита — English / Russian. Тип Conventional Commit остаётся стандартным (feat, fix, docs и т.д.) |
English |
gigacommit.caBundlePath |
Путь к PEM-файлу с пользовательскими сертификатами CA (необязательно) |
(пусто) |
Получение ключа авторизации
- Зарегистрируйте приложение в портале разработчиков GigaChat.
- Перейдите в Настройки → Ключи API.
- Скопируйте свой Ключ авторизации.
Значение authorizationKey должно выглядеть как NjE5MDhkYWUt...
Какой scope использовать
| Тип лицензии |
scope |
Выбирается автоматически |
| Персональный |
GIGACHAT_API_PERS |
https://gigachat.devices.sberbank.ru/api/v1 |
| B2B |
GIGACHAT_API_B2B |
https://api.giga.chat/v1 |
| Корпоративный |
GIGACHAT_API_CORP |
https://api.giga.chat/v1 |
Расширение автоматически выбирает базовый URL API чата:
GIGACHAT_API_PERS -> https://gigachat.devices.sberbank.ru/api/v1
GIGACHAT_API_B2B -> https://api.giga.chat/v1
GIGACHAT_API_CORP -> https://api.giga.chat/v1
По умолчанию: GIGACHAT_API_PERS
Доступные модели
| Модель |
Цена |
Возможности |
GigaChat-2 |
Стандартная |
Подходит для простых задач, самые быстрые ответы |
GigaChat-2-Pro |
Умеренная |
Рекомендуется — оптимальное соотношение скорости и качества |
GigaChat-2-Max |
Самая высокая |
Наиболее продвинутая, лучшая для сложного анализа |
Рекомендуем использовать GigaChat-2-Pro по умолчанию: она обеспечивает наилучший баланс между качеством ответа и задержкой, без избыточности Max-версии.
{
"gigacommit.authorizationKey": "ваш-base64-ключ-здесь",
"gigacommit.scope": "GIGACHAT_API_PERS",
"gigacommit.model": "GigaChat-2-Pro",
"gigacommit.commitLanguage": "English"
}
Язык коммита
Настройка gigacommit.commitLanguage управляет языком текста коммита:
English — summary и bullet points будут сгенерированы на английском
Russian — summary и bullet points будут сгенерированы на русском в безличной или пассивной форме
При этом тип Conventional Commit остаётся стандартным:
feat: add commit language setting
fix: исправлена обработка OAuth токена
Использование
- Внесите изменения в код
- Добавьте нужные файлы в индекс (staging) через панель Git
- Откройте панель управления источниками
- Нажмите кнопку GigaCommit в заголовке панели управления
- Дождитесь генерации комментария GigaChat
- Сгенерированный текст вставляется в поле ввода комментария
- Проверьте его и сами нажмите кнопку Commit
Как это работает
- Расширение получает diff изменений в индексе (
git diff --cached) через API расширения Git в VS Code
- Оно получает токен доступа OAuth с конечной точки авторизации Sber
- Отправляет только diff изменений (в формате unified diff) в API GigaChat с инструкцией сгенерировать сообщение коммита
- GigaChat анализирует изменения и возвращает подходящее сообщение
- Расширение вставляет сообщение в поле ввода панели управления
- Вы проверяете его и сами решаете, нажимать ли кнопку
Commit
Бинарные файлы в индексе автоматически исключаются — Git помечает их как Binary files a/... and b/... differ, поэтому сырые бинарные данные никогда не отправляются в API. Если diff превышает ~20 КБ, вы получите предупреждение и сможете выбрать усечение.
Формат Conventional Commits
GigaCommit гарантирует, что все сообщения следуют спецификации Conventional Commits:
<type>[необязательная область]: <описание>
[необязательный текст]
[необязательные сноски]
Для небольших изменений GigaCommit генерирует только первую строку.
Для крупных изменений может быть добавлен краткий раздел с деталями, например:
feat: добавить генерацию сообщений коммитов SCM
- обновить workflow Source Control в README
- добавить интеграцию кнопки действия SCM
- вставить сгенерированное сообщение в поле ввода коммита
Распространённые типы:
feat: Новая функция
fix: Исправление ошибки
docs: Изменения только в документации
style: Изменения, не влияющие на смысл кода
refactor: Изменение кода, не исправляющее ошибку и не добавляющее функцию
perf: Изменение кода, улучшающее производительность
test: Добавление недостающих тестов или исправление существующих
build: Изменения, влияющие на систему сборки или внешние зависимости
ci: Изменения в конфигурационных файлах и скриптах CI
chore: Другие изменения, не затрагивающие src или test
Безопасность
GigaCommit уважает конфиденциальность вашего кода:
- В API отправляется только diff изменений в индексе
- Ваш полный код остаётся на вашем компьютере
- Токен OAuth сохраняется в globalState VS Code (в зашифрованном виде) и используется повторно до 30 секунд до истечения срока действия
- Если сервер возвращает 401, токен аннулируется и обновляется автоматически
- Вся связь с GigaChat использует HTTPS
OAuth Flow
GigaCommit реализует официальный OAuth 2.0 flow от Sber GigaChat:
- Запрос токена — отправляет
POST на конечную точку авторизации с:
Authorization: Basic <authorizationKey>
- Заголовок
RqUID: <uuid4>
- Тело
scope=<your_scope>
- Завершение чата — использует полученный
access_token как токен Bearer
Токен кэшируется между сессиями VS Code и обновляется автоматически. Если API возвращает 401, токен аннулируется и повторно получается, с одной попыткой повтора.
Устранение неполадок
В: Я получаю ошибку об отсутствующем ключе авторизации
О: Убедитесь, что вы настроили gigacommit.authorizationKey в настройках VSCode
В: Я получаю HTTP 401 с конечной точки токена
О: Убедитесь, что ключ авторизации правильно закодирован в Base64 и активен в портале разработчиков GigaChat
В: ИИ слишком долго отвечает
О: Проверьте подключение к интернету и статус API GigaChat
В: Сгенерированные сообщения не по теме
О: Попробуйте добавлять в индекс меньше файлов одновременно для более сфокусированных коммитов
В: HTTP 403 Forbidden
О: Убедитесь, что настройка scope соответствует вашему типу лицензии (CORP / PERS / B2B)
Детали ошибок API
Когда API GigaChat возвращает ошибку, расширение показывает описание от сервера — а не только код HTTP-статуса.
| HTTP статус |
Что означает |
Распространённая причина |
| 400 |
Некорректный запрос — неверные параметры |
Неверное тело запроса или неподдерживаемая модель |
| 401 |
Неавторизованный доступ — недействительный/истёкший токен |
Токен отозван или несовпадающие учётные данные |
| 403 |
Доступ запрещён — нет прав |
Неверный scope или недостаточно прав |
| 404 |
Не найдено |
Неверное имя модели или несоответствие конечной точки выбранному scope |
| 422 |
Необрабатываемая сущность — неверный формат |
Некорректный массив сообщений |
| 429 |
Превышен лимит запросов |
Слишком много запросов — подождите и повторите |
| 500 |
Внутренняя ошибка сервера |
Проблема на стороне GigaChat |
Полный ответ сервера записывается в консоль разработчика VS Code для отладки, чувствительные данные автоматически скрываются.
Проблемы с TLS / сертификатами
API GigaChat использует HTTPS с сертификатами от Национального УЦ Минцифры. Если вы видите ошибки TLS handshake, такие как EPROTO, SSLV3_ALERT_HANDSHAKE_FAILURE или CERT_UNTRUSTED:
Установите корневой сертификат — на большинстве платформ сертификат "Российский доверенный корневой CA" (НУЦ Минцифры) должен быть установлен. В macOS он обычно уже предустановлен. В Linux добавьте его в /usr/local/share/ca-certificates/ и выполните update-ca-certificates.
Корпоративный прокси / MITM — если ваша компания использует прокси, перехватывающий HTTPS-трафик, возможно, потребуется доверять корневому сертификату прокси. Установите настройку GigaCommit: CA Bundle Path, указав путь к PEM-файлу с корневым сертификатом прокси.
Пользовательский пакет CA — если в хранилище сертификатов вашей системы нет нужных CA, вы можете предоставить пользовательский пакет:
- Установите
gigacommit.caBundlePath как полный путь к .pem файлу
- Этот файл должен содержать цепочку сертификатов (корневой CA + промежуточные)
- Пример:
/path/to/nuts-minifry.pem
Не отключайте проверку TLS (rejectUnauthorized: false). Расширение никогда не отключает TLS по умолчанию и настоятельно этого не рекомендует.
Истёкший сертификат — если сертификат сервера истёк, проверьте портал разработчиков GigaChat на наличие уведомлений о сервисе.
Участие
Приветствуются любые вклады! Пожалуйста, не стесняйтесь создавать issues, предложения по функционалу или pull requests.
Лицензия
MIT License
Благодарности
Создано на основе GigaChat AI и VSCode Extension APIs.