简介
Cursor Chat Browser 是一个用于浏览和管理 Cursor 编辑器 AI 聊天历史的 Web 应用。它解决了 Cursor 编辑器本身无法方便地浏览、搜索和导出聊天历史的问题,让开发者能够更好地管理和回顾与 AI 的对话。
核心特点包括:
- 浏览功能:浏览所有工作区的聊天历史
- 搜索功能:全文搜索,支持按聊天类型过滤
- 导出功能:支持 Markdown、HTML、PDF 多种格式
- 多存储支持:兼容新旧版本的 Cursor 存储格式
- 双重日志:同时支持 AI 聊天和 Composer 日志
- 自动检测:自动检测 Cursor 工作区存储路径
- 响应式设计:支持深色/浅色模式,移动端友好
项目背景
技术栈
- 框架: Next.js 14 (App Router)
- 语言: TypeScript (93.7%)
- 样式: Tailwind CSS
- UI 组件: shadcn/ui
- 数据库: SQLite(读取 Cursor 聊天数据库)
- Node.js: 18+
项目数据
- ⭐ GitHub Stars: 500+
- 🍴 Forks: 87+
- 📦 版本:持续更新中
- 📄 License: MIT
- 🌐 仓库:github.com/thomas-pedersen/cursor-chat-browser
主要功能
核心作用
Cursor Chat Browser 的核心作用是提供一个 Web 界面来浏览、搜索和管理 Cursor 编辑器的 AI 聊天历史,让开发者能够:
- 浏览历史:查看所有工作区的聊天记录
- 搜索对话:全文搜索所有聊天内容
- 导出记录:导出为 Markdown、HTML、PDF 格式
- 组织管理:按工作区组织聊天记录
- 类型区分:区分 AI 聊天和 Composer 日志
- 跨平台:支持 Windows、macOS、Linux、WSL2
快速开始
安装:
git clone https://github.com/thomas-pedersen/cursor-chat-browser.git
cd cursor-chat-browser
npm install
npm run dev
访问:打开浏览器访问 http://localhost:3000
配置:应用会自动检测 Cursor 工作区存储路径。
- Windows:
%APPDATA%\Cursor\User\workspaceStorage - WSL2:
/mnt/c/Users/<USERNAME>/AppData/Roaming/Cursor/User/workspaceStorage - macOS:
~/Library/Application Support/Cursor/User/workspaceStorage - Linux:
~/.config/Cursor/User/workspaceStorage
如果自动检测失败,可以在配置页面手动设置路径。
核心特性
- 浏览功能:查看所有工作区的聊天历史,按工作区组织,区分 AI 聊天日志和 Composer 日志。
- 搜索功能:在导航栏中使用搜索栏搜索所有日志,按聊天日志、Composer 日志或两者过滤结果。
- 导出功能:支持 Markdown(纯文本)、HTML(带语法高亮)、PDF(适合分享)。
- 多存储支持:支持工作区特定存储(旧版本)和全局存储(新版本 Cursor)。
- 用户体验:响应式设计,深色/浅色模式支持,代码块语法高亮显示。
项目详细剖析
架构设计
Cursor Chat Browser 采用 Next.js 14 App Router 架构,使用 TypeScript 开发,通过 SQLite 读取 Cursor 的聊天数据库。
核心组件:
- Next.js 14 (App Router):页面路由、服务端组件、客户端组件
- SQLite 数据库读取:读取 state.vscdb 文件,解析聊天记录
- UI 组件 (shadcn/ui):导航栏、搜索栏、聊天列表、导出功能
- 样式系统 (Tailwind CSS):响应式设计、深色/浅色模式
Cursor 存储机制
Cursor 编辑器将聊天历史存储在 SQLite 数据库中(state.vscdb 文件)。
数据库结构:
CREATE TABLE ItemTable (
key TEXT PRIMARY KEY,
value TEXT -- JSON 格式的聊天数据
);
新版本变化:
- 旧版本:每个工作区有独立的
state.vscdb文件 - 新版本(v44.9+):使用全局存储,聊天数据集中管理
路径自动检测
应用会自动检测不同平台的 Cursor 存储路径。
伪代码示例:
function detectCursorPath(): string {
const platform = process.platform;
switch (platform) {
case 'win32':
return path.join(process.env.APPDATA, 'Cursor/User/workspaceStorage');
case 'darwin':
return path.join(os.homedir(), 'Library/Application Support/Cursor/User/workspaceStorage');
case 'linux':
if (isWSL2()) {
return `/mnt/c/Users/${username}/AppData/Roaming/Cursor/User/workspaceStorage`;
}
return path.join(os.homedir(), '.config/Cursor/User/workspaceStorage');
default:
throw new Error('Unsupported platform');
}
}
导出功能实现
支持三种导出格式:Markdown、HTML、PDF。
async function exportChat(chatId: string, format: 'md' | 'html' | 'pdf') {
const chat = await loadChat(chatId);
switch (format) {
case 'md':
return exportAsMarkdown(chat);
case 'html':
return exportAsHTML(chat);
case 'pdf':
return exportAsPDF(chat);
}
}
项目地址与资源
- 🌟 GitHub: github.com/thomas-pedersen/cursor-chat-browser
- 🐛 Issue Tracker: GitHub Issues


