← Вернуться в блог

ИИ-сообщения для commit с вашим собственным ключом: ваш diff не касается наших серверов

feature privacy

Почему ИИ-сообщения для commit полезны -- и где их польза заканчивается

Каждый разработчик знает этот момент. Вы только что закончили долгую сессию рефакторинга, diff в staging затрагивает десяток файлов, и Git просит вас уместить всё это в одну-две строки. Вы печатаете «рефакторинг всякого», обещаете себе когда-нибудь писать сообщения получше и идёте дальше. Через полгода вы копаетесь в истории, пытаясь вспомнить, что же на самом деле изменил «рефакторинг всякого».

Именно эту проблему ИИ-генератор сообщений для commit действительно решает. Языковая модель хороша ровно в этой задаче: она читает diff из staging, замечает всё, что изменилось -- включая конфигурационный файл, о котором вы и забыли, -- и набрасывает сообщение, описывающее само изменение, а не ваше настроение в семь вечера. Для больших commit, затрагивающих много файлов, это настоящий подарок вашему будущему «я» и каждому, кто когда-нибудь будет просматривать вашу историю.

Будем столь же честны и насчёт обратной стороны: для тривиальных однострочных правок ИИ избыточен. Если вы исправили опечатку, напечатать «Fix typo in README» всегда будет быстрее любого цикла генерации, и ни одна модель не напишет лучше. Смысл ИИ-сообщений для commit не в том, чтобы заменить ваше суждение при изменении одного символа. Он в том, чтобы убрать рутину из изменений, которые действительно трудно резюмировать.

Вопрос, который никто не задаёт: чьи серверы видят ваш diff?

Когда Git-клиенты начали добавлять ИИ-функции, большинство пошло по одному сценарию: приложение отправляет ваш diff в облако производителя, его бэкенд пересылает данные провайдеру моделей, а ответ возвращается по той же трубе. Обычно это подаётся как удобство -- не нужно настраивать API-ключ -- и нередко упаковывается в подписку с месячной квотой «ИИ-кредитов».

А теперь подумайте, что на самом деле путешествует по этой трубе. Diff -- это не метаданные. Это ваш исходный код: невыпущенная функциональность, ещё не развёрнутое исправление безопасности, учётные данные, которые коллега случайно положил в staging. Когда ИИ-запрос проходит через прокси на серверах производителя, инфраструктура этого производителя видит всё. Вы больше не доверяете только провайдеру моделей. Вы доверяете ещё и посреднику -- его настройкам логирования, его политике хранения данных, его субподрядчикам и тому, во что превратятся его условия после следующего поглощения.

Для ясности: мы не утверждаем, что какая-то конкретная компания плохо обращается с вашими diff. Проблема структурная. Каждая дополнительная сторона на пути -- это дополнительная сторона, которой нужно доверять, которую нужно проверять и которой нужно продолжать доверять со временем, -- и в большинстве случаев у вас нет никакой возможности это проверить. Если вы читали о том, почему GitSquid поставляется с нулевой телеметрией, вы уже знаете, что мы думаем о том, чтобы самим быть такой стороной.

Ответ GitSquid: принесите свой собственный ключ

GitSquid пошёл другим путём. Когда вы используете ИИ-функцию в GitSquid, запрос идёт напрямую с вашей машины к провайдеру, которого настроили вы. На пути нет серверов GitSquid -- не как политика, которую мы обещаем соблюдать, а как факт архитектуры: их просто не существует. Никакого прокси, никакой наценки на токены, никакого хранения данных посредником, потому что посредника нет.

Провайдер выбирается в Настройках → ИИ:

  • Anthropic Claude. Вставьте свой API-ключ -- и запросы идут из GitSquid прямо в Anthropic.
  • OpenAI. Та же схема: ваш ключ, ваш аккаунт, прямое соединение.
  • Claude Code. Если у вас уже установлен CLI Claude Code, GitSquid управляет им локально. Вставлять API-ключ вообще не нужно.
  • Gemini CLI. Добавлен в v2.7.7 и тоже не требует ключа: GitSquid переиспользует ваш существующий вход в Gemini CLI.
  • Любой пользовательский OpenAI-совместимый endpoint. Направьте GitSquid на любой сервер, говорящий на API OpenAI, -- включая локальные модели, работающие за OpenAI-совместимым сервером на вашей собственной машине. В такой конфигурации ваш diff вообще не покидает ваш компьютер.

С Anthropic, OpenAI и пользовательскими OpenAI-совместимыми провайдерами сгенерированный текст приходит потоком по мере появления, так что черновик можно читать прямо во время написания. Claude Code выдаёт результат одним блоком по завершении -- это ограничение CLI, а не GitSquid. В любом случае генерацию можно отменить: кнопка «Сгенерировать» превращается в «Отмена», пока запрос выполняется, а у функции объяснения есть собственная кнопка «Стоп». Ничто не продолжает работать у вас за спиной.

Ещё одна маленькая деталь, которая нам важна: каждый пункт меню и каждая кнопка в GitSquid, задействующие ИИ, помечены значком искры. Вы всегда знаете ещё до клика, отправит ли действие что-либо вашему ИИ-провайдеру.

Три ИИ-функции на практике

1. Генерация сообщений для commit

Положите изменения в staging, как обычно, и нажмите «Сгенерировать». ИИ читает diff из staging -- и только его -- и набрасывает сообщение для commit, которое его описывает. Вы можете отредактировать его, принять или выбросить и написать своё. Это черновик, а не указ: commit по-прежнему ваш.

2. ИИ-описания для pull request

В диалоге создания pull request есть кнопка «Сгенерировать с ИИ», которая потоком записывает структурированное описание -- Резюме, Изменения, План тестирования -- прямо в тело. Если в вашем репозитории есть PULL_REQUEST_TEMPLATE.md, GitSquid его уважает: ИИ заполняет шаблон вашей команды, а не сносит его собственным форматом.

3. ИИ-объяснение, где угодно

Кликните правой кнопкой по commit в графе, по заголовку hunk в diff или по любому файлу -- в staging или нет -- и попросите объяснение. Вы получите встроенный разбор того, что делает изменение. Это одинаково полезно для археологии («что на самом деле делал этот commit из 2023 года?»), для проверки собственной работы перед commit и для ориентирования в незнакомой кодовой базе.

Сколько это стоит на самом деле

Поскольку вы приносите собственный ключ, вы платите своему провайдеру напрямую -- и только за то, что используете. Одна генерация сообщения для commit отправляет один запрос размером примерно с ваш diff. По текущим ценам API это обычно доли цента. Мы намеренно не называем точных цифр: провайдеры меняют цены, модели различаются, и любое напечатанное здесь число рано или поздно станет неверным. Честный ответ -- лучший: загляните в прайс-лист своего провайдера, а затем в собственный счёт.

И в этом весь смысл. Каждый запрос появляется в вашем счёте, от вашего провайдера, без нашей наценки и без непрозрачного пакета «кредитов» посередине. Если вы используете пути Claude Code или Gemini CLI, вы переиспользуете инструменты и тарифы, за которые уже платите. А с локальной моделью за OpenAI-совместимым endpoint предельная стоимость одного сообщения для commit -- это примерно электричество, потраченное на его генерацию.

Ответы на вашем языке

Ещё одна вещь, которую голый API-ключ сам по себе не даст: Настройки → ИИ позволяют выбрать язык ответов для каждой ИИ-функции -- десять языков на выбор плюс «Как в приложении». Так что сообщения для commit и описания pull request могут быть на английском для международной команды, а ИИ-объяснения -- приходить на языке, на котором вы действительно думаете.

Ваш ключ, ваши данные, ваш счёт

ИИ-пакет -- генерация сообщений для commit, описания pull request и объяснения -- входит в GitSquid Pro за 49 EUR в год. Бесплатная версия покрывает повседневную работу с Git; Pro добавляет функции, снимающие с вас рутину. В обоих случаях архитектура одна и та же: аккаунт не требуется, нулевая телеметрия, и между вашим diff и вашим ИИ-провайдером нет серверов GitSquid -- потому что серверов GitSquid не существует вовсе.

Если хотите увидеть, как это выглядит на фоне остального рынка, наше сравнение телеметрии Git GUI разбирает, что популярные клиенты отправляют домой. А если предпочитаете просто попробовать: скачайте GitSquid, подключите свой ключ -- или свой CLI, или свою локальную модель -- и позвольте ИИ написать сообщение для commit, пока ваш diff остаётся строго между вами и вашим провайдером.