Cursor历史记录导出完整指南 - 轻松保存Chat对话记录

最近在使用 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

目录结构大致如下:

bash 复制代码
User/
├── globalStorage/      # 全局聊天数据
├── workspaceStorage/   # 每个项目对应独立数据
└── History/

二、核心数据库结构

Cursor 主要通过 SQLite 存储数据。

1️⃣ globalStorage

路径:

bash 复制代码
globalStorage/state.vscdb

包含:

  • AI 全量回复
  • 每条消息(bubble)
  • Session 元信息

关键表:

复制代码
cursorDiskKV

Key 格式:

Key 含义
composerData:<composerId> 会话信息
bubbleId:<composerId>:<bubbleId> 单条消息

2️⃣ workspaceStorage

每个项目一个单独目录:

bash 复制代码
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

你可以:

阅读:

bash 复制代码
globalStorage/state.vscdb
workspaceStorage/*/state.vscdb

常见 SQL:

获取 session:

sql 复制代码
SELECT value FROM ItemTable
WHERE key = 'composer.composerData';

获取消息:

sql 复制代码
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 键值映射),更省事的方式是直接使用现成工具完成读取、恢复与迁移。

我基于上述存储结构实现了两个开源项目:

1)cursor-history(CLI / Library)

核心能力是把 Cursor 本地数据库中的内容结构化还原出来,实现:

  • 稳定读取 Cursor 本地 SQLite(不依赖云)
  • 重建 Session → Message → Bubble(含时间戳、tool calls、diff 等)
  • 支持浏览 / 搜索 / 导出(Markdown / JSON)
  • 支持备份 / 恢复
  • 支持跨 workspace 的会话迁移(项目移动/重命名后依然可追溯)

项目完全开源,逻辑上等价于把 Cursor 历史作为"可查询的数据源"而不是仅仅在 UI 中可见。


2)cursor-history-mcp(MCP Server,面向 Claude 集成)

如果你同时使用 Claude / Claude Code / Claude Desktop,希望用自然语言直接检索历史对话,可以使用 MCP 版本:

  • 通过 MCP 把 Cursor 历史暴露给 Claude
  • 支持自然语言查询、导出、备份等操作
  • npx 即跑,零安装/零配置
  • 直接读 SQLite,不需要 embeddings/向量库,更稳定可复现(grep-style 搜索)

MCP 配置示例(Claude Code / Claude Desktop 通用)

在 MCP 配置中加入:

json 复制代码
{
  "mcpServers": {
    "cursor-history": {
      "command": "npx",
      "args": ["-y", "cursor-history-mcp"]
    }
  }
}

完成后,你就可以在 Claude 里直接"问" Cursor 历史(例如查某个 bug 讨论、找某段 diff、回顾某次设计决策),相当于把本地 chat history 变成可检索的知识库。


五、总结

  • Cursor 聊天记录没有"真的消失",只是绑定到 workspace 路径
  • globalStorage + workspaceStorage = 完整历史
  • 手动复制目录可以,但不太方便
相关推荐
林炳然1 天前
解构 Claude Code 的“手”与“眼”:完整功能列表解析
agent·claude·vibecoding
Tiny_React1 天前
使用 Claude Code Skills 模拟的视频生成流程
人工智能·音视频开发·vibecoding
野生的码农2 天前
做好自己的份内工作,等着被裁
程序员·ai编程·vibecoding
bytebeats3 天前
Trae IDE: 我为什么从Free版升级成了Pro版订阅
trae·vibecoding
bytebeats3 天前
我是如何在2025年零基础开启“氛围编程”的
vibecoding
bytebeats3 天前
反重力氛围编程使得开发异常轻松
vibecoding
PPPHUANG4 天前
Switch2Antigravity: 让 IntelliJ IDEA 与 Antigravity 无缝协作
程序员·intellij idea·vibecoding
AI炼金师4 天前
claude code 2.1.0 更新日志
ai编程·vibecoding·claudecode
Delroy6 天前
一个不懂MCP的开发使用vibe coding开发一个MCP
前端·后端·vibecoding