Skip to content

ЖУРНАЛ РЕШЕНИЙ · ПРАКТИКА

Как ввести практику журналирования решений в команде

Журнал решений - это не «ещё один документ для команды». Это конкретные правила: когда писать запись, а когда не нужно; как настроить так, чтобы AI-агент (Claude Code, Cursor, Codex) читал ваш контекст на старте сессии и не предлагал заново отвергнутые варианты; как выглядит день инженера, у которого журнал вписан в процесс - без перегруза и бюрократии.


Когда писать запись, а когда нет

Самая частая ошибка - пытаться записывать каждое решение. Это утомляет и быстро отбивает желание. Хорошее эмпирическое правило: запись стоит писать, если ответ «да» хотя бы на два из четырёх вопросов ниже.

ВОПРОС 01

Это решение влияет на код через 6+ месяцев?

Выбор библиотеки, схемы данных, протокола обмена - да. Исправление опечатки в логе - нет.

ВОПРОС 02

Контекст, в котором решение принято, не очевиден из кода?

Если код через год не позволит ответить «почему так» - нужна запись. Если код сам по себе говорит «потому что» - не нужна.

ВОПРОС 03

Было обсуждение с двумя или более жизнеспособными вариантами?

Спор в чате на десять сообщений - точно да. Решение «вместо if напишу switch» - нет.

ВОПРОС 04

Откатить это решение быстро и без боли невозможно?

Сменить переменную окружения - обратимо. Сменить базу данных - нет. Чем дороже откат, тем важнее запись.

Если «да» меньше двух - пропускайте. Запись «на всякий случай» хуже, чем её отсутствие: она занимает место, тратит время на написание и со временем становится шумом, в котором теряются важные записи.

Шкала глубины задачи - сколько и каких записей

Не все задачи требуют одинакового набора документов. Сложилась эмпирическая шкала из четырёх уровней - она хорошо коррелирует с риском и обратимостью задачи. На каждом уровне свой минимальный набор записей.

Уровень
Что писать
Примеры задач
01 · ТАКТИЧЕСКИЙ 1 файл, обратимо за час
Ничего. Просто код + сообщение коммита.
Опечатка в логе, переименование переменной, исправление округления.
02 · СТАНДАРТНЫЙ 1-3 дня, есть выбор
Документ продукта + черновик архитектурного решения.
Новая функция в существующем модуле, выбор библиотеки для одной задачи.
03 · ГЛУБОКИЙ 1-2 недели, необратимо
Документ продукта + спецификация + решение + доказательство замером.
Новый сервис, переход на другую базу данных, изменение схемы публичного API.
04 · КРИТИЧЕСКИЙ кросс-командное, стратегия
Группа документов (5-10 записей), включая отдельный обзор архитектуры.
Миграция с одной модели аутентификации на другую, выделение нового продукта из монолита.

На практике быстрее всего определить уровень по двум вопросам: «легко откатить?» и «затронут ли другие команды?». Если оба ответа «нет» - тактический. Если первый «да», второй «нет» - стандартный. И так далее. Подробный калькулятор уровня (с интерактивными слайдерами) - в одном из дальнейших уроков серии.


Типичный день инженера с журналом в процессе

Чтобы не оставаться в абстракции - реальный день. Из жизни команды из 6 человек, делающих B2B-продукт. Без привязки к конкретному инструменту: подойдёт любой способ хранения записей - папка в репо, собственный CLI, готовый продукт.

Накладные расходы по сравнению с «обычным» днём - около часа на заполнение записи и активацию решения. Возврат - отсутствие повторных обсуждений «почему так», бесплатный контекст для агента, автоматический триггер пересмотра через полгода.


Как AI-агент читает ваш контекст на старте сессии

Это самая важная часть для тех, кто кодит с AI-помощником. Без записей решений каждая новая сессия с Claude Code или Cursor начинается с пустого контекста: агент не знает, что у вас выбрана библиотека X, он каждый раз предлагает Y. С записями агент читает активные решения на старте и работает уже в правильных рамках.

Три способа подключения, от простого к продвинутому.

Способ 1 · Просто текстовые файлы в репозитории

Записи лежат в выделенном каталоге проекта как обычные markdown-файлы. Любой AI-агент, у которого есть доступ к файлам, может их прочитать. Достаточно одной строки в системной инструкции (типа CLAUDE.md, .cursorrules или эквивалент):

# CLAUDE.md или .cursorrules
Перед началом любой задачи прочитай файлы в каталоге docs/decisions/
со статусом active. Это активные архитектурные решения проекта.
Не предлагай варианты, которые явно записаны как отвергнутые.

Этого достаточно для 80% случаев. Не нужен ни плагин, ни специальная интеграция - агент сам подгрузит контекст из текстовых файлов.

Способ 2 · Через тулинг вашего агента

У современных агентов есть свои механизмы подключения внешнего контекста - Cursor Rules для Cursor, slash-commands и подключаемые инструменты в Claude Code, custom GPTs у OpenAI. Каждый из них может забирать записи решений по своей схеме: целиком, по запросу, по seman­ti­че­ско­му поиску. Если у инструмента есть свой механизм подключения данных - используйте его, он будет эффективнее, чем каждый раз читать файлы целиком.

Способ 3 · Гейты в процессе непрерывной интеграции

Самый строгий вариант: pull request не сливается, если затронуты файлы, для которых нет активного решения. Это не «бюрократия» - это защита от случайного обхода уже принятых ограничений. Реализуется обычным шагом в CI (GitHub Actions, GitLab CI, Buildkite - что используете), который сравнивает diff с каталогом решений и блокирует merge, если найдено расхождение.


Пять способов работы агента с записями

После подключения агент может делать одно из пяти. Конкретные сценарии - что вы можете попросить и что произойдёт.

01 · ЧИТАТЬ КОНТЕКСТ

«Какие активные решения связаны с модулем X?»

Агент возвращает список релевантных архитектурных решений с кратким описанием. Дальше он работает в их рамках, не пытаясь предложить отвергнутое.

02 · СОЗДАВАТЬ ЗАПИСИ

«Создай запись решения по обсуждению, которое мы сейчас ведём»

Агент собирает контекст из диалога, выписывает три рассмотренных варианта, предлагает условие пересмотра. Человек проверяет «отвергнутые альтернативы» - настоящие причины часто внутренние.

03 · ПРОВЕРЯТЬ СООТВЕТСТВИЕ

«Соответствует ли этот код активному решению X?»

Агент читает решение, читает код, говорит «соответствует» / «нарушает в части X». Полезно перед коммитом или код-ревью.

04 · ЛИНКОВАТЬ ДОКАЗАТЕЛЬСТВА

«Создай запись доказательства из результата теста и привяжи к решению X»

Агент берёт вывод бенчмарка или результат нагрузочного теста, оформляет как структурированное доказательство, привязывает к решению, обновляет оценку надёжности.

05 · ИНИЦИИРОВАТЬ ПЕРЕСМОТР

«Найди решения, у которых триггер пересмотра приближается»

Агент проверяет метрики (если подключены), сравнивает с условиями пересмотра записей, предлагает список «вот эти три решения пора посмотреть заново».


Что показать новому члену команды в первый день

Если у команды уже есть журнал решений, новый человек должен пройти четыре шага в первый день, чтобы войти в курс. Это занимает суммарно час.

  1. Открыть каталог решений и посмотреть структуру. Это покажет, какие типы записей живут в проекте.
  2. Бегло просмотреть активные записи - отсортировать по дате, прочитать 10-15 самых свежих. Не вчитываться, просто понять «о чём команда вообще принимает решения».
  3. Открыть граф связей (если у вас есть визуализация) или просто посмотреть, какие решения ссылаются друг на друга. Это покажет, как устроена «карта» проекта.
  4. Попробовать создать одну тестовую запись (например, заметку о наблюдении первого дня). Это снимает страх «а вдруг что-то сломаю».

После этих четырёх шагов человек знает: где живут решения, как их читать, как создавать новые, как они связаны. Дальше обучение происходит органически - на конкретных задачах.


Антипаттерны: чего не делать

Шесть типовых ошибок, которые я видел в командах, начавших вести журнал решений. Каждая снижает доверие к процессу и приводит к отказу от практики через 2-3 месяца.

НЕ ДЕЛАЙТЕ ТАК
  • Запись на каждый коммит. Если репозиторий за месяц получил 200 решений - это шум, в котором теряются настоящие. Четыре правила из первой секции этого урока - фильтр.
  • Запись задним числом «для галочки». Если решение уже принято и не обсуждалось при записи - это не запись решения, а отчёт о свершившемся. Отчёты тоже нужны, но это другой жанр.
  • Копирование шаблона без контекста. Шесть полей в каждой записи должны быть заполнены конкретно для этой задачи. «Контекст: типовая ситуация» - это не контекст.
  • Один человек пишет все записи. Если фиксация делегирована «секретарю команды» - записи будут писать формально, без знания внутренних причин. Каждый автор задачи пишет свои записи сам.
  • Запись без условия пересмотра. Шестая секция - самая важная. Без неё запись через год становится памятником, на который никто не смотрит.
  • Активация без доказательств. Если у решения нет ни одного связанного доказательства - это не решение, это намерение. Активируйте только после прогона хотя бы одного замера или явной аргументации.

С чем интегрируется и что не заменяет

Чтобы было понятно, во что встаёт журнал решений и что от него нужно оставить отдельным инструментам.

Хорошо интегрируется

Не заменяет


Куда дальше

После двух нулевых уроков - серия из двенадцати разборов конкретных частей процесса. Выбор зависит от того, что для вас сейчас актуальнее.