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 = 完整历史
  • 手动复制目录可以,但不太方便
相关推荐
SpikeKing3 小时前
VibeCoding - Claude Code 的 CLAUDE.md 编写指南
vibecoding·claude code·claude.md
chenxuan52013 小时前
还在手打 prompt?我给 OpenCode 做了个语音输入插件,vibe coding 的时候真的爽很多
ai编程·vibecoding
SpikeKing16 小时前
VibeCoding - OpenClaw 公网访问配置指南 (自动化)
运维·自动化·vibecoding·openclaw
SpikeKing2 天前
VibeCoding - 配置 Claude Code 接入 Claude 模型
claude·vibecoding·claude code
来一颗砂糖橘2 天前
Vibe Coding:用“氛围感”重塑编程
低代码开发·开发效率·技术趋势·vibecoding
CHB2 天前
uni-agent,你的数字员工来了
人工智能·uni-app·vibecoding
KevinZhang135795 天前
第 14 节:构建聊天交互界面
ai编程·vibecoding
dtsola5 天前
小遥搜索v1.7.0版本更新【飞书文档+知识库支持】
程序员·飞书·dify·ai智能体·独立开发者·vibecoding·一人公司
木华5 天前
关于AI Coding 的一些思考:链路折叠而非节点替代
ai编程·vibecoding