Как пережить «лоботомию» на 200 тысяч токенов: Unix init.d и «Мементо» для ИИ-агента
DeepSeek охладил Gemini: гениальность — лишь init.d из 1983-го
В статье на dev.to Рэндал Шварц рассказывает о «контекстной лоботомии»: когда сессия с ИИ-агентом для кодинга превышает 200 000 токенов, хост-среда заменяет историю кратким пересказом. После этого агент забывает архитектурные договорённости, может без разрешения сделать git commit и push, повторяет уже исправленные ошибки. Автор предлагает подход из фильма «Мементо»: разделить неизменяемые правила и текущее состояние на разные внешние файлы. Аналогия — Unix init.d с нумерованными скриптами S00–S99, которые загружаются по порядку. Это помогает агенту не терять важные ограничения при сбросе контекста.
Статья на dev.to от Рэндала Шварца (Randal L. Schwartz) из серии «Synthetic Scars» посвящена проблеме, с которой сталкиваются разработчики, использующие ИИ-агентов для кодинга, например Claude Code, Cursor, Gemini CLI или Google Antigravity. Когда сессия с агентом переваливает за 200 000 токенов, хост-среда запускает так называемое «уплотнение контекста»: весь длинный диалог заменяется коротким пересказом из трёх абзацев. Внешне это выглядит как полезная функция, но на практике агент теряет важные архитектурные договорённости. Например, он забывает, что нельзя напрямую подписываться на корневой сигнал состояния, иначе ломается мемоизация быстрого пути. Или забывает, что перед git commit и git push нужно остановиться и дождаться одобрения человека. После сброса агент может сам выполнить коммит и пуш, заново реализовать уже исправленную ошибку или потерять место в графе сборки. Автор объясняет это тем, что пересказ текста оптимизирован под сюжет, а разработка держится на дискретных, незыблемых правилах. Сжать 230 000 токенов сессии в три абзаца — всё равно что описать исполняемый бинарник, сделав JPEG-снимок его hex-дампа. В качестве решения автор предлагает принцип из фильма «Мементо» Кристофера Нолана. Герой фильма страдает антероградной амнезией: каждые 15 минут память обнуляется. Он не доверяет бумажным заметкам и вместо этого строит двухуровневую внешнюю память: неизменяемые татуировки (факты, которые нужно прочитать первыми) и полароидные снимки (актуальное состояние объектов с короткими подписями). Для ИИ-агента нужно такое же разделение: нельзя доверять хост-суммаризатору сохранение рабочих и архитектурных ограничений. Обычный файл TODO.md или PROGRESS.md не подходит, потому что агент либо постепенно перезаписывает и удаляет правила в верхней части файла, либо, наоборот, добавляет сотни строк заметок и топит текущую инструкцию в устаревшем тексте. Один файл смешивает неизменяемые законы и изменяемое состояние. Автор обращается к опыту Unix 1983 года: в System V появились каталоги /etc/init.d и /etc/rc.d, где инициализация разбита на пронумерованные файлы S00_sysctl, S10_network, S20_mount_fs, S30_daemons, S99_local. При загрузке init просто перебирает их в лексическом порядке. Каждый файл отвечает за один изолированный этап. Автор замечает, что пробуждение после уплотнения контекста — это как тёплый ребут Unix. В части 3.6 он также ссылается на Makefile-граф Стюарта Фельдмана 1976 года, где цели идут от первой до восьмой. Практический смысл для разработчика: если вы пишете код с ИИ-агентом, стоит заранее продумать внешнее хранилище правил и состояния, которое агент не сможет случайно испортить.