RMS Memory MCP — постоянная кросс-IDE память для AI-агентов
📂 Исходный код на GitHubMCP-сервер на Rust для персистентной, локальной памяти AI-агентов. Гибридный поиск (векторный + полнотекстовый), AST-чанкинг Markdown, семантическая индексация кода, автоустановка в IDE.
RMS Memory MCP решает проблему, знакомую каждому, кто работает с несколькими AI-агентами: вы открываете Cursor, потом Claude Code, потом Zed — и каждый раз заново объясняете архитектуру, договорённости, контекст проекта. Это MCP-сервер на Rust, который даёт единое, изолированное Markdown-хранилище (vault) для любой IDE с поддержкой MCP.
Основные возможности
Глобальные изолированные vault'ы. Контекст хранится вне репозитория — никаких файлов .mcp в проекте. Каждый проект получает свой vault, вычисленный из хеша пути.
Гибридный поиск. Векторный поиск через встраиваемый LanceDB сочетается с полнотекстовым поиском Tantivy. Результаты из разных корпусов объединяются Reciprocal Rank Fusion — запрос не возвращает пустой ответ из-за несовпадения ключевых слов.
Мультиязычное семантическое понимание. fastembed-rs + модель multilingual-e5-small — нативное понимание русского и английского.
AST-чанкинг Markdown. Парсер pulldown-cmark разбирает Markdown-дерево и строит чанки, привязанные к родительскому заголовку, с границей 1500 символов и перекрытием ~200 символов для больших блоков кода. Без разрывов посреди предложений.
Семантическая индексация кода. Опциональный Tree-sitter для Rust, Go, JS/JSX, TS/TSX, Python, C/C++, Java, Ruby, Swift и Vue <script>. Стабильные идентификаторы сегментов и повторяемые преамбулы сохраняют контекст при разделении больших реализаций.
Граф знаний. Отношения между документами и кодом хранятся отдельно от чанков, готовы к будущему визуальному редактору.
Правила как код. Неразрушающее AST-патчинг .cursorrules, .zed/assistant.md и других IDE-файлов правил.
Устойчивость записи. rms_write создаёт rolling .bak-копии и атомарно заменяет файлы после fsync.
Аудит-метаданные. Каждая запись получает last_modified_by, timestamp, confidence, source — агенты могут фильтровать по надёжности.
Множественные scope'ы. Флаг --scope поддерживает идентификаторы за пределами файловой системы: thread ID, lead ID и т.д.
Установка
Homebrew (macOS Apple Silicon, Linux)
brew tap max-ramas/tap
brew install rms-memory-mcp
Cargo
cargo install rms-memory-mcp
Из исходников
git clone https://github.com/max-ramas/rms-memory-mcp.git
cd rms-memory-mcp
cargo build --release
cp target/release/rms-memory ~/.cargo/bin/
Готовые бинарники для aarch64-apple-darwin, x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu и x86_64-pc-windows-msvc публикуются с каждым релизом.
Быстрый старт
Подключить все IDE на машине одной командой:
rms-memory install
Это сканирует ~/.config/ и ~/Library/Application Support/ и прописывает rms-memory в Cursor, Zed, Claude Code, OpenCode и другие — без ручного редактирования JSON.
Для виртуальных проектов (треды, лиды):
rms-memory --scope "thread:abc-123" serve
Scope — это граница изоляции vault'а и его индекса. Без --scope используется текущая рабочая директория; явный путь адресует проектный vault; любой другой идентификатор создаёт изолированный виртуальный vault:
rms-memory serve # scope текущего проекта
rms-memory --scope "/home/user/my-project" serve # явный проектный scope
rms-memory --scope "thread:abc-123" serve # виртуальный scope треда
rms-memory --scope "product:acme" serve # виртуальный scope продукта
Конфигурация и CLI
Интерактивный мастер настройки:
rms-memory config
Основные команды
| Команда | Описание |
|---|---|
rms-memory serve |
Запуск JSON-RPC stdio сервера (IDE запускает автоматически) |
rms-memory init |
Регистрация проекта в глобальном реестре |
rms-memory import |
Сканирование и импорт существующей документации |
rms-memory install |
Автоустановка в поддерживаемые IDE |
rms-memory uninstall |
Удаление из всех IDE |
rms-memory doctor |
Диагностика vault'а (5 проверок) |
rms-memory reindex |
Перестроение Markdown-памяти, индекса кода или всего сразу |
rms-memory sync |
Инкрементальная синхронизация LanceDB |
rms-memory gc |
Очистка индексов удалённых vault'ов |
rms-memory export-llms |
Экспорт vault'а в один llms.txt |
MCP-инструменты
| Инструмент | Назначение | Параметры |
|---|---|---|
rms-memory_rms_search |
Гибридный поиск по vault'у и/или коду | query, corpus (vault/code/all), limit, min_confidence |
rms-memory_rms_code_search |
Поиск по семантическому индексу кода | query, limit, include_content |
rms-memory_rms_read |
Чтение документа по пути | path |
rms-memory_rms_write |
Запись решений, правил, ограничений | path, content, mode (replace/append/create), confidence, source |
Семантическая индексация кода
Индексация Markdown-документов включена по умолчанию. Семантическая индексация исходного кода — опциональна:
rms-memory reindex --code # только код
rms-memory reindex --all # vault + код
Режим индексации кода: off (по умолчанию), manual или watch. Режим watch явно опционален, группирует сохранения с задержкой 3 секунды и координирует конкурирующие процессы IDE.
Выбор языков — на уровне проекта:
rms-memory config --code-languages auto
rms-memory config --code-languages go,typescript,tsx,vue
Поддерживаются: rust, go, javascript, jsx, typescript, tsx, python, c, cpp, java, ruby, swift, vue. Директории сборки (node_modules, .next, target, vendor, coverage) всегда исключаются.
Архитектура
Единая конфигурация. Центральный ~/.rms-memory/registry.toml сопоставляет каждый проект с изолированным vault'ом. Никаких .mcp-файлов в репозитории.
Связанные документы. rms-memory import может создавать Link Files — Markdown-заглушки с link: <path> в frontmatter. Чтение и запись прозрачно перенаправляются в исходный файл, а векторный индекс учитывает структуру vault'а.
Раздельные корпусы. Markdown и производный код хранятся в отдельных таблицах LanceDB. Кодовые чанки несут стабильные идентификаторы символов, диапазоны строк и преамбулы; неизменённые чанки переиспользуют векторы.
Десять уровней отказоустойчивости:
- Защита от path traversal и инъекций в фильтры
- Предотвращение зомби-процессов
- Graceful shutdown (SIGINT/Ctrl+C)
- Обход macOS-песочницы для загрузки моделей fastembed
gc— очистка orphan-индексов- PID-aware блокировка записи и фоновая синхронизация только для чтения
- Наблюдатели за изменениями: Markdown + debounce 3с для кода
- Снапшоты с rolling
.bak(по умолчанию 5 копий) - Изолированное телеметрическое логирование
- Экспорт
llms.txt
Поддерживаемые IDE
| IDE | Автоустановка | Внедрение правил |
|---|---|---|
| Cursor | ✅ | .cursorrules |
| Zed | ✅ | .zed/assistant.md |
| Claude Code | ✅ | .claude/CLAUDE.md |
| OpenCode | ✅ | — |
| Codex | ✅ | — |
| VS Code | ✅ | — |
| Antigravity | ✅ | — |
Валидация
На версии v1.0.5 проверены живые MCP-запросы rms_search(corpus=vault|code|all) и rms_code_search. На собственном репозитории reindex --code проиндексировал 43 Rust-файла в 298 семантических элементов и 438 сегментов. Стресс-тест с пятью наблюдателями обработал быстрые сохранения в одно обновление, а позже реальная нагрузка с семью MCP-серверами (после четырёх перезапусков IDE) держала 0.0% CPU при нулевом фоновом перестроении индекса.
Лицензия MIT, автор — Максим Рамзаев, RMS Digital Services.