Engram
Engram
Каждая мысль оставляет след.
Установите AI-агенту мозг, который умеет забывать.
Engram — это полностью локальный сервис памяти MCP. Это не просто «хранилище» — он имитирует человеческие механизмы забывания, подкрепления и ассоциаций, позволяя агенту запоминать действительно важные вещи между сессиями и естественным образом отбрасывать ненужные детали.
Нулевая зависимость от облака, данные всегда остаются на вашем устройстве.
Какие проблемы это решает
Проблема 1: Разрыв состояния между сессиями
Каждый диалог с AI-агентом — это чистый лист. Предпочтения, о которых вы рассказали вчера, архитектурные решения, принятые на прошлой неделе, или ошибки, на которых вы учились в прошлом месяце — всё это обнуляется при следующем диалоге. Очистка контекстного окна = форматирование мозга.
Проблема 2: Энтропия файлов
Запихивание контекста в CLAUDE.md / .cursorrules кажется решением, но на деле создает новые проблемы: файлы становятся бесконечно длинными, устаревшая информация смешивается с актуальной, а затраты на ручное обслуживание постоянно растут. Вы не управляете памятью, вы поддерживаете документ, который становится всё труднее читать.
Проблема 3: Потеря инженерного состояния
Что сделал агент, на чем он застрял, что нужно сделать дальше — для этих структурированных инженерных состояний нет места для хранения. Каждая новая сессия требует 10 минут на «повторную синхронизацию», после чего приходится делать одно и то же.
Решение Engram: Не «сохранять всё подряд», а имитировать человеческий механизм забывания-подкрепления-ассоциаций:
Важные предпочтения и решения затухают крайне медленно, сохраняясь почти навсегда.
Временный контекст отладки естественным образом исчезает через 11 дней.
Знания, к которым часто обращаются, становятся прочнее.
Противоречивая информация автоматически перезаписывается, предотвращая конфликты.
Новое в v0.2: Структурированная передача сессии (session handoff), позволяющая следующей сессии продолжаться с точки остановки, а не с нуля.
Новое в v0.4: Центр инженерного состояния — структурированное определение причин сбоев (track_failure) и отслеживание прогресса (track_progress), позволяющее агенту запоминать не только информацию, но и инженерный статус.
Related MCP server: Ori Mnemos
Основные механизмы
1. Кривая забывания Эббингауза
Каждое воспоминание имеет значение силы (strength), которое экспоненциально затухает со временем:
effective_λ = base_λ × (1 - importance × 0.8)
strength = importance × e^(-λ × days) × (1 + recall_count × 0.2)Три фактора определяют, как долго «проживет» воспоминание:
Фактор | Роль | Механизм |
Важность (importance) | Чем важнее, тем медленнее затухание | Может снизить скорость затухания до 80% |
Категория (category) | Разные типы имеют разный период полураспада | См. таблицу ниже |
Количество обращений (recall_count) | Чем чаще используется, тем прочнее | +20% силы при каждом обращении |
Четыре категории памяти:
Категория | Скорость затухания λ | Период полураспада | Сценарий использования |
| 0.10 | ~38 дней | Проверенные методологии, архитектурные паттерны |
| 0.16 | ~24 дня | Предпочтения пользователя, данные профиля, выбор технологий |
| 0.20 | ~19 дней | Предполагаемый контекст, неопределенная информация |
| 0.35 | ~11 дней | Ошибки, проблемы окружения, временные обходные пути |
Дизайн-идея: Успешные стратегии запоминаются дольше всего (strategy ~38 дней), а уроки неудач — короче всего (failure ~11 дней), так как окружение меняется, и вчерашняя проблема завтра может быть уже решена.
2. Интеллектуальное устранение дубликатов и разрешение противоречий
При сохранении нового воспоминания система не просто добавляет его, а сначала проводит семантическое сравнение с уже существующими:
相似度 ≥ 0.85 → REINFORCE 只增加回忆次数,不重复存储
相似度 0.65~0.84 → 检测矛盾
├── 语义矛盾 → REPLACE 用新内容覆盖旧内容
└── 语义兼容 → MERGE 合并为一条更完整的记忆
相似度 < 0.65 → NEW 存为新记忆Детекция противоречий реализуется через анализ полярности: извлечение позитивных слов (prefer/love/adopt) и негативных слов (avoid/hate/reject) вместе с отрицаниями (not/don't/never) для определения того, выражают ли два воспоминания противоположные позиции.
Пример: если уже есть «предпочтение TypeScript», а сохраняется «пользователь решил отказаться от TypeScript в пользу Go», система распознает противоречие и автоматически заменит старое воспоминание новым.
3. Гибридный поиск (векторный + BM25 + граф)
При извлечении воспоминаний используется трехкомпонентная гибридная оценка:
最终得分 = 0.4 × BM25关键词得分 + 0.6 × (语义相似度 × 衰减强度) + 图谱加成Почему не использовать только векторный поиск?
Метод поиска | В чем хорош | В чем плох |
Векторный поиск | «Тот способ развертывания, о котором он упоминал» → семантическое понимание | Точное совпадение терминов |
BM25 | «DuckDB» → точные ключевые слова | Семантически близкие, но иначе сформулированные запросы |
Графовое расширение | A→B→C обнаружение связей | Независимые, не связанные воспоминания |
Эффект объединения: при поиске по запросу «производительность базы данных» можно найти не только воспоминания, прямо упоминающие производительность, но и через граф найти связанные стратегии индексации, решения по кэшированию и т.д.
4. Семантический граф
Каждое воспоминание при сохранении автоматически устанавливает семантические связи с уже существующими:
Вычисляется косинусное сходство со всеми существующими воспоминаниями.
При сходстве ≥ 0.40 создается двунаправленное ребро с весом = сходство × 0.5.
Каждое воспоминание соединяется максимум с 5 наиболее похожими соседями.
Две ключевые функции графа:
Ассоциативное обнаружение: при поиске выполняется BFS (макс. глубина 2) от найденных воспоминаний, чтобы найти связанные, даже если они не имеют прямого семантического сходства с поисковым запросом. Это похоже на человеческую ассоциацию «от одного к другому».
Цепная защита: если сила самого воспоминания падает ниже порога, но среди его соседей есть сильные воспоминания, оно сохраняется — так как может быть мостом между двумя важными знаниями.
5. Автоматическая консолидация и удаление
Фоновая задача обслуживания запускается каждые 12 часов:
Консолидация (Consolidation):
Поиск кластеров воспоминаний со сходством ≥ 0.70.
Сохранение наиболее важного воспоминания как основного.
Объединение уникальной информации из остальных.
Пересчет векторов и графовых связей.
Удаление избыточных воспоминаний.
Удаление (Pruning):
Расчет текущей силы каждого воспоминания.
Сила < 0.05 и прохождение проверки цепной защиты → удаление.
Сила < 0.05, но соседи сильны → сохранение (цепная защита).
Это означает, что база памяти автоматически остается компактной — не нужно ручной очистки, и она не будет бесконечно раздуваться.
Центр инженерного состояния (v0.4)
Engram — это не просто плагин памяти для «хранения информации», это слой состояния, понимающий инженерные процессы.
Определение причин сбоев (track_failure)
Когда агент сталкивается с багом, неудачным тестом или проблемой развертывания, это записывается в структурированном формате:
# MCP 调用
track_failure(
error="CSRF token missing on checkout",
component="payment",
severity="critical", # → importance=0.9
root_cause="middleware not loaded after refactor",
fix="re-add CsrfMiddleware to pipeline",
related_test_ids=["test_checkout_01", "test_payment_csrf"]
)Дизайн-решения:
severityавтоматически отображается наimportance(critical=0.9, major=0.7, minor=0.5).Фиксированная категория
failure(самое быстрое затухание λ=0.35, период полураспада ~11 дней) — окружение меняется, старые записи об ошибках естественным образом устаревают.Поле
componentподдерживает агрегированную статистику по модулям для быстрого поиска зон высокого риска.
Отслеживание прогресса (track_progress)
Отслеживание состояния функций/задач между сессиями:
track_progress(
feature="login-flow-refactor",
status="in_progress", # → importance=0.8
completion=60,
blockers=["waiting for API design review"],
quality_score=0.85,
notes="auth module done, UI pending"
)Дизайн-решения:
statusавтоматически отображается наimportance(blocked=0.9 самый высокий, done=0.5 самый низкий).Фиксированная категория
strategy(самое медленное затухание λ=0.10, период полураспада ~38 дней) — статус прогресса нужно помнить дольше всего.Завершенные функции естественным образом затухают и исчезают, ручная очистка не требуется.
Инженерные метрики (улучшенный memory_stats)
memory_stats теперь автоматически агрегирует инженерные данные:
{
"total": 42,
"categories": {"fact": 20, "failure": 8, "strategy": 14},
"engineering": {
"failures": {
"total": 8,
"by_component": {"auth": 5, "payment": 3},
"by_severity": {"critical": 2, "major": 6}
},
"features": {
"total_tracked": 4,
"active": {
"login-refactor": {"status": "in_progress", "completion": 60},
"payment-fix": {"status": "blocked", "completion": 30}
}
}
}
}Техническая архитектура
┌──────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / Cursor / ...) │
└──────────────────┬───────────────────────────┘
│ stdio (JSON-RPC)
┌──────────────────▼───────────────────────────┐
│ server.py │
│ 8 MCP tools · APScheduler (12h 维护) │
├──────────────────────────────────────────────┤
│ │
│ ┌─ 写入路径 ──────┐ ┌─ 读取路径 ──────┐ │
│ │ resolve.py │ │ retrieve.py │ │
│ │ 去重/矛盾消解 │ │ 混合检索+评分 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ┌─ 维护路径 ──────┐ ┌─ 统计路径 ──────┐ │
│ │ consolidator │ │ decay.py │ │
│ │ 聚类合并+剪枝 │ │ 遗忘曲线+强度 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
├──────────────────────────────────────────────┤
│ embedding.py │ graph.py │
│ 768d / 1024d 向量编码 │ NetworkX 语义图谱 │
├──────────────────────────────────────────────┤
│ db.py — DuckDB │
│ 向量存储 · BM25 全文索引 · CRUD │
└──────────────────────────────────────────────┘
数据文件(~/.engram/):
├── memories.duckdb # 向量数据库(单文件,零运维)
├── graph.json # 语义图谱(JSON 序列化)
└── model_cache/ # 嵌入模型缓存Интерфейс инструментов MCP
Инструмент | Параметры | Назначение |
|
| Семантический поиск воспоминаний, вызывается в начале каждой задачи. Возвращает результат с метаданными |
|
| Сохранение нового воспоминания (авто-дедупликация), возвращает memory_id |
|
| Обновление существующего воспоминания |
|
| Структурированная передача сессии, запись текущего прогресса для продолжения |
|
| v0.4 Структурированное определение причин сбоев, авто-связь с компонентом/серьезностью/решением |
|
| v0.4 Снимок прогресса функции, отслеживание состояния между сессиями |
|
| Ручной запуск консолидации памяти |
|
| Статистика памяти + v0.4 инженерные метрики (тренды сбоев, здоровье компонентов, активные функции) |
Справочник важности
Значение | Сценарий использования |
0.9–1.0 | Основная личность, постоянные факты («пользователь — бэкенд-разработчик») |
0.7–0.8 | Сильные предпочтения, архитектурные решения («проект на Go + PostgreSQL») |
0.5 | Обычные факты проекта («недавно делал рефакторинг модуля логина») |
0.2–0.3 | Временный контекст сессии («тестовый аккаунт для этой отладки») |
Преимущества для пользователя
1. Агент по-настоящему «знает» вас
Больше не нужно каждый раз представлять свой стек технологий, привычки кодинга и контекст проекта. Агент помнит, что вы предпочитаете Go, а не Java, знает, что у вас monorepo, и понимает архитектурные решения, принятые на прошлой неделе.
2. Естественная эволюция знаний
Разрешение противоречий означает, что знания агента всегда актуальны. Перешли с React на Vue? Один диалог автоматически обновит данные. Не нужно вручную поддерживать список того, «что агент должен знать».
3. Нулевое обслуживание
Не нужно вручную чистить старую память — кривая забывания делает это автоматически.
Не нужно вручную объединять дубликаты — консолидатор делает это сам.
Не нужно беспокоиться о раздувании данных — автоматическое обслуживание каждые 12 часов.
Не нужны внешние сервисы — DuckDB в одном файле, работает «из коробки».
4. Полная конфиденциальность
Все данные хранятся в ~/.engram/, нет выхода в сеть, нет загрузки в облако, нет зависимости от сторонних сервисов. Модели эмбеддингов также работают локально. Ваша память принадлежит только вам.
5. Ассоциативное обнаружение
Графовое расширение позволяет агенту не просто «найти то, что искали», но и пройти по семантическим связям, чтобы найти связанные, но не прямо совпадающие знания. Это как спросить коллегу о чем-то: он не только ответит на вопрос, но и добавит: «Кстати, это связано с тем случаем на прошлой неделе».
6. Становится умнее с использованием
Механизм подкрепления воспоминаний: воспоминания, к которым часто обращаются, становятся сильнее, а затухают медленнее. Агент автоматически учится тому, какие знания для вас наиболее ценны.
Быстрый старт
# 安装
pip install mcp-engram
# 初始化(下载模型、创建数据库)
engram-setup
# 按照输出提示将配置块添加到 Claude Code 配置中Настройка Claude Code
{
"mcpServers": {
"engram": {
"command": "engram",
"env": {
"HF_ENDPOINT": "https://hf-mirror.com"
}
}
}
}Интеграция CLAUDE.md
Добавьте в CLAUDE.md проекта:
## Memory Rules
### Step 1 — 先回忆再行动
每次任务开始时,用请求中的关键词调用 `recall_memory`。
### Step 2 — 学到新东西就存
| 情况 | 操作 |
|------|------|
| 全新知识 | `store_memory(content, importance)` |
| 补充已有 | `update_memory(memory_id, merged_content)` |
| 推翻已有 | `update_memory(memory_id, new_content)` |Переменные окружения
Переменная | Значение по умолчанию | Описание |
|
| Зеркало моделей HuggingFace |
|
| Имя модели эмбеддингов |
Справочник пороговых значений
Параметр | Значение | Значение |
Размерность эмбеддинга | 768 | all-mpnet-base-v2 |
Дедупликация REINFORCE | ≥ 0.85 | Почти идентично, только увеличение счетчика обращений |
Дедупликация MERGE/REPLACE | 0.65~0.84 | Детекция противоречий или объединение |
Кластеризация консолидации | ≥ 0.70 | Автоматическое объединение похожих воспоминаний |
Создание ребер графа | ≥ 0.40 | Создание семантической связи |
Порог удаления | < 0.05 | Удаление полностью затухших воспоминаний |
Высокий порог поиска | ≥ 0.50 | Основной векторный поиск |
Низкий порог поиска | ≥ 0.20 | Поиск с понижением приоритета |
Вес BM25 | 40% | Вклад совпадения ключевых слов |
Вес вектора | 60% | Вклад семантического совпадения |
Бонус графа | 30% | Дополнительный балл за связанные воспоминания |
Бенчмарк LoCoMo
Оценка качества поиска на основе LoCoMo (стандарт для долгосрочной памяти в диалогах от Snap Research). LoCoMo — это стандарт, используемый такими продуктами, как Mem0/Zep/Memobase/MemMachine.
Конфигурация оценки
Датасет: locomo10.json (2/10 диалогов, 233 QA, исключая adversarial)
Поиск: recall() top-k=5
LLM: DeepSeek-V3.2 / GLM-5.1 (Примечание: базовые продукты используют GPT-4o-mini)
Метрики: Token-level F1 (официальная метрика LoCoMo) + Hit@5 (точность попадания без участия LLM)
Turn Mode — Лучшая конфигурация (bge-m3 + bge-reranker-v2-m3, DeepSeek-V3.2)
Двухэтапный поиск: recall top-50 → CrossEncoder rerank to top-5, корректировка веса importance=1.0
Категория | Кол-во | F1 | Hit@5 |
Single-Hop | 114 | 0.5121 | 76.3% |
Temporal | 63 | 0.4501 | 95.2% |
Multi-Hop | 43 | 0.3181 | 60.5% |
Open-Domain | 13 | 0.1324 | 61.5% |
Overall | 233 | 0.4383 | 77.7% |
Turn Mode — Путь оптимизации (DeepSeek-V3.2)
Конфигурация | Overall F1 | Overall Hit@5 |
bge-m3 + reranker + weight fix | 0.4383 | 77.7% |
bge-m3 + reranker (r20) | 0.3913 | 69.1% |
bge-m3 (API, 1024d) | 0.3514 | 61.8% |
all-mpnet-base-v2 (local, 768d) | 0.2916 | 51.5% |
Четыре этапа оптимизации дали суммарный прирост F1 +50.3% (0.29 → 0.44), Hit@5 +26.2pp (51.5% → 77.7%).
Turn Mode — Сравнение LLM (all-mpnet-base-v2)
LLM | Overall F1 | Single-Hop | Temporal | Multi-Hop | Open-Domain | Время |
DeepSeek-V3.2 | 0.2916 | 0.3470 | 0.3257 | 0.1772 | 0.0192 | 239с |
GLM-5.1 | 0.2477 | 0.2672 | 0.3214 | 0.1430 | 0.0659 | 2011с |
Observation Mode (абстрактные утвердительные факты)
Категория | Кол-во | F1 |
Single-Hop | 114 | 0.3000 |
Multi-Hop | 43 | 0.1837 |
Open-Domain | 13 | 0.0659 |
Temporal | 63 | 0.0590 |
Overall | 233 | 0.2003 |
Сравнение с отраслевыми стандартами
Система | Overall F1 | LLM | Эмбеддинг |
MemMachine | 0.8487 | GPT-4o-mini | — |
Memobase | 0.7578 | GPT-4o-mini | — |
Zep | 0.7514 | GPT-4o-mini | — |
Mem0 | 0.6688 | GPT-4o-mini | — |
Engram | 0.4383 | DeepSeek-V3.2 | bge-m3 + reranker |
Вывод: Четыре этапа оптимизации mpnet(0.29) → bge-m3(0.35) → +reranker(0.39) → +weight fix+r50(0.44). Hit@5: 51.5% → 77.7%. Разрыв с Mem0(0.67) сократился с 56% до 35%.
Справочник Best Config
Рекомендуемая конфигурация:
bge-m3(1024d) +bge-reranker-v2-m3двухэтапный поиск
Метрика
Значение
Описание
Overall F1
0.4383
Token-level, DeepSeek-V3.2
Overall Hit@5
77.7%
Чистая точность поиска, LLM-независимая
Temporal Hit@5
95.2%
Отличные показатели в вопросах по времени
Масштаб оптимизации
F1 +50.3%, Hit +26.2pp
Суммарно за 4 этапа (относительно начального mpnet)
Ключевые параметры:
recall top-50 → rerank to top-5,importance=1.0корректировка веса. Локальное развертывание без облачных зависимостей, разрыв с Mem0 (использующим GPT-4o-mini) сокращен до 35%.
Разработка
git clone https://github.com/hugfeature/engram.git
cd engram
pip install -e ".[dev]"
pytest tests/ -vЛицензия
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Persistent memory for AI agents. EU-hosted, privacy-first, hybrid recall, contradiction detection.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local memory engine for AI agents. Stores conversation episodes, consolidates knowledge through a neuroscience-inspired lifecycle, and builds a personal knowledge graph — all in a local SQLite database.14MIT
- AlicenseNot gradedqualityAmaintenanceOpen-source persistent memory infrastructure for AI agents.150321Apache 2.0
- AlicenseNot gradedqualityDmaintenancePersistent memory for AI coding agents with local-first, zero-cost, privacy-first SQLite/FTS5 storage and biological-inspired decay.182MIT
- AlicenseNot gradedqualityBmaintenanceLocal-first, multi-user shared memory for AI agents with semantic search, offline support, and team synchronization.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hugfeature/engram'
If you have feedback or need assistance with the MCP directory API, please join our Discord server