如何轻松导出Cursor聊天记录保存完整对话?
摘要:本文解析了Cursor聊天记录的存储机制,指出历史数据实际保存在本地SQLite数据库中(macOSLinuxWindows路径不同)。当更换项目目录或更新版本时,由于记录绑定的是"工作空间路径&
最近在使用 Cursor 时,遇到一个不少人都有的情况:
换了项目目录 / 拉了新仓库 / 更新了 Cursor 版本 → 之前的 Chat 记录在 UI 中看不到了。
很多用户第一反应是:
“是不是被删了?”
“Cursor 不保存历史?”
“是不是只能靠截图和复制粘贴了?”
其实,大多数情况下:
👉 记录并没有丢,只是 Cursor 不再显示了。
本文从工程角度解释:
1️⃣ Cursor 的聊天记录究竟存在哪里
2️⃣ 为什么换项目 / 更新版本会“看不到”
3️⃣ 如何安全恢复 / 备份 / 导出
一、Cursor 的历史数据存储在哪里?
Cursor 的数据全部存储在本地(并不是云端),不同平台路径如下:
Platform
Path
macOS
~/Library/Application Support/Cursor/User
Linux
~/.config/Cursor/User
Windows
%APPDATA%\Cursor\User
目录结构大致如下:
User/
├── globalStorage/ # 全局聊天数据
├── workspaceStorage/ # 每个项目对应独立数据
└── History/
二、核心数据库结构
Cursor 主要通过 SQLite 存储数据。
1️⃣ globalStorage
路径:
globalStorage/state.vscdb
包含:
AI 全量回复
每条消息(bubble)
Session 元信息
关键表:
cursorDiskKV
Key 格式:
Key
含义
composerData:<composerId>
会话信息
bubbleId:<composerId>:<bubbleId>
单条消息
2️⃣ workspaceStorage
每个项目一个单独目录:
workspaceStorage/<hash>/
├── state.vscdb
└── workspace.json
重点是:
workspace.json 记录真实项目路径
state.vscdb 记录该项目 Chat 列表和用户消息
三、为什么会“看不到历史”?
因为 Cursor 的设计是:
Chat 绑定的是“工作空间路径”,而不是项目名或仓库本身。
于是会发生:
场景
结果
换目录 / rename
Hash 变了,历史不再匹配
复制项目
新目录 = 新 workspace,历史不跟过去
重新打开一个空目录
Cursor 创建新 workspace
升级版本
Workspace mapping 可能变化
最终结果就是:
👉 历史存在,但 Cursor UI 没法自然关联回去,所以显示不出来。
这也是很多人选择手动复制 workspaceStorage 目录的原因 —— 但这种方法风险很大,比如:
SQLite journal 不一致
哈希映射不稳定
不同 Cursor 版本 schema 不完全一致
四、如果需要恢复 / 备份 / 导出怎么办?
工程上有两种方式:
✅ 方式一:自己读 SQLite
你可以:
阅读:
globalStorage/state.vscdb
workspaceStorage/*/state.vscdb
常见 SQL:
获取 session:
SELECT value FROM ItemTable
WHERE key = 'composer.composerData';
获取消息:
SELECT key, value FROM cursorDiskKV
WHERE key LIKE 'bubbleId:<composerId>:%'
ORDER BY rowid ASC;
能恢复,但工作量较大,且要处理:
新旧版本 schema
tool calls / diffs / thinking 字段
path mapping
✅ 方式二:使用现成工具(推荐)
如果你不想手动分析/拼接 Cursor 的 SQLite 数据结构(globalStorage + workspaceStorage + composer/bubble 键值映射),更省事的方式是直接使用现成工具完成读取、恢复与迁移。
