AI记忆系统

Engram是一个基于Cloudflare的全球记忆系统,通过Model Context Protocol (MCP)为AI助手提供跨会话和平台的持久语义记忆。

  • by Foundation42
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 Foundation42/engram

使用说明

Engram-全局存储系统

基于Cloudflare的全局内存系统,使用模型上下文协议(MCP)在AI助手和会话之间提供持久的语义内存。

由克里斯蒂安·博蒙特(@chrisbe42)建造-2025年11月

什么是Engram?

Engram是一个无服务器存储系统,允许AI助手跨不同会话、平台和提供商记住信息。在Claude Code中保存内存,在Claude Chat中回忆它。将偏好保存在一个会话中,未来的每次AI交互都会知道这些偏好。

主要特点:

  • 🌍 通用存储器:适用于所有启用MCP的客户端(Claude Code、Claude Chat、Cursor等)
  • ⚡ 边缘性能:在全球Cloudflare Workers上运行,延迟<50ms
  • 🔍 语义搜索:基于向量的搜索,使用嵌入进行智能召回
  • 🚀 异步处理:生成背景嵌入的即时响应
  • 💰 性价比高的:在Cloudflare慷慨的免费套餐上运行+队列每月5美元

建筑

┌─────────────────┐
│   MCP Client    │  (Claude Code, Claude Chat, etc.)
│  (save_memory)  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Cloudflare      │
│ Worker (SSE)    │  ← Instant "Ack" response
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Cloudflare      │
│ Queue           │  ← Async processing
└────────┬────────┘
         │
         ▼
    ┌────────────────────┐
    │  Queue Consumer    │
    │  - Generate Vector │
    │  - Store Memory    │
    └─────┬──────────────┘
          │
    ┌─────┴─────┬──────────┐
    ▼           ▼          ▼
┌────────┐ ┌──────────┐ ┌────┐
│Vectorize│ │Workers AI│ │ D1 │
│(Search) │ │(Embedder)│ │(DB)│
└─────────┘ └──────────┘ └────┘

技术栈

  • Cloudflare员工:边缘无服务器计算
  • Cloudflare矢量化:用于语义搜索的矢量数据库
  • Cloudflare D1:用于元数据和分析的SQLite数据库
  • Cloudflare队列:异步消息处理
  • Cloudflare人工智能:BGE-base-en-v1.5嵌入模型
  • MCP-SDK:用于AI工具集成的模型上下文协议

部署

先决条件

  • Cloudflare帐户与工人付费计划($5/月-队列需要)
  • 已安装Node.js和npm
  • Wrangler CLI(包含在项目中)

安装说明

  1. 克隆和安装依赖关系:
git clone https://github.com/Foundation42/engram.git
cd engram
npm install
  1. 登录Cloudflare:
npx wrangler login
  1. 创建基础设施:
# Create D1 database
npx wrangler d1 create memory-db

# Create Vectorize index (768 dimensions for BGE embeddings)
npx wrangler vectorize create memory-index --dimensions=768 --metric=cosine

# Create Queue
npx wrangler queues create memory-ingest
  1. 更新wrangler.json:

更换 database_id 在 wrangler.jsonc 使用步骤3中的ID:

{
  "d1_databases": [
    {
      "binding": "DB",
      "database_name": "memory-db",
      "database_id": "YOUR_DATABASE_ID_HERE"
    }
  ]
}
  1. 初始化数据库架构:
npx wrangler d1 execute memory-db --remote --command "CREATE TABLE IF NOT EXISTS memories (
  id TEXT PRIMARY KEY,
  text TEXT NOT NULL,
  tags TEXT,
  created_at INTEGER NOT NULL,
  source_app TEXT,
  session_id TEXT
);"
  1. 部署:
npm run deploy

您的内存系统将部署到: https://memory-mcp.YOUR-SUBDOMAIN.workers.dev

用法

MCP工具

Engram通过模型上下文协议公开了两个工具:

1. save_memory

将信息保存到全局内存。

参数:

  • text (必填):要记住的文本
  • context_tags (可选):用于分类的标签数组(例如。, ["coding", "preferences"])
  • source_app (可选):此内存来自的应用程序
  • session_id (可选):会话标识符

例子:

save_memory({
  text: "Christian prefers TypeScript over JavaScript for production code",
  context_tags: ["preferences", "coding"],
  source_app: "Claude Code"
})

2. search_memory

使用语义向量搜索来搜索记忆。

参数:

  • query (必填):搜索什么
  • limit (可选):结果数量(默认值:5)
  • filter_tags (可选):按特定标签筛选

例子:

search_memory({
  query: "What are Christian's coding preferences?",
  limit: 3
})

连接到MCP客户端

克劳德代码

claude mcp add --transport sse engram https://memory-mcp.YOUR-SUBDOMAIN.workers.dev/sse

克劳德桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "engram": {
      "transport": {
        "type": "sse",
        "url": "https://memory-mcp.YOUR-SUBDOMAIN.workers.dev/sse"
      }
    }
  }
}

其他MCP客户端

使用SSE端点: https://memory-mcp.YOUR-SUBDOMAIN.workers.dev/sse

发展

本地开发

npm run dev

这将通过热重新加载启动本地开发服务器。

查看日志

npx wrangler tail --format pretty

查询D1数据库

# Local
npx wrangler d1 execute memory-db --command "SELECT * FROM memories LIMIT 10;"

# Remote
npx wrangler d1 execute memory-db --remote --command "SELECT * FROM memories LIMIT 10;"

存储结构

每个内存都存储有:

矢量化(用于语义搜索):

  • id:UUID
  • values:768维嵌入向量
  • metadata:
    • text:内存内容
    • tags:JSON标签数组
    • created_at:ISO时间戳
    • source_app:它从哪里来的
    • session_id:会话标识符

D1数据库(用于分析):

  • id:UUID
  • text:内存内容
  • tags:JSON字符串
  • created_at:Unix时间戳
  • source_app:应用程序名称
  • session_id:会话标识符

记忆管理员

Engram包括 自主记忆管理员 它每天运行,以保持你的记忆干净高效。

它的作用:

  • 每天运行于UTC凌晨2点 通过Cloudflare Cron触发器
  • 检测重复项 使用向量相似度(相似度得分>0.95)
  • 智能整合 使用Llama 3.3 70B的相似记忆
  • 保存重要信息 同时消除冗余
  • 更新D1和Vectorize 与巩固的记忆
  • 每次运行最多处理10个组 避免超时

它是如何工作的:

1. Query all memories from D1
2. For each memory, search Vectorize for similar ones
3. Group memories with >95% similarity
4. Use LLM to create consolidated version
5. Update original memory with consolidated text
6. Delete duplicate memories
7. Log consolidation results

策展人使用 Llama 3.3 70B说明书 智能合并内存,确保信息不丢失,同时减少噪声和冗余。

未来的增强功能

要添加的潜在功能:

  • 记忆下降:陈年的旧记忆
  • 分析仪表盘:随着时间的推移,可视化内存模式
  • 高级过滤:按日期范围、来源等进行复杂查询。
  • 内存导出:批量导出功能
  • 记忆合成:从集群中创建更高级别的摘要记忆
  • 访问控制:具有权限的多用户支持
  • 插件架构:web、API、数据库的统一搜索界面

成本估算

基于适度使用(100个记忆/天):

  • 工人:免费套餐(10万次请求/天)
  • 向量化:免费套餐(每月1000万次查询)
  • 第1天:免费层(5GB存储空间)
  • 工人AI:免费套餐(1万次请求/天)
  • 队列:$5/月(需要工人带薪计划)

总计:约$5/月

许可

该项目采用双重许可模式:

  • MIT许可证 -个人、教育和社区项目免费
  • 商业许可证 -用于专有或创收用途

如果您的组织在产品、服务或平台中使用Engram,请联系: license@foundation42.org

看 许可证 和 许可证-麻省理工学院 了解详情。

作者

建造于 克里斯蒂安·博蒙特 (@chrisbe42) Entrained AI研究所创始人 英国西约克郡Liversedge

链接

  • github:https://github.com/Foundation42/engram
  • Cloudflare员工:https://workers.cloudflare.com
  • 模型上下文协议:https://modelcontextprotocol.io

印痕是印在物理物质中的认知信息单位,理论上是存储记忆的手段