AI и агенты11 мин чтения

Память для Claude Code и Codex: holographic-memory и agent-dreaming

Holographic и dreaming теперь не только для Hermes: общая локальная память для Claude Code и Codex, ночная проверка фактов, установка и перенос того, что агенты уже помнят.

Память для Claude Code и Codex: holographic-memory и agent-dreaming
Содержание

27 октября на AI-вторнике в Паттайе я час рассказывал, как устроена память Hermes Agent: плагин holographic хранит факты, скилл dreaming по ночам наводит в них порядок. Под конец, в вопросах из зала, меня спросили: а в Claude Code это заработает? А в Codex? А в других агентах?

Честный ответ тогда был «нет». Оба плагина написаны под Hermes и опираются на его ядро: на его хуки, его cron, его формат памяти. Вынуть их оттуда и поставить в другой агент было нельзя. Но вопрос засел. Я сам каждый день работаю в Claude Code и Codex, и у каждого из них своя память, которая ничего не знает о памяти соседа. Почему бы не сделать универсальные версии?

Через три дня после лекции появились два открытых репозитория: holographic-memory и agent-dreaming. На 31 октября это версии 0.8.1 и 0.6.0, обе под лицензией MIT. Ниже — что они умеют, как работают в паре, как их поставить и как забрать в новую память то, что агенты уже о вас знают.

Зачем агентам общая память

Сразу уточню, о каких программах речь. Claude Code — и в терминале, и в приложении Claude для компьютера. Codex — и Codex CLI в терминале, и приложение Codex: оно берёт настройки из того же места, поэтому память, установленная для Codex, появляется в нём без отдельной установки. Я проверил это у себя: в приложении Codex нужные факты сами приходят перед сообщением, а его сервер памяти работает с той же базой, что и Claude Code.

У Claude Code есть автопамять: заметки в Markdown, свои для каждого проекта. У Codex — сводка memory_summary.md, которую он составляет сам. Обе системы работают, но живут порознь. Сказал Claude Code, что сервер в часовом поясе Бангкока, — Codex об этом не узнает. Плюс у заметок Claude Code нет истории: если факт изменился, старый текст просто исчезает, и уже не спросишь, что было верно месяц назад.

Holographic в Hermes эти задачи решал: база фактов с историей, доверием и поиском, которая сама подаёт агенту нужное перед каждым сообщением. Оставалось научить её разговаривать с другими агентами.

holographic-memory: одна база на все агенты

Движок взят из плагина holographic для Hermes и теперь развивается отдельно, со своими тестами — около 2300 только на движок. База — обычный файл SQLite на вашем компьютере, по умолчанию ~/.holographic/memory_store.db. Без API-ключа, без сети, без вызовов моделей. Факт, сохранённый в Claude Code, знает и Codex: база одна на всех. Если нужно, её можно разделить по проектам. Сохраняет агент по умолчанию не всё подряд, а то, что вы попросили запомнить или на что согласились.

Подключается память двумя способами. Первый — хук, то есть небольшая программа, которую агент сам запускает на каждом шаге: перед каждым вашим сообщением короткий процесс находит относящиеся к нему факты и кладёт их в контекст с пометкой, что это данные, а не инструкции. Обычно это до пяти фактов, совпадающих со словами сообщения в любой форме, плюс до двух о человеке или вещи, которую вы назвали. Факт, уже показанный в этой сессии, следующие шесть ходов не повторяется, а «ок, спасибо» не стоит ни одного токена. Второй — MCP-сервер: через него агент получает двадцать три команды для работы с базой — сохранить, найти, изменить, слить дубли, забыть, выгрузить.

Архитектура holographic-memory: Claude Code и Codex обращаются к одной локальной базе через хук и MCP-сервер

Самое ценное, что переехало из Hermes, — отношение к истории. Каждая правка — датированная версия, поэтому на вопрос «что было верно 1 октября» есть ответ. Изменилось в жизни — memory_change, старый текст остаётся прошлым. Было ошибкой — memory_correct, неверный текст в прошлое не попадает. Перестало быть правдой — memory_end. Стирает факт целиком, с историей, только memory_forget, и только когда вы об этом просите.

Поиск понимает 18 языков, а русский — с падежами имён: «расскажи про Иру» найдёт Иру, «Рою яму» останется глаголом, а не человеком по имени Рой. Текст, похожий на пароль, ключ или инструкцию агенту, база не сохранит. Новый факт, который может противоречить старому, вернётся с предупреждением, а memory_contradict найдёт такие пары по всей базе.

Две функции выключены по умолчанию, потому что обе передают тексты отдельной модели. Поиск по смыслу находит факт, даже если вопрос сформулирован другими словами: для этого тексты фактов и ваши сообщения уходят в сервис эмбеддингов, который вы укажете, — облачный вроде OpenAI или запущенный у вас на компьютере. Пересортировка второй моделью отсекает факты, совпавшие лишь случайным словом, и добавляет к каждому сообщению запрос к вашему серверу или к модели на этой же машине. Без них всё остаётся на компьютере. По скорости: около 0,9 секунды на сообщение при базе в 300 фактов на ноутбуке 2020 года, а если что-то сломалось, хук молча пропускает ход и никогда не блокирует ваш запрос.

Полностью, с подстановкой фактов перед каждым сообщением, holographic-memory сейчас работает в Claude Code и Codex. Antigravity, Grok Build, Gemini CLI, Cursor и другие агенты с локальным MCP получают инструменты памяти и ту же базу, но факты видят, только когда сами их ищут: их хуки устроены иначе. Облачным чатам вроде Grok в браузере локальная база недоступна вовсе.

agent-dreaming: ночная ревизия памяти

Агент, который запоминает, запоминает и лишнее: догадку как факт, один факт дважды разными словами, проект, закрытый месяц назад. Dreaming сравнивает то, что агенты сохранили, с тем, что вы им на самом деле говорили, и раз в день задаёт несколько коротких вопросов.

Ночной проход — обычный скрипт, без модели и без сети, занимает секунды. Он читает ваши сообщения за 30 дней из Claude Code, Codex, Antigravity и Gemini CLI, сверяет их с фактами и складывает вопросы в свою папку ~/.dreaming. Больше он никуда не пишет. Запускается сам: первая сессия после заданного вами часа стартует проход в фоне. Утром в начале сессии одна строка: «Dreaming: ждут 3 вопроса». Только число, без текста фактов.

Сами вопросы задаёт агент, когда вы попросите: /agent-dreaming:dream в Claude Code, $dreaming в Codex. По одному, не больше семи основных за раз; остальные подождут. Похоже ли это на один факт — слить? Факт расходится с заметкой или с CLAUDE.md. О проекте никто не вспоминал месяц — ещё актуален? Агент сохранил вывод сам, а вы не подтверждали. Вы трижды в разные дни сказали одно и то же — закрепить? Отвечаете обычными словами: «да», «устарело», «изменилось, теперь так», «забудь», «не спрашивай больше».

Отдельный тип вопросов — возможные новые факты: вы сказали о себе что-то долговечное, а в памяти этого нет. Проход не хранит ни слова из ваших сообщений: только ссылку на файл сессии и два криптографических отпечатка. Во время разбора сообщение перечитывается заново, агент сначала сам решает, факт ли это (долговечный ли, ваш ли, нет ли его уже в памяти), и только потом спрашивает вас. Такой вопрос идёт сверх семи основных, и он один за разбор. На синтетической персоне 86 % того, о чём агент в итоге спросил, оказались настоящими фактами; на реальной домашней установке — 7 из 7, примерно два в неделю.

В доказательства идут только ваши слова. Фоновые задачи, субагенты, cron, вставки самого агента и длинные вставленные документы отбрасываются, а сообщение с секретом не читается вовсе.

Dreaming работает не только с holographic. Он умеет проверять заметки автопамяти Claude Code (у них нет истории, поэтому «устарело» там означает удаление заметки) и файл эталонного MCP-сервера memory. Память Codex он читает, чтобы не спрашивать о том, что там уже записано, но никогда её не правит.

Как они работают вместе

Разделение ролей простое: holographic хранит и подаёт факты, dreaming их проверяет, но права записи у него нет. Всё, что меняется по итогам ночной проверки, меняется только после вашего ответа: агент превращает его в вызов команды holographic.

Ночь и разбор: проход читает базу только на чтение, следующая сессия показывает число вопросов, агент спрашивает вас и делает ровно один вызов памяти

Вы ответили «устарело». Агент записывает ответ командой dreamem decide, а та печатает ровно один вызов — например, memory_end для этого факта. Агент проверяет, что сессия подключена к той же базе, которую читала ночь, и делает этот вызов. Вызов несёт номер версии, которую вам показали. Если факт успели поменять в другой сессии, holographic откажет, и вопрос вернётся уже с новым текстом. Так ночь, которая видела вчерашнюю базу, не перепишет сегодняшнюю.

Есть и обратная связь. Если в holographic включён журнал результатов (experience = true), агент отмечает случаи, когда ответ, построенный на факте из памяти, вы поправили как устаревший. Dreaming увидит эту запись и ночью спросит: этот факт ещё верен? Получается замкнутый круг: память подсказывает, журнал фиксирует промахи, ночь задаёт вопрос, решение остаётся за вами.

Как установить

Нужны Python 3.11 или новее и uv. Сначала память:

uv tool install git+https://github.com/itpartypattaya/holographic-memory
holomem install claude-code --dry-run
holomem install claude-code
holomem install codex --dry-run
holomem install codex

Если после первой строки терминал не находит команду holomem, выполните uv tool update-shell и откройте терминал заново. --dry-run показывает, что именно поменяется в настройках, и ничего не пишет. Установщик кладёт рядом резервную копию каждого изменённого файла, а --uninstall убирает ровно то, что добавил. В Claude Code после установки откройте новую сессию. В Codex откройте /hooks и доверьте два хука holographic, иначе он их не запустит. Для Claude Code есть и вариант плагином: /plugin install holographic-memory --marketplace itpartypattaya/holographic-memory.

Потом ревизия:

uv tool install git+https://github.com/itpartypattaya/agent-dreaming
dreamem run --dry-run

Пробный прогон покажет, о чём dreaming спросил бы, и ничего не сохранит. Дальше подключите его к агентам. В Claude Code — плагином: /plugin install agent-dreaming --marketplace itpartypattaya/agent-dreaming. В Codex и Antigravity — командами dreamem install codex и dreamem install antigravity (в Codex снова доверьте хуки в /hooks).

Остаётся выбрать время проверки. После dreamem config time 23:00 она запустится, когда вы впервые откроете агента после 23:00. После dreamem config time any — при первой сессии каждого дня; это удобно, если ноутбук на ночь выключен. Проверить, что всё на месте, можно командами holomem status и dreamem status.

Как перенести свою память в holographic

Если вы уже какое-то время работаете в Claude Code или Codex, агенты кое-что о вас знают. Это не нужно рассказывать заново:

holomem import claude-memory --dry-run
holomem import codex-memories --dry-run

Первая команда читает заметки автопамяти Claude Code из стандартных папок — по проектам и у субагентов — и делает из каждой заметки один факт. Вторая берёт из сводки Codex предпочтения и советы, а раздел с перечнем прошлых задач пропускает. С --dry-run вы увидите, что попадёт в базу; без него факты сохранятся. Они проходят ту же проверку, что и любая запись, и получают доверие 0,4 — ниже фактов, которые вы добавили сами. Повторный запуск ничего не задвоит, а исходные файлы агентов останутся как были. Если какой-то файл прочитать не удалось, команда назовёт его, а не сделает вид, что переносить было нечего. Если вы когда-то перенесли память Claude Code в свою папку через настройки проекта, укажите её команде через --path.

После импорта стоит посмотреть, что получилось. holomem export --out memory.md сохранит все текущие факты одной читаемой страницей — её удобно пролистать или открыть в Obsidian. Это обзор без прошлых версий, а не резервная копия, и файл с таким именем будет перезаписан. Если включён поиск по смыслу, holomem embed сразу посчитает векторы для новых фактов. Точные и почти точные повторы импорт пропускает сам, а если одно и то же было сказано в заметках Claude Code и в памяти Codex разными словами, dreaming ночью предложит слить такие пары.

Автопамять Claude Code после переноса продолжит работать. Когда включены обе системы, агент на «запомни» сначала спросит, куда записать: в holographic, в заметки Claude Code или туда и туда. Если хотите, чтобы всё шло в одну базу, автопамять Claude Code можно выключить в его настройках (autoMemoryEnabled: false).

Отдельной команды переноса из Hermes или из облачных чатов нет. Для ChatGPT, Claude.ai и подобных можно поступить вручную: попросите их выписать, что они о вас помнят, проверьте список глазами, вставьте его в Claude Code или Codex и попросите сохранить в holographic то, что останется правдой и через месяц. Полноты тут никто не обещает: облачный чат может выписать не всё. Агент запишет факты по одному через memory_add, отсеет секреты и инструкции и скажет, где новый факт похож на уже сохранённый.

Что пока сыро

Обоим проектам несколько дней, версии 0.x, и это стоит держать в голове. Форматы сессий у агентов внутренние и меняются от версии к версии: если dreaming встретит незнакомый формат, он честно отметит неполное покрытие и не будет спрашивать «ещё актуально?» по такой ночи. Подстановка фактов перед сообщением есть только в Claude Code и Codex. Фильтр возможных новых фактов настроен на русский и английский. Поиск по смыслу с облачным сервисом отправляет тексты наружу, поэтому включайте его осознанно.

У меня обе программы стоят на рабочем ноутбуке, и одна база памяти обслуживает Claude Code, Codex CLI и приложение Codex. Если попробуете у себя — несите вопросы и находки в чат IT-тусовки, а баги — в issues репозиториев. Ту самую лекцию, после которой всё началось, можно посмотреть здесь.

Источники

  1. itpartypattaya/holographic-memory: README
  2. holographic-memory: релиз 0.8.1
  3. itpartypattaya/agent-dreaming: README
  4. agent-dreaming: изменения до 0.6.0
  5. YouTube: «Как устроена память AI-агента Hermes — holographic и dreaming»
Свои рядомСпросите своих — в чате отвечают быстрее, чем поискОсновной чат IT-тусовки Паттайи: айтишники, диджитал-специалисты и предприниматели, которые уже прошли через то же самое. С июля 2023 года.Вступить в чатНужны батыОбмен рублей и USDT на баты — внутри сообществаIT ОБМЕН работает с 2023 года: рубли с любого банка РФ и по СБП, USDT с Bybit и Binance. Наличные привезут по Паттайе, переведут на тайский счёт или выдадут через банкомат. Курс обновляется каждый день.Условия и курс

Читайте также по теме