给 Cursor 加记忆
它的聊天记录在 SQLite 里,而旁边的那个终端智能体是同一段历史
Cursor 会记下你的每次对话,然后把你下一次打开的对话开成空的。你上周弄明白的东西仍然留在磁盘上——连同你在旁边打开的那个终端智能体里所做的工作一起。
Memories,Rules,以及两边都没覆盖到的部分
Cursor 自己给出的答案是两个功能。首先是 Rules(规则)——包括仓库里的 .cursor/rules/*.mdc,以及更早的 .cursorrules。这些都是你写下来、Cursor 每次都会读取的指令。然后是 Memories(记忆)——它由编辑器从你的聊天记录中提炼出一些短事实,并按项目保存。它更接近大家真正想要的东西,但本质上仍是模型写的一份摘要,而不是那次会话本身:它留下的是模型自己挑中的那句话,而不是你运行过的命令,或你粘贴进去的报错。
两者都被限制在 Cursor 里,也限制在你当前所在的项目里。它们都回答不了大家真正想问的问题——这件事我之前是怎么处理的——尤其当那个「之前」可能是一个月前、在另一个仓库、或者在当时开在编辑器旁边的那个终端智能体里。而那一部分其实已经在磁盘上了:在聊天记录里,也在其他智能体的会话记录里。
Cursor 已经有的部分
编辑器把聊天存在 SQLite 里而不是 JSONL:macOS 上是 ~/Library/Application Support/Cursor/User 下的 state.vscdb,Linux 上是 ~/.config/Cursor/User 下的同名文件,内容分散在 globalStorage/ 和每个工作区各自的一个数据库里。没有任何东西会读它。Cursor 的聊天记录是怎么读的里有表结构,以及跟着它跨版本一路读下来花了多少功夫。
接上召回
deja install cursor-auto
这会把 deja MCP 服务器写进 ~/.cursor/mcp.json,同时写入把召回送进会话的钩子。只装服务器用 deja install cursor。
它需要那个二进制文件,因为 MCP 条目是按名字调用它的:
brew install deja-vu # 或者 curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
编辑器和终端是同一段历史
机器上通常不止 Cursor 一个智能体——同一个仓库里还开着一个终端智能体,而这两个永远看不见对方做过什么。把两边都建索引才是重点:在 Cursor 里问的问题,会由当时真正解决它的那次会话来回答,不管那是哪个工具。换用别的智能体是这套说法的完整版。
和这个 harness 无关的部分
索引覆盖这台机器上每个智能体的转录——今天是四十二个,各有各的格式——所以在一个工具里找到的修法,能回答在另一个工具里提的问题,包括这一切装上来之前的会话。这就是选择索引、而不是选择边用边记的原因。
这里没有任何东西在写记忆,所以也就没有什么能凭空编进你的历史里;建索引和检索都在本地,凭据在建索引时就被脱敏(隐私说明)。每次提问注入上限 1536 字节,每次工具调用约 4 KB——记忆要花多少 token 里有实测对比。