如何轻松导出Cursor聊天记录保存完整对话?

摘要:本文解析了Cursor聊天记录的存储机制,指出历史数据实际保存在本地SQLite数据库中(macOSLinuxWindows路径不同)。当更换项目目录或更新版本时,由于记录绑定的是"工作空间路径&amp
最近在使用 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 键值映射),更省事的方式是直接使用现成工具完成读取、恢复与迁移。
阅读全文