## Сближение, которое никто не планировал

Манус — это ИИ-агент, ориентированный на потребителя. Клод Код — помощник по программированию в Anthropic. OpenClaw — это персональный ИИ с открытым исходным кодом. Разные команды, разные базы кода, разные бизнес-модели.

Все три хранят память агента в файлах уценки.

Манус использует контрольный список todo.md, который перезаписывается после каждого шага. OpenClaw использует MEMORY.md плюс датированные файлы в каталоге Memory/. Claude Code использует иерархические файлы CLAUDE.md, ограниченные каталогами, с ограничением в 200 строк всегда загружаемого контента.

Ни один из них не копировал других. [Яохуа Чен из сообщества DEV](https://dev.to/imaginex/ai-agent-memory-management-when-markdown-files-are-all-you-need-5ekk) назвал это «конвергентной эволюцией». Когда три независимые системы с разными ограничениями достигают одной и той же архитектуры, архитектура говорит вам кое-что о проблеме.

Майкл Лэнхэм [задокументировал это сближение](https://medium.com/@Micheal-Lanham/the-markdown-file-that-beat-a-50m-vector-database-38e1f5113cbe) в марте 2026 года. Его анализ всех трех систем представляет собой наиболее тщательное публичное сравнение архитектур памяти агентов-производителей, которые я когда-либо видел. Эти данные заслуживают прямого взаимодействия.

## Почему файлы являются отправной точкой по умолчанию

Очевидное объяснение – простота. Файлы удобны для чтения, отслеживаются с помощью git и не требуют инфраструктуры. Верно, но неполно.

Более глубокая причина – экономика магистратуры.

Соучредитель Manus Ичао «Пик» Цзи опубликовал цифры. Манус обрабатывает 100 входных токенов на каждый 1 выходной токен. На Claude Sonnet кэшированные токены стоят примерно 0,30 доллара за миллион. Некэшированные токены стоят 3 доллара за миллион. Этот 10-кратный разброс означает, что затраты на вводимые ресурсы доминируют. Все, что увеличивает вероятность попадания в KV-кэш, экономит реальные деньги.

Файловая память представляет собой стабильный, предсказуемый текст, который хорошо сочетается с префиксами KV-кэша. Контекст только для добавления, который редко меняется между вызовами, означает, что модель может повторно использовать кэшированные вычисления. Система RAG на основе базы данных, которая каждый раз собирает различные фрагменты контекста, не позволяет выполнить эту оптимизацию.

Шаблон Мануса `todo.md` является самым ярким примером. Агент переписывает контрольный список после каждого шага. При этом текущий план помещается в самую последнюю позицию контекстного окна. Информация в середине длинного контекста игнорируется. Недавно переписанный файл плана в конце контекста исправляет это без инфраструктуры поиска.

Экономический аргумент выходит за рамки Мануса. Код Клода ограничивает всегда загружаемую память 200 строками, поскольку файлы памяти потребляют токены каждый сеанс. Ограничение не является хранилищем. Это бюджет внимания. Файлы позволяют вам контролировать то, что видит модель и где она появляется в контексте.

Это не случайный выбор. Это экономичная архитектура.

## Где файлы ломаются

Статья Лэнхэма честно описывает виды отказов. Эта честность — самая ценная часть анализа.

**Контекстное ограничение бюджета.** Клод Код предупреждает, что большие файлы CLAUDE.md снижают соответствие модели. Файлы работают до тех пор, пока не станут раздутыми и внутренне противоречивыми. Ограничение в 200 строк — это прагматичное решение, а не решение. По мере масштабирования использования агентов файл разрастается, противоречит сам себе, и никто не знает, какая версия факта является актуальной.

**Параллелизм.** Несколько агентов, записывающих данные в один и тот же файл памяти, повреждены. Лэнхэм прямо заявляет об этом: «В тот момент, когда нескольким агентам или пользователям необходимо иметь доступ к одной и той же памяти, одновременная запись файлов может привести к повреждению данных». Потолок для одного агента реален. Большинство агентских рабочих процессов [не останутся одноагентными](/posts/when-agents-share-state-everything-breaks) навсегда.

**Нет управления версиями.** Файлы перезаписываются. Сжатие памяти OpenClaw запускает тихий поворот агента, который записывает долговременные воспоминания перед усечением. Что было в файле до сжатия? Неизвестный. Если в сжатой версии отсутствовал факт, он исчез. Нет журнала наблюдений. Никакого отката.

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

**Нет решения об организации.** «Acme Corp» на одном заседании и «ACME CORP» на следующем. Агент каждый раз повторно выводит личность из контекстного окна. Нет стабильных идентификаторов. Никаких правил слияния. Никаких канонических сущностей. Every session is session-scoped inference.

**Нет ограничений схемы.** Любой агент или инструмент может записывать в файл памяти что угодно. Никакой проверки. Никакой проверки типа. Никакого принуждения к тому, что должна содержать запись в памяти. Bad writes propagate as truth.

Эти неудачи не являются гипотетическими. Они документируются командами, создающими эти системы. Они являются операционным потолком файловой памяти.

## The gap in the equilibrium

Лэнхэм предлагает «равновесную архитектуру» с четырьмя уровнями. Files as primary interface. Aggressive offloading to disk. Производные слои поиска (векторный индекс по файлам). Четкая эскалация в базы данных, когда этого требуют параллелизм и корректность.

The first three layers are well-documented. Четвертое оставлено в качестве упражнения для читателя.

«Эскалация в базу данных» предполагает, что база данных решает проблемы целостности. По умолчанию Postgres не предоставляет версионные наблюдения. It does not give you provenance chains. Он не дает вам детерминированного разрешения объектов в документах. Он не дает вам ограничений схемы для состояния, написанного агентом. Переход из файла уценки в таблицу базы данных не решает проблему «отсутствия управления версиями». It solves "no concurrent access." Those are different problems.

Равновесие имеет разрыв между третьим и четвертым слоями. Между «файлами уценки, которые работают для одного агента» и «полной инфраструктурой базы данных» отсутствует слой. Structured state with integrity guarantees. No custom database schema required.

OpenClaw's architecture hints at this. Its hybrid retrieval, sqlite-vec with configurable vector/text weighting, temporal decay, MMR diversification, is more sophisticated than simple file search. Но он по-прежнему рассматривает файлы уценки как источник истины. Индекс — это оптимизация чтения, а не уровень целостности состояния.

Отсутствующие примитивы — это те же самые, которые я обнаружил [запуская свой собственный агентный стек](/posts/agentic-search-and-the-truth-layer):

- **Версии наблюдений.** Каждая запись добавляется, ничего не перезаписывается. Reconstruct state at any point in time.
- **Происхождение.** Каждый факт можно проследить до источника, временной метки и агента или человека, который его написал.
- **Детерминированное разрешение объектов.** Канонические идентификаторы основаны на стабильных правилах, а не на выводах для каждого сеанса.
- **Schema constraints.** Validation on writes. Bad data rejected before it enters the store.

These are not database features. They are state integrity features. You can build them on top of a database. Postgres не предоставит их вам из коробки. И вы вообще не сможете получить их из файла уценки.

## Files are the real incumbent

Самый важный стратегический вывод из анализа Лэнхэма касается не файлов, а баз данных. Речь идет о том, как выглядит реальная конкурентная среда.

Компании, занимающиеся инфраструктурой памяти, собрали десятки миллионов долларов, пытаясь решить проблемы с поиском данных. [Mem0](https://mem0.ai) raised $24M. [Letta](https://www.letta.com) закрыла посевное предложение на сумму 10 миллионов долларов при оценке в 70 миллионов долларов. Проект [Zep](https://www.getzep.com) [Graphiti](https://github.com/getzep/graphiti) преодолел 20 тысяч звезд GitHub. [MemPalace](https://github.com/MemPalace/mempalace) набрал 46 тысяч звезд за первые две недели благодаря подходу, основанному на локальном и дословном хранении. Они решают реальные проблемы: надежность при развертывании, персонализация, извлечение в большом масштабе и структурированный отзыв.

Но системы, обрабатывающие большинство взаимодействий агентов, не используют векторные базы данных в качестве памяти. They are using text files. Производственные данные трех платформ стоимостью в миллиарды долларов подтверждают, что настоящим дефолтом является не существующий продукт базы данных. Это файл.

This changes the displacement story. Путь обновления лежит не от векторных баз данных к чему-то лучшему. It is from markdown files to structured state. Люди, которым нужны государственные гарантии целостности, в настоящее время не используют Mem0 или Zep. They are currently writing to `MEMORY.md`.

## Migration, not replacement

Заключительный совет Лэнхэма верен по сути: «Начните с файла Markdown. Вы всегда можете добавить базу данных позже». Файлы — это рациональная стартовая архитектура. Экономика их поддерживает. Возможность проверки реальная. The simplicity matters.

Вопрос в том, как выглядит «потом».

Я создаю [Neotoma](https://github.com/markmhendrickson/neotoma) как путь обновления. Структурированное состояние с гарантиями целостности файлов: отсутствие версий, происхождения, разрешения объектов, ограничений схемы.

Вопрос экономической эффективности имеет значение. Если путь обновления приносит в жертву экономику KV-кэша, которая сделала файлы рациональными, это не настоящее обновление. Путь чтения Neotoma разработан с учетом этого ограничения. Агенты получают доступ к нему через MCP. Ответ представляет собой структурированный текст, введенный в контекстное окно, в том же формате, который модель увидит при чтении файла. Снимки сущностей стабильны между вызовами. Один и тот же объект, запрошенный дважды, возвращает один и тот же текст, если только наблюдение не изменило его. Стабильный текст означает стабильные последовательности токенов. Стабильные последовательности токенов означают попадания в KV-кэш.

Путь записи — это то, где экономика различается и где она должна быть. Запись наблюдения в структурированное хранилище с проверкой схемы стоит дороже, чем добавление строки в файл уценки. Эти накладные расходы — это цена управления версиями, происхождением и обнаружением конфликтов. Вопрос в том, стоит ли платить эти накладные расходы. Если вам никогда не приходилось отвечать на вопросы «что мой агент знал в прошлый вторник» или «какие записи повредили эту сущность», то нет. Markdown is correct. Если вам нужны были эти ответы, но вы не смогли их получить, стоимость пути записи — самая дешевая часть проблемы.

История миграции проста. Вы начали с MEMORY.md, потому что это правильный вариант по умолчанию. Вы достигаете потолка, когда вам нужно управление версиями, одновременный доступ, происхождение или разрешение сущностей между сеансами. Следующий шаг — это не «настройка Postgres и создание собственной схемы». Это структурированный уровень, который дает вам эти гарантии, сохраняя при этом то, что работало с файлами: возможность проверки, простоту, локальное выполнение операций.

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