Как не дать базе знаний устареть

Как не дать базе знаний устареть

Устаревшая документация опаснее её отсутствия — она формирует ложный контекст для LLM. Агент доверяет тому, что видит. В результате: garbage in — garbage out, только мусор выглядит как аккуратный markdown.

Проблема: энтропия документации

В предыдущей статье описывалась централизованная база знаний — workbench, подключаемая ко второму корню IDE. Она включает архитектуру, реестр, ADR, иерархию правил. Но любая документация начинает устаревать с момента создания.

При десятках параллельно развивающихся проектов каждое изменение делает часть знаний неактуальной. Стратегический план ссылается на устаревшую версию сервиса. Реестр показывает устаревший статус. Агент воспринимает это как истину и действует по карте, не соответствующей реальности. Отсюда — ошибки, которых можно было избежать.

Проблема не в недостатке дисциплины, а в масштабе. Сотни документов, десятки проектов, непрерывные изменения. Ручное обновление не масштабируется. Нужны два механизма: автоматическое обнаружение устаревания и поведенческие правила, не дающие энтропии накапливаться.

Переход к LLM-разработке напоминает переход с механической коробки передач на электромобиль с автопилотом. Технические детали перестают быть узким местом. На первый план выходит методология: организация процесса, верификация, управление контекстом. Эта статья — о гигиене контекста: как поддерживать базу знаний в состоянии, которому LLM может доверять.

Автоматические проверки

Простой скрипт валидации, запускаемый вручную или в CI, проверяет три аспекта:

  • Целостность внутренних ссылок — не ведут ли они в никуда.
  • Свежесть ключевых документов — по дате последнего обновления (порог — 60 дней).
  • Покрытие — есть ли у всех проектов workspace-файл, через который агент получает доступ к документации.

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

Проверка свежести не требует переписывания документа — достаточно ревизии: проверить версии, статусы, зависимости, обновить дату. Это занимает минуты, но возвращает документу доверие.

Другой скрипт агрегирует TODO-задачи из всех markdown-файлов. Без агрегации нет единой точки для отслеживания задач по деплою, CI или проектам. Реализация — два bash-скрипта на ~300 строк, исходники доступны на GitHub.

Жизненный цикл документов

Документы устаревают по-разному. Стратегический план обновляется еженедельно. Протокол — при изменениях. Post-mortem инцидента — никогда, и это нормально.

Чтобы агент отличал актуальное от устаревшего, вводится четвёрка статусов: active, reference, draft, archived. Агент не различает свежий план и трёхмесячный артефакт, если оба лежат в одной папке без метаданных. Явный статус и дата в заголовке дают ему ориентир.

Архивирование — не удаление. Документ перемещается в подкаталог archive/. Он остаётся доступен, но не смешивается с актуальными. Git history не заменяет это: в истории документ невидим для агента без целенаправленного поиска, а в archive/ — видим и помечен.

Дисциплина в cursor rules

Инструменты обнаруживают проблему, но не решают её. Решает — поведение. В глобальных cursor rules закреплены три принципа, выросшие из реальных ошибок.

  • Обновление документации после завершения фазы — агент обновляет статусы, метрики, бэклоги и выдаёт список оставшихся задач. Без этого знания остаются в прошлом, и следующая сессия стартует с устаревшим контекстом.
  • Формирование continuation prompt — при приближении к лимиту контекста агент не останавливается, а передаёт: что сделано, текущее состояние, следующие шаги. Новая сессия продолжает с места остановки.
  • Обновление планов в той же сессии — при любом изменении. Устаревший план — это отравленный контекст, даже если он выглядит аккуратно.

Ловушки мета-оптимизации

Описанные практики — валидация, жизненные циклы, дисциплина — могут создать иллюзию процесса. Но здесь кроется главный анти-паттерн solo-разработки с LLM: оптимизировать процесс вместо разработки.

LLM делает автоматизацию дешёвой. Скрипт — за минуты. Документация процесса — за минуты. Соблазн автоматизировать всё — огромен. И он убивает продуктивность.

Примеры:

  • Месяцы уходят на оркестратор микросервисов, хотя ни одного сервиса ещё нет в production.
  • Десять документов описывают архитектуру фичи, но в коде — ноль.
  • Три дня уходят на типизацию, вместо того чтобы выкатить первую версию.

LLM придаёт убедительную форму любой идее. План, написанный с его помощью, выглядит как работа. Инфраструктура — как прогресс. Но отличить деятельность от результата становится сложнее.

Ещё одна ловушка — переоценка ROI автоматизации. Десять часов на скрипт, который будет использован пять раз. Формально: экономия 50 минут × 5 = 250 минут. Инвестиции — 600 минут. Итог: 0.42x. Потрачено больше, чем сэкономлено. Люди систематически завышают частоту использования и занижают стоимость разработки.

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

Дистанция от результата

Ориентир — иерархия близости к практическому результату:

  • Результат — работающий продукт, приносящий пользу.
  • Опорные системы — staging, мониторинг, CI/CD.
  • Ускорители — типизация, тесты, cursor rules, workbench.
  • Мета-ускорители — локальный LLM-кластер, автоматизация workflow.
  • Мета-уровень — рефлексия, переосмысление подхода.

Последний уровень двойственен. Большая часть времени здесь — чистые потери: оптимизация оптимизации. Но именно здесь рождаются прорывные идеи. Version control, CI/CD, TDD — всё это начиналось как мета-мета.

Опасность не в посещении этого уровня, а в застое на нём. Ориентир: не более 30% времени на уровень выше текущего. Если больше половины времени уходит на ускорители и мета-ускорители — это тревожный сигнал.

Workbench — ускоритель. Cursor rules — ускоритель. Эта статья — мета-мета. Она может помочь кому-то пересмотреть подход. Но прямо сейчас она не приближает ни одну задачу в production. Однако делиться опытом — тоже ценность: оформленное знание экономит другим месяцы проб и ошибок.

Зрелость автоматизации

Автоматизация с LLM проходит уровни, и перепрыгивать их — ошибка:

  1. Ставишь задачу агенту, ревьюишь результат.
  2. Когда ревью проходит без правок, а CI ловит регрессии — даёшь агенту автономию.
  3. Когда автономный цикл стабилен — строишь pipeline.

Типичная ошибка: пытаться автоматизировать полный цикл «гипотеза → генерация → деплой», когда CI не блокирует merge при сломанных тестах. Каждый уровень требует предпосылок. Без них следующий создаёт лишь иллюзию прогресса.

Что это стоило

Создание workbench — около дня. Подключение проектов и скрипты валидации — ещё день. Ретроспективные ADR — час. Итого: два дня.

Окупаемость — в первую неделю. Каждая LLM-сессия стартует на 3–10 минут быстрее. При нескольких сессиях в день это даёт существенную экономию. Главное — качество: агент принимает решения на основе актуального контекста, а не того, что было актуально два месяца назад.

Вместо заключения

Workbench — не серебряная пуля. Это дисциплина, обёрнутая в структуру папок и несколько bash-скриптов. Агент не станет умнее от наличия документации. Он станет умнее от того, что она актуальна, структурирована и предсказуема.

Но сама по себе эта дисциплина — ускоритель, не результат. Инвестировать в контекст стоит ровно в той мере, в которой это ускоряет работу, приносящую практический результат. Не больше.

Читать оригинал