- Дата публикации
Contextual Commits: как превратить git‑историю в память для ИИ и команды
Что появилось / что изменилось
Появилось открытое текстовое соглашение для Git — Contextual Commits. Оно добавляет к привычным Conventional Commits ещё один слой: фиксирует не только что изменилось в коде, но и зачем.
Ключевые изменения:
- В теле коммита появляется структурированный список строк‑действий:
intent(...),decision(...),rejected(...),constraint(...),learned(...). - Каждая строка описывает то, чего нет в diff: мотивацию, альтернативы, ограничения, выводы.
- Автор использует это как внутренний стандарт и обучает код‑агентов (например, Claude Code) коммитить по этому формату через skill.
- Поверх этого стандарта есть утилита‑skill «recall»: она ищет по истории контекстуальных коммитов и возвращает краткий «branch brief» или результаты по фильтру (по scope или по паре action+scope).
- В обычном рабочем процессе почти ничего не меняется: разработчик по‑прежнему говорит агенту «commit», но теперь тот автоматически генерирует содержательное тело коммита.
Цифр производительности, стоимости или лимитов контекста автор не приводит. Главное изменение — не в скорости, а в качестве и повторном использовании контекста разработки.
Как это работает
Базовая идея простая: ветка = сессия, история коммитов = ход рассуждений, а тело коммита — место, где можно формализовать «почему».
Структура примера:
feat(auth): implement Google OAuth provider
intent(auth): users need social login, starting with Google before GitHub and Apple
decision(oauth-library): passport.js over auth0-sdk — better multi-provider flexibility
rejected(oauth-library): auth0-sdk locks us into their session model
constraint(callback-routes): must follow /api/auth/callback/:provider pattern
learned(passport-google): requires explicit offline_access scope for refresh tokens
Под капотом ничего магического:
- Заголовок коммита остаётся в формате Conventional Commits (
feat(scope): subject) и описывает WHAT. - Тело — это плоский список строк
action(scope): описание. Каждоеaction— тип сигнала:intent— намерение, бизнес‑контекст;decision— сделанный выбор и причина;rejected— рассмотренная и отброшенная альтернатива;constraint— техническое или продуктовое ограничение;learned— новое знание, которое всплыло в процессе.
- Агенту задают эту мини‑спецификацию через skill: когда разработчик просит «commit», агент не только пишет заголовок, но и разворачивает свои рассуждения в теле по этим типам.
- Skill «recall» поверх Git‑истории парсит такие коммиты и даёт:
- краткое резюме ветки без аргументов;
- поиск по scope (
auth,billingи т.п.); - поиск по комбинации
action+scope— например, всеdecision(oauth-library).
Важно: автор пробовал автоматизировать захват контекста через Git‑хуки и интеграции с Claude, но без структуры качество резко падало. Contextual Commits решают проблему не автоматизацией любой ценой, а предсказуемым форматом для того, что и так уже существует — истории коммитов.
Что это значит для вас
Если вы активно используете код‑агентов и Git, Contextual Commits могут заменить разрозненные заметки, wiki и хаотичные комментарии в PR.
Где это особенно полезно:
- Долгие фичевые ветки. Ветка превращается в осмысленный лог решений. Через месяц можно понять, почему выбрали именно эту библиотеку, а не соседнюю.
- Работа с ИИ‑ассистентами. Агенту не нужно каждый раз «заливать» весь контекст проекта. Он может сам дернуть
recall, чтобы восстановить мотивацию прошлых изменений. - Онбординг в проект. Новому разработчику проще читать
intent/decision/rejected, чем реконструировать замысел по diff и устаревшим документам. - Код‑ревью и откат решений. Легче увидеть, какие альтернативы уже рассматривали, и не повторять одни и те же дискуссии.
Где подход может не зайти:
- Очень мелкие скрипты и pet‑проекты, где история не важна и всё держится в голове.
- Команды, которые категорически против любых дополнительных требований к формату коммитов.
- Проекты без ИИ‑ассистентов: выгода остаётся, но меньше, потому что никто автоматически не «вспоминает» этот контекст.
Практический совет по внедрению:
- Оставьте текущий стиль Conventional Commits, не ломайте заголовки.
- Добавьте один‑два action‑типа, с которых начнёте, например
intentиdecision. - Попросите код‑агента генерировать тело коммита по этому шаблону и правьте только откровенные промахи.
- Когда накопится история, имеет смысл подключить утилиту‑поиск по коммитам по тем же тегам.
Технология не привязана к конкретному провайдеру ИИ и не требует VPN: это текстовый стандарт поверх Git. Инструменты вокруг него автор пока описывает как внутренние skills для агентов, но сам формат уже открыт и его можно реализовать в любом инструменте.
Место на рынке
Contextual Commits живут в том же пространстве, что и Conventional Commits, Git‑хуки, документация в Notion и встроенная память код‑агентов вроде Claude Code или GitHub Copilot.
Ключевое отличие от Conventional Commits — фокус не на релизном менеджменте и автогенерации changelog, а на структурированной фиксации причин изменений прямо в истории Git.
В отличие от Git‑хуков, которые просто запускают произвольные скрипты, Contextual Commits предлагают именно текстовый протокол: что писать в тело и как это потом читать. Хуки можно использовать как транспорт, но не как замену формату.
По сравнению с отдельными документами и wiki, формат выигрывает тем, что привязан к конкретному коммиту и ветке. Контекст не теряется в общей базе знаний и автоматически идёт вместе с кодом.
Сравнивать по скорости с GPT-4o, Claude 3.5 или другими моделями тут бессмысленно: Contextual Commits не конкурируют с ними, а служат источником более качественного контекста. Как именно это скажется на качестве ответов и скорости работы агентов, автор описывает на уровне опыта, без числовых бенчмарков.
В итоге Contextual Commits занимают нишу текстового стандарта поверх Git, который помогает и людям, и ИИ‑ассистентам восстанавливать ход мысли по истории коммитов, а не только по diff.