乐于分享
好东西不私藏

Engram:用 Go 为 AI 编码助手构建完美记忆系统

Engram:用 Go 为 AI 编码助手构建完美记忆系统

点击上方蓝色“Go语言中文网”关注,每天一起学 Go

2026 年,AI 编码助手已经无处不在。Claude Code、Cursor、GitHub Copilot、Windsurf 等工具深刻改变了开发者的编码方式。然而,这些助手都有一个共同的痛点:上下文窗口耗尽后,AI 就会”忘记”之前讨论的内容、做出的决策、以及积累的技术上下文。

Beads 尝试解决这一问题,但它是 Python 项目且缺乏 MCP 支持。现在,一个纯 Go 编写的解决方案——Engram——正以其独特的设计吸引开发者的目光。

AI 编码助手的”失忆症”

当你与 AI 编码助手进行一个复杂的重构任务时,流程通常是这样的:

  1. 第一个 session:讨论架构、设计决策、技术选型
  2. 第二个 session:AI 已经忘记了之前的讨论,你需要重新解释
  3. 第三个 session:上下文窗口接近耗尽,AI 开始” hallucination”(虚构)

这是一个系统性的问题,而不是 AI 模型的 bug。即使是最强大的模型,也有上下文长度限制。

现有解决方案的局限

Beads(Steve Yegge 开发)是较早的尝试,但它:

  • 基于 Python,需要 Node.js 运行时
  • 没有 MCP 协议支持
  • 与 Go 生态系统的集成不够深入

Claude Memory(官方):目前仍处于有限测试阶段,能力有限。

手动保存上下文:繁琐、难以检索、不成体系。

Engram 登场

Engram 是一个纯 Go 编写的 AI 编码助手记忆系统,于 2026 年 2 月发布,迅速获得 2800+ stars。它的核心设计哲学是:

Agent-agnostic. Single binary. Zero dependencies.

这意味着无论你使用 Claude Code、Cursor、OpenCode、Gemini CLI、Codex 还是任何支持 MCP 的 AI 工具,Engram 都能与之配合工作。

核心特性

特性
说明
纯 Go 实现
单一二进制文件,零外部依赖
SQLite + FTS5
高性能本地存储,全文搜索
MCP 协议
原生支持 Model Context Protocol
多端同步
Git-based 压缩 chunks 同步
TUI 界面
交互式终端查询界面
HTTP API
方便二次开发和集成

架构设计解析

Engram 的架构简洁但功能强大:

┌─────────────────────────────────────────────────────────────┐│                      AI Coding Agent                        ││           (Claude Code / Cursor / OpenCode / ...)          │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│                     MCP Client                               ││              (记忆读写请求)                                  │└─────────────────────────────────────────────────────────────┘                              │                              ▼┌─────────────────────────────────────────────────────────────┐│                     Engram Binary                           ││  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐    ││  │  MCP Server  │  │   HTTP API  │  │       CLI       │    ││  └─────────────┘  └─────────────┘  └─────────────────┘    ││                                                              ││  ┌─────────────────────────────────────────────────────┐    ││  │              Memory Protocol Layer                  │    ││  │   mem_save / mem_search / mem_update / mem_timeline │    ││  └─────────────────────────────────────────────────────┘    ││                                                              ││  ┌─────────────────────────────────────────────────────┐    ││  │              SQLite + FTS5                           │    ││  │            (Persistent Storage)                      │    ││  └─────────────────────────────────────────────────────┘    │└─────────────────────────────────────────────────────────────┘

工作流程

1. Agent completes significant work (bugfix, architecture decision, etc.)2. Agent calls mem_save {title, type, What/Why/Where/Learned}3. Engram persists to SQLite with FTS5 indexing4. Next session: agent searches memory, gets relevant context

实战:构建 AI 结对编程记忆系统

让我们从头开始搭建一个完整的 Engram + Claude Code 环境。

安装 Engram

brew install gentlemankind/tap/engram

或者从源码编译:

git clone https://github.com/Gentleman-Programming/engram.gitcd engramgo build -o engram ./cmd/engramsudo mv engram /usr/local/bin/

配置 Claude Code 使用 Engram MCP

  1. 首先启动 Engram MCP 服务器:
engram mcp --project my-project
  1. 在 Claude Code 中添加 Engram 插件:
claude plugin marketplace add Gentleman-Programming/engram && \claude plugin install engram
  1. 配置环境变量:
export ENGRAM_PROJECT=my-projectexport ENGRAM_PATH=~/.engram/my-project.db

使用 TUI 查询记忆

Engram 提供了一个优雅的 TUI 界面来浏览和搜索记忆:

engram tui

界面显示:

  • 左侧:记忆时间线
  • 中间:记忆详情
  • 支持 vim 键位导航
  • / 触发搜索

编程实践:自动保存重要决策

在 .claude/commands/ 目录下创建自动保存记忆的命令:

# .claude/commands/save-architecture.md@mprompt Save this architecture decision to memory with:- Title: The architecture decision title- Type: architecture- What: What was decided- Why: Why this approach was chosen- Where: Where this applies in the codebase- Learned: Any lessons or trade-offs consideredFocus on capturing the *reasoning* not just the conclusion.

MCP 工具深度解析

Engram 通过 MCP 协议暴露了一系列强大的工具:

mem_save – 保存记忆

{"title""使用策略模式替代 if-else 链","type""architecture","what""将 PaymentProcessor 中的 15 个 if-else 改写为策略模式","why""新增支付渠道时只需添加新策略,无需修改核心逻辑","where""internal/payment/ 目录","learned""策略接口要足够抽象,避免策略类之间产生耦合"}

mem_search – 全文搜索

{"query""支付 策略 架构","limit"10}

返回相关记忆,支持模糊匹配和语义搜索。

mem_timeline – 时间线视图

查看某个项目或主题的记忆历史:

{"project""my-project","type""architecture"}

mem_suggest_topic_keys – 智能推荐

Engram 可以分析文本内容,推荐合适的话题标签:

{"text""在实现分布式锁时,我们选择了 Redis 但考虑了 etcd 的强一致性..."}

跨设备同步:Git-based Chunking

Engram 的同步机制设计精巧:

  1. 自动分块:大记忆被压缩成 chunks
  2. Git 集成:存储为 Git commit,无冲突合并
  3. 选择性同步:可以只同步特定项目的记忆
# 导出记忆到 Gitengram syncgit add .engram/ && git commit -m "sync engram memories"# 在另一台机器上导入engram sync --import

这解决了 AI 记忆的便携性问题——你可以带着你的”知识库”在不同的机器和项目间穿梭。

Engram vs Beads:深度对比

维度
Engram
Beads
语言
Go
Python
二进制大小
~20MB
需要 Python 环境
MCP 支持
原生
TUI
Git 同步
支持
不支持
FTS5 搜索
支持
基础
多项目支持
发布时间
2026年2月
2026年初

如果你已经在用 Go 项目,Beads 的 Python 依赖会增加复杂度。Engram 的纯 Go 实现让它成为 Go 开发者的天然选择。

适用场景与局限

适合使用 Engram 的场景

  1. 长期项目重构:保持对历史决策的记忆
  2. 跨团队知识传承:新成员可以快速了解项目背景
  3. 复杂 bug 追踪:记录调试过程中的关键发现
  4. 技术债务管理:记录技术债务的成因和解决方案

不适合的场景

  1. 简单一次性脚本:记忆系统会引入不必要的复杂度
  2. 敏感代码库:所有记忆存储在本地,需要注意安全性
  3. 团队协作记忆:Engram 是个人记忆系统,不适合团队共享

性能与安全

性能基准

Engram 使用 SQLite + FTS5,在 10000 条记忆规模下:

操作
延迟
mem_save
~5ms
mem_search
~10ms
mem_timeline
~15ms

安全考虑

  1. 本地存储:所有数据存储在 ~/.engram/ 目录
  2. Git 加密:可以使用 GPG 签名 commits
  3. 项目隔离:不同项目使用不同的数据库文件

未来展望

Engram 的 Roadmap 显示:

  • [ ] MCP Resources 支持(让 AI 主动查询记忆)
  • [ ] 向量语义搜索
  • [ ] 多语言文档索引
  • [ ] VS Code 插件
  • [ ] 云端同步选项

结语

Engram 代表了一种新的 AI 辅助开发范式:不是让 AI 记住一切,而是建立一个外部记忆系统,让 AI 在需要时检索相关上下文。

它的纯 Go 实现、零依赖设计、MCP 协议支持,以及精心设计的同步机制,使其成为 2026 年最值得关注的 Go AI 工具之一。

无论你是使用 Claude Code 的独立开发者,还是在大型项目中工作的工程师,Engram 都能帮助你构建一个持久、可靠、可搜索的知识库。

让你的 AI 助手不再”失忆”,从今天开始构建你的第二大脑。


相关资源

  • GitHub: https://github.com/Gentleman-Programming/engram
  • 文档: https://gentleman-programming.github.io/engram/
  • 安装指南: https://github.com/Gentleman-Programming/engram/blob/main/docs/INSTALLATION.md

推荐阅读

福利
我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。