1. 项目概述:为你的AI编程伙伴装上“记忆大脑”
如果你和我一样,深度依赖 Cursor IDE 的 AI 编程能力,那你一定遇到过这个痛点:每次开启一个新的对话,AI 助手就像得了“健忘症”,完全不记得我们之前讨论过的项目架构、代码规范,甚至是刚刚才定下的变量命名规则。这种上下文丢失带来的重复沟通,严重拖慢了开发节奏。为了解决这个问题,我动手开发了Cursor Brain——一个为 Cursor IDE 设计的智能记忆系统。
简单来说,Cursor Brain 是一个运行在你本地的记忆引擎。它像一个永不疲倦的“第二大脑”,专门负责记录你和 Cursor AI 助手在编程对话中产生的所有有价值信息。无论是你解释过的业务逻辑、重构过的函数,还是 AI 生成的代码片段和设计决策,它都能分门别类地存储下来。当你在新的对话中需要回顾时,只需一个简单的自然语言查询,它就能从记忆库中精准地召回相关上下文,并自动注入到 Cursor 的聊天界面中,让 AI 瞬间“恢复记忆”。
这个项目的核心价值在于“持久化”和“结构化”。它不仅仅是保存聊天记录,而是借鉴了认知科学中的记忆模型,将信息划分为不同维度进行存储和关联。这意味着,当你问“我们之前是怎么处理用户认证的?”时,它不仅能找到相关的代码片段(程序性记忆),还能回忆起当时选择 JWT 而非 Session 的讨论原因(情景记忆和语义记忆)。对于需要长期维护复杂项目、或与团队共享开发上下文的开发者而言,这无疑是一个效率倍增器。
2. 核心设计思路:构建一个类人脑的记忆模型
为什么需要一个专门的记忆系统,而不是简单地用文本文件记录?关键在于“智能检索”。海量的、未经处理的聊天日志在需要时根本无法快速定位。Cursor Brain 的设计哲学是模拟人类记忆的运作方式,实现高效、准确的信息存取。整个系统的架构围绕以下几个核心理念展开。
2.1 五扇区记忆模型:从“记住”到“理解”
这是 Cursor Brain 最核心的理论基础。直接保存原始对话文本是低效的,我们需要对信息进行加工和分类。我参考了认知心理学,设计了五个记忆扇区:
情景记忆:记录对话发生的具体“事件”。例如:“2024年5月10日,在
feature/user-auth分支的对话中,我们讨论了如何实现 OAuth 2.0 登录。” 这部分记忆包含了时间、地点(项目/文件上下文)、人物(用户与AI)等要素,为信息提供了时空锚点。语义记忆:存储抽象的概念、事实和知识。这是剥离了具体情境的“干货”。例如:“本项目使用 Next.js 14 App Router。”、“用户模型包含
id,email,hashedPassword字段。” 这些知识独立于任何一次具体的对话,是项目的通用真理。程序性记忆:存储“如何做”的步骤和代码。这是对开发者最直接有用的部分。例如:“启动 Docker 开发环境的命令是
docker-compose up -d db redis。”、“api/users/route.ts中GET函数的错误处理逻辑是try-catch包裹并返回 500 状态码。” 系统会智能识别并提取代码块和操作指令。情感/价值记忆:这是一个有趣的实验性功能,用于标记信息的“重要性”或“情绪色彩”。例如,你可以标记某段代码为“关键算法,勿动”,或将某个决策原因标记为“曾在此处引入严重Bug,需谨慎”。这为记忆添加了主观权重,影响检索优先级。
反思记忆:记录从对话中提炼出的经验、教训和待办事项。例如:“决定将数据库连接池大小从10调整为20,以应对高并发。”、“TODO: 需要重构支付模块的耦合度。” 这相当于一个自动生成的、基于对话的开发笔记。
通过这个模型,一条简单的对话信息会被分解并存入不同的扇区,形成一张相互关联的知识图谱。当你检索时,系统不是进行简单的字符串匹配,而是进行多维度的语义关联。
2.2 混合检索策略:确保“搜得准、找得全”
有了结构化的记忆,下一步是如何高效检索。我放弃了单一检索方式,采用了混合检索策略,以兼顾精度和召回率。
- 向量语义检索:这是核心。系统会使用 Sentence Transformer 等模型,将你的查询问题和记忆库中的所有文本片段转换为高维向量( embeddings )。通过计算向量之间的余弦相似度,找到语义上最相关的记忆,即使你没有使用完全相同的字词。例如,你查询“怎么让用户登录”,它能匹配到存储的“实现用户身份认证方案”这段记忆。
- BM25 关键词检索:作为向量检索的补充,用于处理那些包含特定技术名词、函数名、错误代码的查询。比如你精确搜索“
ERR_CONNECTION_REFUSED”,关键词检索能快速定位。我将 BM25 和向量检索的分数进行加权融合,确保既理解意图,又不漏掉关键术语。 - 图谱关系扩展:这是提升召回率的“秘密武器”。当通过上述方法找到一些初始记忆节点后,系统会利用记忆之间的关联关系(如同属于一个任务、涉及同一个文件、具有相同标签)在图谱中进行“邻居扩展”,找出那些虽然没有直接匹配,但逻辑上高度相关的记忆。比如,找到了“用户登录API”,可能会连带找出“用户模型定义”和“密码加密工具函数”。
2.3 隐私优先与本地化:你的代码记忆只属于你
作为处理可能包含敏感业务逻辑、API密钥甚至未公开设计讨论的工具,数据安全是底线。Cursor Brain 坚持“隐私优先”原则:
- 全链路本地运行:所有组件——记忆引擎、API 服务器、数据库、前端界面——全部运行在你的本地机器上。数据从不离开你的计算机。
- SQLite 存储:记忆库使用轻量级、文件式的 SQLite 数据库。所有数据就是一个
.db文件,你可以轻松地备份、迁移或用 VeraCrypt 等工具加密整个目录。 - 敏感信息过滤:在记忆存储前,系统会通过预定义的规则(如正则表达式匹配)尝试过滤掉像密码、密钥、手机号等模式的文本。这是一个可配置的选项,你可以在配置文件中自定义需要过滤的模式。
- 会话隔离:每个 Cursor 对话会话(Conversation)拥有独立的记忆空间索引。这意味着项目A的对话不会泄露到项目B的记忆检索中,保证了上下文的纯净性。当然,你也可以在设置中开启“跨项目语义搜索”,用于寻找可复用的通用模式。
3. 从零开始部署与配置你的记忆中枢
了解了核心思想后,我们动手将它运行起来。整个过程就像部署一个本地开发服务一样简单。
3.1 环境准备与依赖安装
首先,确保你的系统满足以下条件:
- Node.js:版本 18 或更高。推荐使用 LTS 版本。
- Git:用于克隆代码库。
- Cursor IDE:当然是主角,需要已安装并配置好 AI 功能。
打开终端,开始部署:
# 1. 克隆项目代码到本地 git clone https://github.com/l11223/cursor-brain.git cd cursor-brain # 2. 安装项目依赖 # 项目采用 pnpm workspace 管理多个子包,使用 pnpm 能确保依赖关系正确 npm install -g pnpm # 如果未安装 pnpm,先安装它 pnpm install这一步会安装所有必要的依赖,包括核心的记忆引擎、API服务器、MCP服务端和Next.js前端界面所需的包。如果遇到网络问题,可以尝试配置国内镜像源。
3.2 启动核心服务与Web管理界面
Cursor Brain 由两个主要服务构成:一个提供 RESTful API 的后端服务,和一个用于可视化管理的 Web 前端。
# 3. 启动 API 后端服务 # 这个服务负责所有记忆的存储、处理和检索逻辑 npx tsx packages/api-server/server-node.ts启动后,后端服务默认会在http://localhost:3000运行。你会看到日志输出,显示服务已启动,SQLite数据库文件(通常位于~/.cursor-brain/data/memory.db)已初始化。
# 4. (新开一个终端窗口)启动 Web UI 前端 cd packages/web-ui pnpm run dev # 或 npm run dev前端开发服务器启动后,通常会运行在http://localhost:3099。现在,打开浏览器访问这个地址,你就能看到 Cursor Brain 的仪表盘了。在这里,你可以直观地浏览所有记忆片段、查看记忆关联图谱、分析记忆类型的统计信息,以及手动管理(添加、编辑、删除)记忆。
注意:首次启动时,由于需要初始化数据库和可能的嵌入模型下载,可能会稍慢一些。请确保你的网络能顺畅访问 Hugging Face 等模型托管平台(如果需要下载默认的轻量级模型)。
3.3 关键一步:配置 Cursor IDE 的 MCP 集成
让 Cursor Brain 发挥魔力的关键,是通过Model Context Protocol将其与 Cursor IDE 深度集成。MCP 是 Cursor 推出的一种协议,允许外部工具以“工具”的形式被 AI 助手调用。
你需要告诉 Cursor 去哪里找到我们的记忆服务。
找到 Cursor 的 MCP 配置文件。它的通常位置是:
- macOS / Linux:
~/.cursor/mcp.json - Windows:
%USERPROFILE%\.cursor\mcp.json如果文件或目录不存在,手动创建即可。
- macOS / Linux:
编辑
mcp.json文件,添加如下配置。请务必将<path-to>替换为你本地cursor-brain项目的绝对路径。
{ "mcpServers": { "cursor-brain": { "command": "npx", "args": [ "tsx", "/绝对路径/cursor-brain/packages/mcp-server/src/index.ts" ], "env": { "CURSOR_BRAIN_DATA_DIR": "~/.cursor-brain/data", "CURSOR_BRAIN_API_URL": "http://localhost:3000" } } } }配置详解:
command: “npx”:指示 Cursor 使用 npx 来运行脚本。args:指定要运行的 TypeScript 入口文件。env.CURSOR_BRAIN_DATA_DIR:告诉 MCP 服务记忆数据存储在哪里,确保和 API 服务使用同一位置。env.CURSOR_BRAIN_API_URL:MCP 服务需要知道如何连接到我们刚才启动的 API 后端。
- 保存配置文件,并完全重启 Cursor IDE。重启后,Cursor 会加载新的 MCP 配置。
3.4 验证集成是否成功
重启 Cursor 后,打开任意项目,在 AI 聊天框中输入/,你应该能看到一个名为 “cursor-brain” 的工具列表被加载出来,其中包含remember,recall,search等工具。如果能看到,恭喜你,集成成功了!
如果没看到,请检查:
- Cursor 是否已完全重启。
mcp.json文件语法是否正确(特别是 JSON 格式和路径中的反斜杠,Windows 路径需使用双反斜杠\\或正斜杠/)。- 终端中 API 服务 (
server-node.ts) 和 MCP 服务(通过 Cursor 调用时启动)是否有报错日志。
4. 核心功能实操:与你的记忆系统互动
配置完成后,我们来看看如何在日常编码中具体使用它。主要通过两类方式:在 Cursor 聊天中直接使用 MCP 工具,或通过 Web UI 进行管理。
4.1 在 Cursor 聊天中使用 MCP 工具
这是最自然、最常用的方式。你可以在和 AI 编程助手的对话中,随时插入记忆指令。
1. 保存记忆:remember当你和 AI 完成了一段有价值的讨论,或 AI 生成了一段关键代码,你可以主动保存它。
- 用法:在聊天框中输入
/remember,然后按照提示输入记忆内容。或者,你可以直接告诉 AI:“请将我们刚才讨论的关于用户认证架构的方案保存到记忆里。” - 实操示例:
AI 生成了一个配置
docker-compose.yml文件后,你输入:/remember
内容:本项目使用 Docker Compose 定义开发环境,包含 PostgreSQL 和 Redis 服务。关键配置:PostgreSQL 端口映射为 5432:5432,Redis 为 6379:6379。启动命令为docker-compose up -d db redis。
标签:devops,docker,database系统会自动为这条记忆打上时间戳、当前项目上下文等元数据,你添加的标签有助于后续检索。
2. 检索记忆:recall与search当你在新对话中需要过往信息时,进行检索。
recall:智能召回。你只需用自然语言描述你的需求,系统会利用混合检索策略,找到最相关的几条记忆,并直接注入到当前聊天上下文。AI 助手就能基于这些记忆继续工作。- 示例:
/recall 我们之前是怎么设置数据库连接池的?
- 示例:
search:精确搜索。更像一个关键词搜索,返回匹配的记忆列表供你浏览选择。- 示例:
/search PostgreSQL port 5432
- 示例:
3. 管理记忆:forget与stats
forget:删除一条不再相关或错误的记忆。需要提供记忆的 ID(可以从search结果或 Web UI 中获得)。stats:快速查看当前会话或全局的记忆统计信息,如各类型记忆的数量。
4.2 通过 Web UI 进行可视化管理和分析
访问http://localhost:3099打开管理界面。
- 记忆图谱:这里是精华所在。所有记忆会以节点图的形式呈现,节点代表记忆片段,连线代表它们之间的关联(如同属一个任务、引用相同文件)。你可以直观地看到知识是如何连接和组织起来的,并能通过拖动、缩放进行探索。
- 记忆列表:以表格形式展示所有记忆,支持按时间、类型、标签筛选和排序。你可以在这里点击任何一条记忆进行查看、编辑或删除。
- 统计面板:以图表形式展示记忆类型的分布、每日新增记忆数量等,帮助你了解自己的“记忆习惯”。
4.3 使用 Docker 一键部署(可选)
如果你希望服务在后台持续运行,或者部署在开发服务器上供小团队使用,Docker 方式更便捷。
项目根目录下的docker-compose.yml文件已经配置好了所有服务。
# 在项目根目录下执行 docker-compose up -d这条命令会在后台启动包含 API 服务器和 Web UI 的容器。你需要相应地修改mcp.json中的CURSOR_BRAIN_API_URL为 Docker 容器的地址(例如http://localhost:3000如果端口已映射)。
5. 高级技巧与避坑指南
在实际使用和开发过程中,我积累了一些经验,能帮你更好地驾驭这个工具。
5.1 提升记忆质量的技巧
- 主动结构化记忆:虽然系统能自动分类,但你在保存时提供清晰的结构能极大提升质量。在
/remember时,可以尝试用“问题-解决方案-原因”的格式。例如:“问题:如何处理 API 限流?方案:采用express-rate-limit中间件,窗口设为15分钟100次。原因:防止恶意刷接口,保障服务稳定。” - 善用标签系统:给记忆打上多个标签,相当于创建了多维索引。标签可以是技术栈 (
react,nodejs)、功能模块 (auth,payment)、状态 (todo,bugfix)、或任何你自定义的分类。未来通过标签过滤会非常高效。 - 定期“修剪”记忆:记忆不是越多越好。过时、无效的记忆会污染检索结果。可以每周花几分钟在 Web UI 上浏览一下最新记忆,用
forget工具清理掉那些临时性的、已被推翻的决策。
5.2 常见问题与排查
MCP 工具不显示:
- 检查路径:
mcp.json中的文件路径必须是绝对路径,且确保该路径下index.ts文件存在。 - 检查服务:确认
packages/api-server/server-node.ts正在运行,且日志无报错。 - 查看 Cursor 日志:Cursor 的 Help -> Toggle Developer Tools 中查看控制台,搜索 “mcp” 相关错误。
- 环境变量:确保
CURSOR_BRAIN_API_URL在 MCP 配置中正确,且该 URL 在本地可访问(用curl http://localhost:3000/health测试)。
- 检查路径:
检索结果不相关:
- 调整检索方式:尝试换用
search进行关键词精确查找,或用更具体的语言描述recall。 - 检查记忆质量:可能当初保存的记忆文本过于模糊。通过 Web UI 找到那条记忆并编辑,补充关键上下文。
- 理解混合检索:系统默认平衡语义和关键词。如果你知道确切术语,在查询中直接包含它(如“
useState钩子”)。
- 调整检索方式:尝试换用
性能问题:
- 记忆数量:当记忆条数超过数万时,向量检索可能会变慢。考虑启用“分片”或“分层”记忆策略,将非常旧的、访问频率低的记忆归档。
- 嵌入模型:默认使用的小模型在精度和速度间取得平衡。如果你对精度要求极高,且机器性能足够,可以在配置中更换为更大的模型(如
all-MiniLM-L12-v2),但这会消耗更多内存和计算时间。
数据备份与迁移:
- 备份:整个记忆库就是
~/.cursor-brain/data/目录。定期压缩备份这个目录即可。 - 迁移:将备份的
data目录复制到新机器的相同路径下,重启服务,所有记忆即恢复。
- 备份:整个记忆库就是
5.3 自定义与扩展
Cursor Brain 本身是开源的,这给了你巨大的定制空间。
- 更换嵌入模型:在
packages/core/src/embedding中,你可以修改代码,接入 OpenAI 的 embeddings API(需网络和付费)或其他本地模型,以获得不同的语义理解能力。 - 自定义记忆处理器:在
packages/core/src/memory/processors下,你可以编写新的处理器,用于在信息保存前进行特定的提取、清洗或丰富操作。例如,专门从代码片段中提取函数签名和注释。 - 扩展 Web UI:
packages/web-ui是一个标准的 Next.js 项目,你可以根据需要修改界面,添加新的图表或管理功能。
我个人在使用中发现,将它和一个团队知识库的概念结合会非常强大。在团队内部,可以约定一套标签规范,这样,新成员加入项目时,通过 Cursor Brain 检索相关记忆,能快速理解项目的历史决策和代码脉络,极大降低了 onboarding 成本。它不仅仅是一个工具,更是一种围绕代码和对话构建团队集体智慧的新工作流。