Устаревшая документация опаснее её отсутствия — она формирует ложный контекст для 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 проходит уровни, и перепрыгивать их — ошибка:
- Ставишь задачу агенту, ревьюишь результат.
- Когда ревью проходит без правок, а CI ловит регрессии — даёшь агенту автономию.
- Когда автономный цикл стабилен — строишь pipeline.
Типичная ошибка: пытаться автоматизировать полный цикл «гипотеза → генерация → деплой», когда CI не блокирует merge при сломанных тестах. Каждый уровень требует предпосылок. Без них следующий создаёт лишь иллюзию прогресса.
Что это стоило
Создание workbench — около дня. Подключение проектов и скрипты валидации — ещё день. Ретроспективные ADR — час. Итого: два дня.
Окупаемость — в первую неделю. Каждая LLM-сессия стартует на 3–10 минут быстрее. При нескольких сессиях в день это даёт существенную экономию. Главное — качество: агент принимает решения на основе актуального контекста, а не того, что было актуально два месяца назад.
Вместо заключения
Workbench — не серебряная пуля. Это дисциплина, обёрнутая в структуру папок и несколько bash-скриптов. Агент не станет умнее от наличия документации. Он станет умнее от того, что она актуальна, структурирована и предсказуема.
Но сама по себе эта дисциплина — ускоритель, не результат. Инвестировать в контекст стоит ровно в той мере, в которой это ускоряет работу, приносящую практический результат. Не больше.