Добавление постоянной памяти в код Клода с помощью легкого плагина memsearch
Недавно мы создали и выложили в открытый доступ memsearch- автономную библиотеку долговременной памяти, которая позволяет любому агенту получить постоянную, прозрачную и управляемую человеком память. Она использует ту же архитектуру памяти, что и OpenClaw - только без остального стека OpenClaw. Это означает, что вы можете добавить ее в любой агентский фреймворк (Claude, GPT, Llama, пользовательские агенты, движки рабочих процессов) и мгновенно добавить долговременную память, доступную для запросов. (Если вы хотите узнать, как работает memsearch, мы написали отдельный пост здесь).
В большинстве агентских рабочих процессов memsearch работает именно так, как задумано. Но агентское кодирование - это совсем другая история. Сессии кодирования длятся долго, контекстные переключения происходят постоянно, а информация, которую стоит хранить, накапливается в течение нескольких дней или недель. Такой объем и изменчивость выявляют слабые места в типичных системах памяти агентов - в том числе и в memsearch. В сценариях кодирования шаблоны поиска отличаются настолько, что мы не можем просто использовать существующий инструмент как есть.
Чтобы решить эту проблему, мы создали плагин постоянной памяти, разработанный специально для Claude Code. Он располагается поверх memsearch CLI, и мы назвали его memsearch ccplugin.
- GitHub Repo: https://zilliztech.github.io/memsearch/claude-plugin/ (с открытым исходным кодом, лицензия MIT)
С помощью легкого cc-плагина memsearch, управляющего памятью за кулисами, Claude Code получает возможность помнить каждый разговор, каждое решение, каждое стилевое предпочтение и каждый многодневный поток - автоматически индексируемый, с возможностью полного поиска и сохраняемый в течение всех сессий.
Для ясности в этом посте: "ccplugin" означает верхний слой, или сам плагин Claude Code. "memsearch" относится к нижнему уровню - отдельному инструменту CLI, лежащему в его основе.
Почему же для кодирования нужен свой собственный плагин и почему мы создали что-то настолько легковесное? Все сводится к двум проблемам, с которыми вы почти наверняка сталкивались: Отсутствие постоянной памяти в Claude Code, а также громоздкость и сложность существующих решений вроде claude-mem.
Так зачем вообще создавать специальный плагин? Потому что агенты кодирования сталкиваются с двумя болевыми точками, с которыми вы почти наверняка сталкивались сами:
Код Клода не имеет постоянной памяти.
Многие существующие решения сообщества, такие как claude-mem, являютсямощными, но тяжелыми, неуклюжими или слишком сложными для повседневной работы с кодом.
Плагин cc призван решить обе проблемы с помощью минимального, прозрачного, удобного для разработчиков слоя поверх memsearch.
Проблема памяти кода Клода: он забывает все, когда сессия заканчивается
Начнем со сценария, с которым наверняка сталкивались пользователи Claude Code.
Вы открываете Claude Code утром. "Продолжить вчерашний рефактор аутентификации", - набираете вы. Клод отвечает: "Я не уверен, над чем вы работали вчера". Так что следующие десять минут вы тратите на копирование вчерашних логов. Это не такая уж большая проблема, но она быстро надоедает, потому что возникает так часто.
Несмотря на то, что в Claude Code есть собственные механизмы памяти, они далеко не всегда удовлетворительны. Файл CLAUDE.md может хранить директивы проекта и предпочтения, но он лучше работает для статических правил и коротких команд, а не для накопления долгосрочных знаний.
Claude Code предлагает команды resume и fork, но они далеко не так удобны. Для команд-вилки вам нужно запоминать идентификаторы сессий, набирать команды вручную и управлять деревом ветвящихся историй разговоров. Когда вы запускаете /resume, вы получаете стену названий сессий. Если вы помните только несколько деталей того, что вы делали, и это было более нескольких дней назад, удачи вам в поиске нужного.
Для долгосрочного, межпроектного накопления знаний такой подход невозможен.
Чтобы реализовать эту идею, claude-mem использует трехуровневую систему памяти. Первый уровень ищет высокоуровневые сводки. Второй уровень копается во временной шкале для получения более подробной информации. Третий уровень извлекает полные наблюдения для поиска необработанных разговоров. Кроме того, есть метки конфиденциальности, отслеживание расходов и веб-интерфейс для визуализации.
Вот как это работает под капотом:
Уровень выполнения. Рабочая служба Node.js работает на порту 37777. Метаданные сессии хранятся в легкой базе данных SQLite. Векторная база данных обеспечивает точный семантический поиск по содержимому памяти.
Слой взаимодействия. Веб-интерфейс на основе React позволяет просматривать захваченные воспоминания в реальном времени: сводки, временные шкалы и необработанные записи.
Интерфейсный уровень. Сервер MCP (Model Context Protocol) предоставляет стандартизированные интерфейсы инструментов. Клод может вызвать
search(запрос высокоуровневых сводок),timeline(просмотр подробных временных шкал) иget_observations(получение необработанных записей взаимодействия), чтобы получить и использовать воспоминания напрямую.
По правде говоря, это надежный продукт, который решает проблему памяти Клода Кода. Но он неуклюж и сложен в тех аспектах, которые важны в повседневной жизни.
| Слой | Технология |
|---|---|
| Язык | TypeScript (ES2022, модули ESNext) |
| Время выполнения | Node.js 18+ |
| База данных | SQLite 3 с драйвером bun:sqlite |
| Векторное хранилище | ChromaDB (опционально, для семантического поиска) |
| HTTP-сервер | Express.js 4.18 |
| В режиме реального времени | События, отправляемые сервером (SSE) |
| UI Framework | React + TypeScript |
| AI SDK | @anthropic-ai/claude-agent-sdk |
| Инструмент для сборки | esbuild (включает TypeScript) |
| Менеджер процессов | Bun |
| Тестирование | Встроенный в Node.js прогонщик тестов |
Начнем с того, что установка очень тяжелая. Запуск claude-mem означает установку Node.js, Bun и среды выполнения MCP, а затем создание сервиса Worker, сервера Express, пользовательского интерфейса React, SQLite и векторного хранилища поверх всего этого. Это множество подвижных частей, которые нужно развернуть, поддерживать и отлаживать, если что-то сломалось.
Все эти компоненты также сжигают токены, которые вы не просили тратить. Определения инструментов MCP постоянно загружаются в контекстное окно Claude, и каждый вызов инструмента съедает токены на запрос и ответ. При длительных сессиях эти накладные расходы быстро растут и могут вывести стоимость токенов из-под контроля.
Вызов памяти ненадежен, поскольку полностью зависит от выбора Клода для поиска. Клод должен сам принимать решение о вызове таких инструментов, как search, чтобы вызвать поиск. Если он не понимает, что ему нужна память, соответствующий контент просто не появится. И каждый из трех уровней памяти требует своего собственного явного вызова инструмента, так что нет никакого запасного варианта, если Клод не догадается поискать.
Наконец, хранение данных непрозрачно, что делает отладку и миграцию неприятными. Память разделена между SQLite для метаданных сессии и Chroma для бинарных векторных данных, при этом нет открытого формата, связывающего их вместе. Миграция означает написание скриптов экспорта. Чтобы узнать, что на самом деле помнит ИИ, нужно зайти в веб-интерфейс или специальный интерфейс запросов. Нет возможности просто посмотреть на необработанные данные.
Почему плагин memsearch для Claude Code лучше?
Нам нужен был действительно легкий слой памяти - без дополнительных сервисов, без запутанной архитектуры, без операционных накладных расходов. Именно это побудило нас создать cc-плагин memsearch. По сути, это был эксперимент: может ли система памяти, ориентированная на кодирование, быть радикально проще?
Да, и мы это доказали.
Весь ccplugin - это четыре хука оболочки плюс фоновый процесс watch. Никакого Node.js, никакого MCP-сервера, никакого веб-интерфейса. Это просто сценарии оболочки, вызывающие memsearch CLI, что значительно снижает требования к настройке и обслуживанию.
Плагин ccplugin может быть таким тонким благодаря строгим границам ответственности. Он не занимается хранением памяти, поиском векторов или вставкой текста. Все это делегируется находящемуся под ним memsearch CLI. У ccplugin одна задача: передать события жизненного цикла Claude Code (начало сессии, отправка запроса, остановка ответа, конец сессии) соответствующим функциям memsearch CLI.
Такая развязка делает систему гибче, чем Claude Code. CLI memsearch работает независимо с другими IDE, другими агентскими фреймворками или даже с простым ручным вызовом. Он не привязан к какому-то одному сценарию использования.
На практике такая конструкция дает три ключевых преимущества.
1. Все воспоминания живут в простых файлах Markdown
Каждое воспоминание, созданное плагином ccplugin, хранится на сайте .memsearch/memory/ в виде файла в формате Markdown.
.memsearch/memory/
├── 2026-02-09.md
├── 2026-02-10.md
└── 2026-02-11.md
Это один файл на день. Каждый файл содержит резюме сессий этого дня в виде обычного текста, полностью читаемого человеком. Вот скриншот ежедневных файлов памяти из самого проекта memsearch:
Вы сразу видите формат: временная метка, идентификатор сессии, идентификатор поворота и краткое описание сессии. Ничего не скрыто.
Хотите узнать, что запоминает ИИ? Откройте файл в формате Markdown. Хотите отредактировать воспоминание? Используйте свой текстовый редактор. Хотите перенести свои данные? Скопируйте папку .memsearch/memory/.
Векторный индекс Milvus - это кэш для ускорения семантического поиска. Он перестраивается из Markdown в любое время. Никаких непрозрачных баз данных, никаких двоичных черных ящиков. Все данные можно отследить и полностью восстановить.
2. Автоматическая инъекция контекста требует ноль дополнительных токенов
Прозрачное хранилище - основа этой системы. Реальная отдача зависит от того, как эти воспоминания используются, и в ccplugin вызов воспоминаний полностью автоматический.
Каждый раз, когда отправляется запрос, хук UserPromptSubmit запускает семантический поиск и вводит в контекст три самых релевантных воспоминания. Клод не решает, нужно ли искать. Он просто получает контекст.
Во время этого процесса Клод никогда не видит определений инструментов MCP, поэтому в окне контекста нет ничего лишнего. Хук работает на уровне CLI и вводит результаты поиска в виде обычного текста. Никаких накладных расходов на IPC, никаких затрат на маркеры вызовов инструментов. Раздувание контекстного окна, которое возникает при использовании определений инструментов MCP, полностью исключено.
Для случаев, когда автоматического топ-3 недостаточно, мы также создали три уровня прогрессивного поиска. Все три уровня - это команды CLI, а не инструменты MCP.
L1 (автоматический): Каждая команда возвращает топ-3 результатов семантического поиска с
chunk_hashи 200-символьным превью. Этого достаточно для повседневного использования.L2 (по требованию): Когда требуется полный контекст,
memsearch expand <chunk_hash>возвращает полный текст раздела в формате Markdown плюс метаданные.L3 (глубокий): Если нужен оригинальный разговор,
memsearch transcript <jsonl_path> --turn <uuid>извлекает необработанную JSONL-запись из Claude Code.
3. Резюме сессий генерируются в фоновом режиме с почти нулевыми затратами
Извлечение информации - это то, как используются воспоминания. Но сначала воспоминания должны быть написаны. Как создаются все эти файлы в формате Markdown?
Плагин ccplugin генерирует их с помощью фонового конвейера, который работает асинхронно и почти ничего не стоит. Каждый раз, когда вы останавливаете ответ Claude, срабатывает хук Stop: он разбирает стенограмму разговора, вызывает Claude Haiku (claude -p --model haiku) для создания резюме и добавляет его в Markdown-файл текущего дня. Вызовы API Haiku очень дешевы, почти ничтожны на одно обращение.
После этого процесс watch обнаруживает изменение файла и автоматически индексирует новое содержимое в Milvus, чтобы его можно было сразу же найти. Весь процесс работает в фоновом режиме, не мешая вашей работе, и затраты остаются под контролем.
Быстрый запуск плагина memsearch с помощью Claude Code
Во-первых, установите плагин из маркетплейса плагинов Claude Code:
bash
# Run in Claude Code terminal
/plugin marketplace add zilliztech/memsearch
/plugin install memsearch
Во-вторых, перезапустите Claude Code.
Плагин автоматически инициализирует свою конфигурацию.
В-третьих, после разговора проверьте файл памяти за день:
bash
cat .memsearch/memory/$(date +%Y-%m-%d).md
В-четвертых, наслаждайтесь.
В следующий раз, когда Claude Code запустится, система автоматически извлечет и введет соответствующие воспоминания. Никаких дополнительных действий не требуется.
Заключение
Давайте вернемся к первоначальному вопросу: как дать ИИ постоянную память? claude-mem и memsearch ccplugin используют разные подходы, каждый из которых имеет свои преимущества. Мы составили краткое руководство по выбору между ними:
| Категория | memsearch | claude-mem |
|---|---|---|
| Архитектура | 4 shell hooks + 1 watch process | Node.js Worker + Express + React UI |
| Метод интеграции | Нативные хуки + CLI | MCP сервер (stdio) |
| Вызов | Автоматический (инъекция хуков) | Управляемый агентом (требует вызова инструмента) |
| Потребление контекста | Нулевое (инъекция только текста результата) | Определения инструментов MCP сохраняются |
| Резюме сессии | Один асинхронный вызов Haiku CLI | Несколько вызовов API + сжатие наблюдений |
| Формат хранения | Обычные файлы в формате Markdown | SQLite + вкрапления Chroma |
| Миграция данных | Обычные файлы Markdown | SQLite + вкрапления Chroma |
| Метод миграции | Копирование файлов .md | Экспорт из базы данных |
| Время выполнения | Python + Claude CLI | Node.js + Bun + MCP runtime |
claude-mem предлагает более богатые возможности, отточенный пользовательский интерфейс и более тонкий контроль. Для команд, которым нужна совместная работа, веб-визуализация или детальное управление памятью, это отличный выбор.
Плагин memsearch ccplugin предлагает минимальный дизайн, нулевые накладные расходы на контекстное окно и полностью прозрачное хранение. Для инженеров, которым нужен легкий слой памяти без дополнительных сложностей, он подойдет лучше. Какой из них лучше, зависит от того, что вам нужно.
Хотите погрузиться глубже или получить помощь в создании memsearch или Milvus?
Присоединяйтесь к Slack-сообществу Milvus, чтобы общаться с другими разработчиками и делиться тем, что вы создаете.
Запишитесь на наши офисные часы Milvus, чтобыполучить ответы на вопросы и прямую поддержку от команды.
Ресурсы
Документация по cc-плагину memsearch: https://zilliztech.github.io/memsearch/claude-plugin/
GitHub: https://github.com/zilliztech/memsearch/tree/main/ccplugin
Проект memsearch: https://github.com/zilliztech/memsearch
Блог: Мы извлекли систему памяти OpenClaw и выложили ее в открытый доступ (memsearch)
Блог: Что такое OpenClaw? Полное руководство по агенту искусственного интеллекта с открытым исходным кодом
Блог: OpenClaw Tutorial: Подключение к Slack для локального ИИ-ассистента
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word


