Total Recall:给 AI 编程助手装上”持久记忆”,告别每次从零开始
你的 AI 编程助手是不是每次对话都”失忆”?纠正过的错误再犯、项目偏好反复设置、跨工具切换上下文全丢——Total Recall 用三层记忆架构解决了这个问题。
问题:AI 编程助手的”金鱼记忆”
用过 Claude Code、Copilot CLI、Cursor 或 Cline 的开发者都知道一个痛点:每次新会话都是从零开始。
你上周纠正过的代码风格偏好,今天又要重新说一遍。你花半小时解释的项目架构,换个工具(比如从 Claude Code 切到 Copilot CLI)就全部归零。更糟糕的是,为了维持上下文,你不得不往 CLAUDE.md 或 AGENTS.md 里塞大量说明——每轮对话都在浪费 token。
这不是 AI 模型不够聪明,而是缺乏一个跨会话、跨工具的共享记忆层。
Total Recall 是什么
Total Recall 是一个开源的多层记忆插件,专门为 TUI 编程助手设计。它的核心思路很直接:
把”记忆”从会话中抽离出来,变成一个独立、持久、可共享的基础设施层。
支持的工具体系
- Claude Code
- GitHub Copilot CLI
- Cursor
- Cline
- OpenCode
- Hermes
只要工具支持 MCP(Model Context Protocol),就能接入 Total Recall。
三层记忆架构:Hot / Warm / Cold
Total Recall 的设计灵感来自计算机系统的缓存分层,它将记忆分为三个层级:
| 层级 | 内容 | 特点 |
|---|---|---|
| HOT | 当前项目的即时上下文(最近修改的文件、活跃任务) | 每次对话自动加载,响应最快 |
| WARM | 项目级记忆(架构决策、编码规范、已知问题) | 按需检索,语义匹配 |
| COLD | 长期知识(API 文档、技术笔记、历史决策记录) | 知识库模式,深度搜索 |
这种分层带来两个关键好处:
- Token 预算可控:每轮对话的记忆上下文被限制在 4000 token 以内,不会无限膨胀。
- 相关性更高:AI 只拿到真正需要的信息,而不是一坨”可能有用”的上下文。
实战:从零开始搭建
1. 安装
npm install -g @strvmarv/total-recall
注意:不要用
npx,有 npm bug 会导致 scoped package 的二进制文件无法执行。
2. 配置 MCP
在你的编程助手的 MCP 配置文件中添加:
{
"mcpServers": {
"total-recall": {
"command": "total-recall"
}
}
}
3. 初始化项目记忆
打开你的项目目录,Total Recall 会自动扫描并建立初始索引。你也可以手动导入已有的记忆文件:
total-recall import --from ./CLAUDE.md total-recall import --from ./AGENTS.md total-recall import --from ./docs/
4. 开始使用
之后每次启动编程助手,Total Recall 会自动:
- 加载 HOT 层的项目上下文
- 根据对话内容从 WARM/COLD 层检索相关信息
- 将新的决策和纠正写入持久存储
核心功能详解
跨设备同步
记忆数据默认存储在本地 SQLite 数据库中。如果你有多台开发机,只需把数据库路径指向云同步目录:
export TOTAL_RECALL_DB_PATH="/Users/you/Library/Mobile Documents/iCloud~drv/Documents/total-recall/"
这样你的 MacBook 和 Mac Studio 就能共享同一份记忆。
Token 花费追踪
Total Recall 会记录每个会话的 token 消耗,按项目、主机和时间窗口统计:
$ total-recall stats --project my-app --window 7d Project: my-app (last 7 days) ├── Total tokens: 2,847,392 ├── Memory context: 412,891 (14.5%) ├── Sessions: 47 └── Avg cost/session: $1.23
对比不使用记忆层时每次都要重新加载完整上下文的情况,记忆层的 token 开销通常只有原来的 1/5 到 1/3。
知识库语义检索
除了自动记忆,你还可以主动构建知识库:
# 导入 API 文档 total-recall kb add --source ./docs/api-reference/ # 导入架构笔记 total-recall kb add --source ./docs/architecture/ # 导入团队规范 total-recall kb add --source ./CONTRIBUTING.md
导入后,当 AI 助手在对话中遇到相关问题时,会自动从知识库中检索匹配的内容。检索基于 384 维向量嵌入,支持语义相似度搜索。
团队共享(PostgreSQL + pgvector)
个人使用 SQLite 就够了,团队协作时可以切换到 PostgreSQL + pgvector:
# total-recall.yaml
backend:
type: postgres
host: db.internal.company.com
database: total_recall
vector_dim: 384
embedder:
type: remote
url: https://embeddings.internal.company.com
api_key: ${EMBEDDER_API_KEY}
这样团队成员的记忆和知识库就能共享,新成员接手项目时可以直接继承历史上下文。
适用场景
场景一:长时间项目
你在一个大型项目上工作数月,期间 AI 助手已经积累了大量上下文。没有 Total Recall,每次打开新会话都要重新”教”AI 理解项目。有了它,记忆自动延续。
场景二:多工具切换
早上用 Claude Code 写核心逻辑,下午用 Cursor 做代码审查,晚上用 Copilot CLI 生成测试。工具不同,但记忆是同一份。
场景三:团队知识传承
资深工程师离职前,他的 AI 助手记忆(编码偏好、架构决策、踩坑记录)可以通过 Total Recall 直接交接给继任者。
与现有方案的对比
注意事项
- 隐私:所有数据默认本地存储,不会上传到任何外部服务。如果项目涉及敏感代码,可以放心使用。
- 数据库大小:随着使用时间增长,SQLite 数据库会逐渐变大。建议定期运行
total-recall prune --older-than 90d清理过期记忆。 - 嵌入模型:默认使用本地嵌入,如果需要更好的语义质量,可以配置远程 embedder。
总结
Total Recall 解决的是一个基础设施级别的问题:AI 编程助手的记忆不该绑定在会话里,而应该像数据库一样持久、可查询、可共享。
对于每天和 AI 编程助手打交道的开发者来说,它带来的不只是便利——是真正的工作流升级。
项目地址:github.com/strvmarv/total-recall 许可证:MIT 安装:npm install -g @strvmarv/total-recall