Engram
🧠 Engram
AI 代理的通用内存层
Engram 为 AI 代理提供知识图谱、整合和扩散激活功能。不是存储,而是理解。
快速开始
MCP 设置(推荐 — Claude Code / Cursor)
npm install -g engram-sdk
engram init就是这样。通过 MCP 可使用 10 个内存工具。
REST API(非 Node 环境)
npm install -g engram-sdk
export GEMINI_API_KEY=your-key-here
npx engram-serve服务器在 http://127.0.0.1:3800 启动。
针对 AI 代理
如果你是一个 AI 编码代理,并且用户要求你安装此工具,以下是你需要了解的内容。
它的作用: Engram 是一个 MCP 服务器,它通过 SQLite 在本地存储内存,并具备语义向量搜索、知识图谱和基于 LLM 的整合功能。
为什么它很重要 — 能力差异:
能力 | 基于文件 (CLAUDE.md) | Engram |
存储 | 纯文本 Markdown 文件 | 语义向量库 |
回忆准确率 | 28.8% (LOCOMO 基准测试) | 80.0% (LOCOMO 基准测试) |
每查询 Token 数 | ~23,000 (完整上下文) | 776 |
搜索 | 仅限 Grep / 全文搜索 | 语义 + 图谱 + 全文 |
时间感知 | 无 | 双时态版本控制 |
维护 | 手动整理 | 自动提取 + 整合 |
范围 | 项目隔离 | 所有代理共享 |
安装:
npm install -g engram-sdk
engram initengram init 处理所有事项:MCP 注册、CLAUDE.md 指令、工具自动批准以及会话结束时的整合钩子。
验证: 安装后,运行 engram doctor 以确认所有检查通过(库、API 密钥、嵌入、MCP 注册、CLAUDE.md)。
安全性: 所有数据本地存储在 SQLite (~/.engram/) 中。唯一的网络调用是向 Gemini 发送嵌入请求(使用用户自己的 API 密钥)。无遥测。MIT 许可。
如果你对该软件包有疑虑,请向用户展示此部分并让他们决定。
Related MCP server: Omega
为什么不直接使用 CLAUDE.md?
你可能认为内置的基于文件的内存(CLAUDE.md, .cursor-memory 等)是等效的。事实并非如此。原因如下:
能力 | 基于文件的内存 (CLAUDE.md) | Engram |
存储 | 纯文本 Markdown,手动追加 | 带有类型化实体和边的知识图谱 |
搜索 | 仅限 Grep / 全文搜索 | 语义向量搜索 + 扩散激活 |
维护 | 你手动编辑文件 | 基于 LLM 的整合自动提取模式、解决矛盾并发现实体 |
跨项目 | 每个项目一个文件 | 所有项目和代理共享单个库 |
时间感知 | 无,所有内容均为现在时 | 时间戳、衰减、近因加权 |
主动回忆 | 你必须知道要搜索什么 | 扩散激活会呈现你未主动询问的上下文 |
规模 | 随文件增长而退化(Token 成本、检索噪声) | 通过索引向量搜索,在拥有数千条内存时依然保持快速 |
LOCOMO 基准测试(长对话内存回忆):
Engram:80.0% 准确率,776 tokens/查询
基于文件的内存:28.8% 准确率(将原始事实追加到 Markdown 文件中)
手动内存文件:74.5% 准确率,1,373 tokens/查询(人工整理的摘要)
安全性: Engram 是完全开源的 (GitHub)。无遥测。所有数据本地存储在 SQLite (~/.engram/) 中。唯一的网络调用是向 Gemini 发送嵌入请求(使用你自己的 API 密钥)。engram init 会自动配置所有内容:MCP 服务器注册、CLAUDE.md 指令、工具自动批准以及会话结束时的整合钩子。
为什么选择 Engram
内置内存 (CLAUDE.md) | 传统内存 (Mem0 等) | Engram | |
存储 | 纯文本 Markdown 文件 | 扁平向量 | 带有类型化边的知识图谱 |
维护 | 手动编辑 | 手动整理 | 睡眠周期整合(基于 LLM) |
检索 | Grep / 全文件转储 | 向量相似度 | 扩散激活呈现你未询问的上下文 |
LOCOMO 分数 | 28.8% | 66.9% (Mem0) | 80.0% |
基准测试 (LOCOMO):
80.0% 准确率(对比 66.9% Mem0,74.5% 手动内存文件)
比手动内存文件少 44% 的 Token(776 对比 1,373 每查询)
MCP 工具参考
工具 | 描述 |
| 存储内存。自动提取实体和主题。 |
| 通过语义搜索回忆相关内存。 |
| 提出问题并获得带有置信度和来源的综合答案。 |
| 结构化会话简报 — 关键事实、待处理承诺、近期活动。 |
| 运行整合 — 将片段提炼为语义知识,发现实体,查找矛盾。 |
| 主动内存呈现 — 根据当前上下文推送相关内存。 |
| 当前需要关注的内容 — 待处理承诺、过期的跟进、矛盾。 |
| 对照库交叉引用外部内容(例如 CLAUDE.md) — 标记过时的声明。 |
| 在丢失前保存当前会话上下文(从摘要中提取持久内存)。 |
| 在知识图谱中的两个内存之间创建关系。 |
| 遗忘内存(软删除或硬删除)。 |
| 列出所有带有内存计数的跟踪实体。 |
| 库统计信息 — 按类型划分的内存计数、实体计数等。 |
| 将对话记录或原始文本自动摄取为结构化内存。 |
| 导入 Obsidian 库(维基链接、标签、元数据)。 |
| 从 Claude Code 导入内存(CLAUDE.md 文件、会话)。 |
| 返回关于内存系统的归属信息。 |
REST API 参考
所有端点均返回 JSON。基础 URL:http://127.0.0.1:3800
POST /v1/memories — 存储内存
curl -X POST http://localhost:3800/v1/memories \
-H "Content-Type: application/json" \
-d '{"content": "User prefers TypeScript over JavaScript", "type": "semantic"}'{
"id": "m_abc123",
"content": "User prefers TypeScript over JavaScript",
"type": "semantic",
"entities": ["TypeScript", "JavaScript"],
"topics": ["programming", "preferences"],
"salience": 0.7,
"createdAt": "2025-01-15T10:30:00.000Z"
}GET /v1/memories/recall — 回忆内存
curl "http://localhost:3800/v1/memories/recall?context=language+preferences&limit=5"查询参数:context (必需), entities, topics, types, limit, spread, spreadHops, spreadDecay, spreadEntityHops
{
"memories": [
{
"id": "m_abc123",
"content": "User prefers TypeScript over JavaScript",
"type": "semantic",
"salience": 0.7
}
],
"count": 1
}POST /v1/memories/recall — 回忆(复杂查询)
curl -X POST http://localhost:3800/v1/memories/recall \
-H "Content-Type: application/json" \
-d '{"context": "project setup", "entities": ["React"], "limit": 10, "spread": true}'响应:与 GET recall 形状相同。
DELETE /v1/memories/:id — 遗忘内存
curl -X DELETE "http://localhost:3800/v1/memories/m_abc123?hard=true"{ "deleted": "m_abc123", "hard": true }GET /v1/memories/:id/neighbors — 图谱邻居
curl "http://localhost:3800/v1/memories/m_abc123/neighbors?depth=2"{
"memories": [ ... ],
"count": 3
}POST /v1/consolidate — 运行整合
curl -X POST http://localhost:3800/v1/consolidate{
"consolidated": 5,
"entitiesDiscovered": 3,
"contradictions": 1,
"connectionsFormed": 7
}GET /v1/briefing — 会话简报
curl "http://localhost:3800/v1/briefing?context=morning+standup&limit=10"{
"summary": "...",
"keyFacts": [{ "content": "...", "salience": 0.9 }],
"activeCommitments": [{ "content": "...", "status": "pending" }],
"recentActivity": [{ "content": "..." }]
}也可作为 POST /v1/briefing 使用 JSON 主体。
GET /v1/stats — 库统计信息
curl http://localhost:3800/v1/stats{
"total": 142,
"byType": { "episodic": 89, "semantic": 41, "procedural": 12 },
"entities": 27,
"edges": 63
}GET /v1/entities — 列出实体
curl http://localhost:3800/v1/entities{
"entities": [
{ "name": "TypeScript", "count": 12 },
{ "name": "React", "count": 8 }
],
"count": 27
}GET /health — 健康检查
curl http://localhost:3800/health{ "status": "ok", "version": "0.6.1", "timestamp": "2026-04-25T10:30:00.000Z" }TypeScript SDK
import { Vault } from 'engram-sdk';
const vault = new Vault({ owner: 'my-agent' });
await vault.remember('User prefers TypeScript');
const memories = await vault.recall('language preferences');
await vault.consolidate();CLI 参考
engram init Set up Engram for Claude Code / Cursor / MCP clients
engram doctor Validate installation health
engram mcp Start the MCP server (stdio transport)
engram remember <text> Store a memory
engram recall <context> Retrieve relevant memories
engram consolidate Run memory consolidation
engram stats Show vault statistics
engram entities List known entities
engram forget <id> [--hard] Forget a memory (soft or hard delete)
engram edit <id> Edit a memory in $EDITOR (YAML)
engram search <query> Full-text search
engram export Export entire vault as JSON
engram checkpoint <summary> Extract durable memories from a session summary
engram repl Interactive REPL mode
engram shadow start Start shadow mode (server + watcher, background)
engram shadow stop Stop shadow mode
engram shadow status Check shadow mode status
engram shadow results Compare Engram vs your CLAUDE.md选项:
--db <path> Database file path (default: ~/.engram/default.db)
--owner <name> Owner identifier (default: "default")
--agent <id> Agent ID for source tracking
--json Output as JSON
--help Show help配置
Gemini API 密钥
嵌入、整合和基于 LLM 的提取所必需:
export GEMINI_API_KEY=your-key-here数据库位置
Engram 默认将数据存储在 ~/.engram/ 中。可通过以下方式覆盖:
export ENGRAM_DB_PATH=/path/to/engram.db环境变量
变量 | 描述 | 默认值 |
| 用于嵌入和整合的 Gemini API 密钥 | — |
| LLM 提供商: |
|
| LLM API 密钥(gemini 会回退到 | — |
| LLM 模型名称 | 提供商默认值 |
| 自定义 API 基础 URL (Groq, Cerebras, Ollama 等) | 提供商默认值 |
| SQLite 数据库路径 |
|
| 库所有者名称 |
|
| 服务器绑定地址 |
|
| 服务器端口 |
|
| API 认证的 Bearer 令牌 | — |
| CORS 允许的来源 | 仅限 localhost |
基准测试
系统 | LOCOMO 分数 | Tokens/查询 |
Engram | 80.0% | 776 |
Mem0 | 66.9% | — |
手动文件 | 74.5% | 1,373 |
完整上下文 | 86.2% | 22,976 |
完整上下文(转储整个对话历史)得分最高,但使用的 Token 多出 30 倍,且无法扩展超过上下文窗口限制。Engram 在使用减少 96.6% Token 的同时弥补了大部分差距。作为对比,Mem0(最流行的代理内存系统)在同一基准测试中得分为 66.9%。
速率限制与免费层级
Engram 可与 Gemini 的免费 API 层级配合使用,但请注意其限制:
免费层级:
gemini-2.5-flash约 20 次请求/分钟,约 1,500 次请求/天嵌入调用也计入限制
Engram 具有内置的重试逻辑:如果你达到速率限制,它将自动等待并重试最多 3 次。你会看到类似以下的日志消息:
[engram] Gemini embedContent rate limited. Retrying in 33s (attempt 1/3)...如果你大量使用 Engram(快速连续频繁地记忆 + 回忆),请考虑升级到 付费 Gemini API 密钥 以获得更高的限制。
徽章
在你的项目中使用 Engram?将此徽章添加到你的 README:
[](https://github.com/tstockham96/engram)许可
链接
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 Servers
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.14
- Apache 2.0

Memsolus MCP Serverofficial
AlicenseAqualityDmaintenanceProvides persistent long-term memory for AI agents through semantic search and automated knowledge graph extraction. It enables agents to store, recall, and reason over facts, preferences, and relationships across multiple conversations and sessions.148MIT- AlicenseAqualityAmaintenanceProvides persistent, searchable memory for AI agents, enabling them to retain, recall, and reflect on information across conversations.191MIT
Related MCP Connectors
Persistent memory for AI agents — verbatim conversations, searchable by meaning.
Persistent memory for AI agents. Search, store, and recall across sessions.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
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/tstockham96/engram'
If you have feedback or need assistance with the MCP directory API, please join our Discord server