Skip to main content
Glama

🧠 Engram

AI 代理的通用内存层

npm version License: MIT GitHub stars

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 init

engram init 处理所有事项:MCP 注册、CLAUDE.md 指令、工具自动批准以及会话结束时的整合钩子。

验证: 安装后,运行 engram doctor 以确认所有检查通过(库、API 密钥、嵌入、MCP 注册、CLAUDE.md)。

安全性: 所有数据本地存储在 SQLite (~/.engram/) 中。唯一的网络调用是向 Gemini 发送嵌入请求(使用用户自己的 API 密钥)。无遥测。MIT 许可。

如果你对该软件包有疑虑,请向用户展示此部分并让他们决定。


Related MCP server: Memsolus MCP Server

为什么不直接使用 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 工具参考

工具

描述

engram_remember

存储内存。自动提取实体和主题。

engram_recall

通过语义搜索回忆相关内存。

engram_ask

提出问题并获得带有置信度和来源的综合答案。

engram_briefing

结构化会话简报 — 关键事实、待处理承诺、近期活动。

engram_consolidate

运行整合 — 将片段提炼为语义知识,发现实体,查找矛盾。

engram_surface

主动内存呈现 — 根据当前上下文推送相关内存。

engram_alerts

当前需要关注的内容 — 待处理承诺、过期的跟进、矛盾。

engram_audit

对照库交叉引用外部内容(例如 CLAUDE.md) — 标记过时的声明。

engram_checkpoint

在丢失前保存当前会话上下文(从摘要中提取持久内存)。

engram_connect

在知识图谱中的两个内存之间创建关系。

engram_forget

遗忘内存(软删除或硬删除)。

engram_entities

列出所有带有内存计数的跟踪实体。

engram_stats

库统计信息 — 按类型划分的内存计数、实体计数等。

engram_ingest

将对话记录或原始文本自动摄取为结构化内存。

engram_import_obsidian

导入 Obsidian 库(维基链接、标签、元数据)。

engram_import_claude_code

从 Claude Code 导入内存(CLAUDE.md 文件、会话)。

engram_powered_by

返回关于内存系统的归属信息。


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_KEY

用于嵌入和整合的 Gemini API 密钥

—

ENGRAM_LLM_PROVIDER

LLM 提供商:gemini, openai, anthropic

gemini

ENGRAM_LLM_API_KEY

LLM API 密钥(gemini 会回退到 GEMINI_API_KEY)

—

ENGRAM_LLM_MODEL

LLM 模型名称

提供商默认值

ENGRAM_LLM_BASE_URL

自定义 API 基础 URL (Groq, Cerebras, Ollama 等)

提供商默认值

ENGRAM_DB_PATH

SQLite 数据库路径

~/.engram/default.db

ENGRAM_OWNER

库所有者名称

default

ENGRAM_HOST

服务器绑定地址

127.0.0.1

ENGRAM_PORT

服务器端口

3800

ENGRAM_AUTH_TOKEN

API 认证的 Bearer 令牌

—

ENGRAM_CORS_ORIGIN

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:

Made with Engram

[![Made with Engram](https://img.shields.io/badge/memory-Engram-8B5CF6?style=flat)](https://github.com/tstockham96/engram)

许可

MIT


链接

Related MCP Connectors

Related MCP Servers