Я видел тему Сары Вудерс на прошлой неделе и сразу согласился с половиной из нее.

Вудерс, один из создателей MemGPT (теперь Letta), [утверждал, что память — это не плагин, а инструмент](https://x.com/sarahwooders/status/2040121230473457921). Система принимает невидимые решения, которые не может контролировать ни один внешний инструмент: что сохраняется при сжатии, как загружается контекст, может ли агент изменять свои собственные инструкции. «Просить подключить память к системе агента — это все равно, что просить подключить вождение к машине».

Рамку легко передать. Я продолжаю слышать, как линия ремня повторяется как устойчивый фон, а не как требование осмотреть. Отчасти это потому, что половина, с которой я согласен, верна.

## Невидимые решения реальны

[Claude Code имеет многоуровневую иерархию памяти, встроенную в систему](https://docs.anthropic.com/en/docs/claude-code/memory): CLAUDE.md, состояние сеанса, правила сжатия, внедрение системных сообщений. Когда [Claude Code сжимает](https://docs.anthropic.com/en/docs/claude-code/best-practices) разговор из 100 000 токенов в 20 000, система решает, что выживет. Ни один внешний инструмент не может повторить или отменить это решение.

Ахмед Кидвай, который создает [Виртуальный контекст](https://github.com/virtual-context/virtual-context), описал ту же структуру с места пользователя в [ИИ проводит большую часть своей жизни, читая о своей жизни](https://open.substack.com/pub/virtualcontext/p/ai-spends-most-of-its-life-reading). Каждый ход может воспроизвести весь поток, поэтому большая часть входных жетонов уходит на перечитывание того, что уже произошло. Когда окно заполняется, сжатие заменяет необработанную историю сводкой. Вы не получите постатейную квитанцию ​​о том, что исчезло.

В течение одного сеанса выбор системы управления в отношении того, что попадает в контекстное окно, что суммируется и что отбрасывается, является эффективной системой памяти. Вудерс прав в этом вопросе.

## Аргумент предполагает один жгут

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

Я не. Я использую Cursor в качестве основного интерфейса, Claude Code для конкретных задач, ChatGPT для разговоров и собственные скрипты для автоматизации. Это четыре ремня безопасности, каждый из которых принимает свои собственные невидимые решения о том, что следует запомнить.

Люди, с которыми я разговариваю и которые создают с помощью агентов, используют от трех до пяти инструментов. Каждый из них сжимает по-разному, загружает контекст по-разному, сохраняет состояние по-разному. Пользователь становится слоем синхронизации между всеми ними.

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

## Три проблемы, а не одна

Вудерс объединяет управление контекстными окнами, состояние сеанса и устойчивое состояние в одну концепцию, которую она называет «памятью». Они архитектурно различны.

**Управление контекстными окнами**: что сейчас помещается в подсказку, что сжимается, что видит модель на этом повороте. Это проблема ремня безопасности. Вудерс прав.

**Состояние сеанса**: сохраняется в ходе разговора. Это также проблема ремня безопасности.

**Надежное состояние**: сохраняется во всех сеансах, инструментах и ​​агентах с указанием происхождения и версий. Это инфраструктура, а не упряжь.

Ни один жгут не обеспечивает детерминированное, привязанное к схеме, кроссплатформенное состояние только для добавления с указанием источника. Управление контекстом рулит. Прочное состояние – это навигационные данные. Он информирует о вождении, но не принадлежит трансмиссии.

## Даже контекст может быть экстернализован

[Виртуальный контекст] Kidwai (https://github.com/virtual-context/virtual-context) — это прокси-сервер, который находится между вашим клиентом и вышестоящим API LLM. Клиент устанавливает контекстное окно на 20 миллионов токенов. Реальное окно модели — 200К. Виртуальный контекст сжимает, индексирует и перемещает страницы между ними. Полезная нагрузка Claude Code из 937 000 токенов с 52 цепочками инструментов сжимается до примерно 65 000 курируемого сигнала.

На [LongMemEval](https://github.com/virtual-context/virtual-context#benchmark-results) Virtual Context показал точность 95 % по сравнению с 33 % для Claude Sonnet 4.5 с полным необработанным контекстом за половину стоимости. Прокси-сервер работает с Claude Code, Cursor, OpenClaw или любым клиентом, который принимает базовый URL-адрес. VCATTACH позволяет двум клиентам совместно использовать одну и ту же сжатую базу знаний на разных платформах.

Механизм имеет значение. ВК не обходит жгут. Программа по-прежнему принимает собственные решения по сжатию и усечению и формирует запрос API. VC перехватывает запросы в нисходящем направлении через перенаправление базового URL-адреса. Когда программа усекает историю разговоров, VC обнаруживает это усечение и восстанавливает данные из своего собственного долговременного хранилища. То, что достигает модели, — это курируемое окно VC, а не необработанный вывод жгута.

Вудерс прав в том, что никакой внешний инструмент не может контролировать внутренние решения системы. Но прокси-сервер, находящийся между ремнями безопасности и API, может наблюдать за этими решениями и частично отменять их. Жгут отправляет 937 тыс. токенов после собственного уплотнения. VC отправляет модели 65 тысяч тщательно отобранных сигналов. Жгут по-прежнему запускает цикл инструмента и агента. Слой, который решает, что на самом деле видит модель, находится снаружи.

Остается три слоя, а не два. Жгут управляет агентом. Между обвязкой и API может располагаться дополнительный уровень управления контекстом. А под всем находится устойчивый уровень состояния, сохраняющий то, что истинно, независимо от того, как управляется контекст любого сеанса.

## Контроль против ценности

Внешний инструмент не может контролировать решения об уплотнении жгута. Истинный. Но вопрос не в том, контролирует ли уровень состояния уплотнение. Вопрос в том, представляет ли это ценность, которую не дает встроенная память подвески.

Большая часть встроенной памяти упряжи эфемерна. Letta является исключением: она намеренно сохраняет память между сеансами. Но даже память Летты специфична для инструмента, непереносима и недетерминирована. Агент решает, что и когда хранить с помощью вызовов инструментов, управляемых LLM, поэтому один и тот же диалог может создавать разные состояния памяти. Курсор не может его прочитать. Клод Код не может его прочитать. Уровень устойчивого состояния является кроссплатформенным, детерминированным, версионным и прослеживаемым до источника.

Вам не нужно контролировать привязь, чтобы быть ценным. Вам нужно пережить решения жгута. Устойчивое состояние, предназначенное только для добавления, сохраняется по замыслу. Когда жгут сжимает контекст, уровень состояния сохраняет полную запись. Когда вы завтра откроете другой инструмент, на уровне состояния будет то, что вы сохранили вчера.

## Запуск против транспорта

Николо Боски (Hindsight/Vectorize) [согласен с Вудерсом](https://x.com/nicoloboschi/status/2042145292632379598): «Использовать память через MCP и надеяться, что модель будет хранить и искать информацию в памяти, безнадежно». Обеспокоенность реальна. Если модели приходится решать, когда сохранять и извлекать данные, она может забыть о сохранении. Он может пропустить поиск, когда это важно.

Вместо MCP Hindsight использует [хуки](https://docs.anthropic.com/en/docs/claude-code/hooks): сценарии, которые автоматически запускаются при событиях жизненного цикла, таких как начало сеанса, приглашение на отправку или завершение работы инструмента. Ни один LLM не решает, увольнять ли их. Плагин Claude Code от Hindsight использует четыре перехватчика жизненного цикла для автоматического сохранения каждого разговора и автоматического вызова при каждом запросе. Оно работает.

Но этот аргумент объединяет две вещи: как запускается память и где она живет.

Хуки Hindsight вызывают Hindsight API. Они не пишут во встроенную память обвязки. Крючки являются спусковым крючком. Внешний сервер является хранилищем. Это разделение и составляет всю архитектуру. Хук, записывающий данные в родную память Клода Кода, унаследует те же ограничения: эфемерный, непереносимый, невидимый для Курсора завтра.

Хуки решают проблему триггера. Они не решают проблему хранения. Каждая долговечная система памяти нуждается и в том, и в другом.

Крючки широко, хотя и не повсеместно доступны. В Claude Code есть система плагинов с более чем 12 событиями. В Cursor есть файлooks.json с более чем 14 событиями в бета-версии. OpenCode имеет более 20 событий, включая контроль уплотнения и подсказку системы. В Кодексе имеются хуки сеансов и хуки уровня инструментов, находящиеся в стадии разработки. ChatGPT и веб-приложение Claude остаются только MCP. Компания Hindsight поставляет сервер MCP именно для таких случаев.

Ответ заключается в том, что хуки там, где они доступны, а MCP — где нет, оба записывают в один и тот же уровень устойчивого состояния под каждой обвязкой. «MCP безнадежен» — это утверждение о надежности срабатывания, а не о том, где должна находиться память.

## Слои дополняют друг друга

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

Управление контекстом и устойчивое состояние не конкурируют. Жгут управляет агентом и циклом инструментов. Контекстный уровень, встроенный или внешний, управляет тем, что модель видит на каждом этапе. Уровень состояния управляет тем, что верно для всех сеансов и инструментов. Ни один жгут или контекстный прокси не предлагает проверяемую истину, происхождение, детерминизм, проверку схемы или доступ к нескольким инструментам. Аргумент в пользу встроенной в жгуты памяти одновременно является аргументом в пользу общего уровня состояния под каждым жгутом.

## Что я строю

Я создаю [Neotoma](https://neotoma.io), слой структурированной памяти, который находится под любыми средствами: разрешение объектов, сроки, происхождение, детерминизм, кросс-платформенный доступ.

Эти темы изменили то, что я создаю дальше. Я рассматривал MCP как единственную поверхность интеграции. Теперь я добавляю хуки в качестве слоя расширения жизненного цикла. MCP остается основным интерфейсом агента.

Разделение намеренное. MCP владеет контрактом агента: инструкции загружаются один раз при запуске сеанса, инструменты структурированного хранения, которые агент вызывает с полной контекстуальной осведомленностью. Хуки владеют контрактом обвязки: событиями жизненного цикла, которые агент не контролирует. Перехватчик UserPromptSubmit автоматически извлекает соответствующие объекты до того, как агент увидит каждое приглашение. Хуки PostToolUse фиксируют каждое редактирование файла и команду оболочки как наблюдение. Перехватчик `Stop` сохраняет необработанный диалог, если собственное закрытие хранилища агента было пропущено. Крючок PreCompact отслеживает, что ремень безопасности собирается выбросить.

Результатом является уровень надежности ниже потолка качества MCP. Без хуков MCP работает так же, как и сегодня. Без MCP перехватчики обеспечивают необработанный захват наблюдений, но не извлечение структурированных сущностей. Оба вместе обеспечивают детерминированный поиск, пассивное наблюдение, осведомленность о уплотнении и восстановление после сбоя.

Это отличается от подхода Hindsight. Hindsight захватывает необработанные расшифровки с помощью перехватчиков, а затем запускает отдельный LLM на стороне сервера для извлечения сущностей. Это означает, что вторая модель определяет, что имеет значение, с дополнительными затратами и задержкой на каждую операцию. Neotoma использует агент извлечения объектов: та же модель, которая понимает диалог, выполняет извлечение с нулевыми предельными затратами на LLM. Хуки обеспечивают нижний уровень надежности, а не интеллекта.

Далее идут плагины для Claude Code, Cursor, OpenCode и Codex. Крючки записывают данные в Neotoma, а не во встроенную память подвески. Все они достигают одного и того же уровня устойчивого состояния с помощью перехватчиков, где они доступны, и MCP, где нет.

Вудерс прав в том, что у ремня есть контекст. Боски прав, что крючки превосходят MCP по надежности срабатывания. Кидвай показывает, что даже управление контекстом может быть реализовано во внешнем виде. Вопрос, который ни один из них не затрагивает, заключается в том, кому принадлежит истина, когда вы используете пять упряжек. Этот ответ должен жить под всеми ними.