VecMory
VecMory
MCP-сервер контекстной памяти для AI-агентов.
Хранит цепочки запрос -> ошибка -> решение как граф с типизированными рёбрами.
Эмбеддинг локальный (CPU, без внешних API). Данные живут в таблице Integram.
Установка
npm install vecmoryБыстрый старт с Claude Code
# Добавить MCP-сервер
claude mcp add vecmory npx vecmory
# Создать .env в корне проекта
cp node_modules/vecmory/.env.example .env
# Отредактировать .env — вписать VECMORY_TOKEN и ID полейПерезапустите сессию Claude Code. Проверьте через /mcp — vecmory должен быть connected.
Альтернатива: bash-wrapper
Для глобальной установки или явной загрузки .env:
claude mcp add vecmory bash /path/to/vecmory/start-mcp.shДругие MCP-клиенты
{
"mcpServers": {
"vecmory": {
"command": "npx",
"args": ["vecmory"]
}
}
}Инициализация (auth + загрузка модели эмбеддинга ~90MB) происходит лениво при первом вызове тулзы, не при старте MCP-сервера.
MCP-тулзы
Тулза | Параметры | Что делает |
|
| Семантический поиск + обход графа соседей (garland) |
|
| Записать факт/решение в память |
|
| Удалить узел и очистить рёбра |
| — | Статистика: total, withNeighbors, avgDegree, byDomain |
Архитектура
Claude Code / AI-агент
|
| MCP stdio
v
┌─────────────────────────────────┐
│ vecmory (npm, MCP-сервер) │
│ │
│ MCP layer — 4 тулзы │
│ Embedder — @xenova/transformers, 384-dim, CPU │
│ MemoryGraph — узлы + типизированные рёбра │
│ SearchEngine — cosine brute-force │
│ DecayManager — затухание неиспользуемых узлов │
│ IntegramHTTP — HTTP-клиент к Integram API │
└────────────┬────────────────────┘
| HTTP (fetch)
v
┌─────────────────────────────────┐
│ Integram PHP-бэкенд │
│ ideav.ru │
└─────────────────────────────────┘Структура узла
Каждый узел — запись в таблице Integram:
Поле | Тип | Описание |
| MEMO | Исходный текст |
| MEMO | Очищенный текст (без ID, хешей) |
| MEMO | Вектор 384-dim как JSON-массив |
| SHORT | Категория: |
| SHORT | Тип: |
| SHORT | 1-3 ключевых слова |
| NUMBER | Счётчик обращений |
| NUMBER | Коэффициент затухания (0.0-1.0) |
| NUMBER | Вес важности |
| MEMO | JSON-массив ID соседей |
| MEMO | JSON: |
Типы рёбер
Тип | Когда создаётся |
| Автоматически при записи (top-k по косинусу) |
| Явно при записи |
| Автоматически между последовательными |
| По полю |
| По совпадению |
Пайплайны
remember(text, meta?)
Очистка текста (удаление ID, хешей, стоп-слов)
Эмбеддинг — 384-dim, L2-нормализация
Поиск top-k соседей по косинусу
Создание записи в Integram
Добавление рёбер SIMILAR_TO (forward + backward)
Добавление ребра FOLLOWED_BY к предыдущей записи сессии
Return
{ id, neighbors, scores }
recall(query, k?)
Эмбеддинг запроса
Cosine top-k
Обход рёбер на garlandDepth шагов (BFS)
Bump popularity_counter, reset decay_score
Return
{ nodes, garland, total }
Конфигурация
Переменная | По умолчанию | Описание |
| 16 | Кол-во результатов поиска |
| 2 | Глубина обхода графа |
| 0.95 | Множитель затухания |
| 0.1 | Порог архивации |
|
| Модель эмбеддинга |
Разработка
npm test # запуск тестов
npm run test:watch # watch-режимСтруктура пакета
src/
index.js — VecMory class (оркестратор)
mcp-server.js — MCP stdio сервер (4 тулзы)
integram-client.js — HTTP-клиент к Integram API
embedder.js — @xenova/transformers wrapper
search.js — cosine brute-force
graph.js — рёбра, garland, обход
decay.js — затухание, архивация
cleaner.js — очистка текста
hooks/
pre-recall.sh — хук UserPromptSubmit → авто-recall
post-remember.sh — хук Stop → авто-remember
start-mcp.sh — bash-wrapper (загружает .env)
test/
*.test.js — 72 тестаЗависимости
Пакет | Зачем |
| Локальный эмбеддинг (ONNX, CPU) |
| MCP-сервер |
HTTP через globalThis.fetch (Node 18+). Минимум зависимостей.
Roadmap
Claude Code хуки (auto-recall, auto-remember)
FOLLOWED_BY автосвязывание последовательных записей
Серверный косинус через формульные колонки Integram (тип 101) — research done, формула работает
RECURSIVE-отчёт для серверного графа — заблокирован (neighbors=MEMO, не ref)
A/B тестирование «с памятью / без»
Лицензия
Код: MIT — свободно использовать, форкать, менять.
Метод: патенты RU 2650032 C1 и US 11138174 B2 принадлежат ideav.ru. MIT-лицензия патентных прав не даёт.
Если вы используете VecMory вместе с Integram (https://ideav.ru/) — патентные права покрыты вашей лицензией Integram. Для других сценариев: alexey.ideav@gmail.com