极米投影仪
149.20M · 2026-03-22
这是「一天一个开源项目」系列的第 47 篇文章。今天介绍的项目是 Cursor Chat Browser(GitHub)。
使用 Cursor 编辑器进行 AI 编程时,是否遇到过这些问题:想回顾之前的对话却找不到?想搜索某个技术问题的解决方案却无从下手?想导出聊天记录分享给团队却不知道如何操作?Cursor Chat Browser 是一个用于浏览和管理 Cursor 编辑器 AI 聊天历史的 Web 应用,支持查看、搜索和导出你的 AI 对话为 Markdown、HTML、PDF 等多种格式,让你轻松管理和回顾与 AI 的对话历史。
为什么值得看?
Cursor Chat Browser 是一个用于浏览和管理 Cursor 编辑器 AI 聊天历史的 Web 应用。它解决了 Cursor 编辑器本身无法方便地浏览、搜索和导出聊天历史的问题,让开发者能够更好地管理和回顾与 AI 的对话。
核心特点:
解决的核心问题:
面向的用户:
技术栈:
重要特性:
Cursor Chat Browser 的核心作用是:提供一个 Web 界面来浏览、搜索和管理 Cursor 编辑器的 AI 聊天历史,让开发者能够:
回顾对话历史
知识整理
团队分享
备份管理
搜索和分析
安装:
# 克隆仓库
git clone
cd cursor-chat-browser
# 安装依赖
npm install
# 启动开发服务器
npm run dev
访问:
配置:
应用会自动检测 Cursor 工作区存储路径:
%APPDATA%CursorUserworkspaceStorage/mnt/c/Users/<USERNAME>/AppData/Roaming/Cursor/User/workspaceStorage~/Library/Application Support/Cursor/User/workspaceStorage~/.config/Cursor/User/workspaceStorage~/.cursor-server/data/User/workspaceStorage如果自动检测失败,可以在配置页面(️)手动设置路径。
注意:新版本的 Cursor 已将聊天数据存储从工作区特定位置移动到全局存储。此应用现在支持两种存储方法,以确保与所有 Cursor 版本兼容。
浏览功能
搜索功能
导出功能
多存储支持
双重日志支持
用户体验
| 对比项 | Cursor Chat Browser | Cursor 编辑器内置 | 手动导出 |
|---|---|---|---|
| 浏览历史 | Web 界面,易于浏览 | ️ 仅当前会话 | 不支持 |
| 搜索功能 | 全文搜索,支持过滤 | 不支持 | 需手动查找 |
| 导出格式 | Markdown、HTML、PDF | 不支持 | ️ 需手动复制 |
| 多工作区 | 统一管理所有工作区 | ️ 分散在各工作区 | ️ 需逐个处理 |
| 类型区分 | 区分 Chat 和 Composer | ️ 需手动区分 | 不支持 |
| 跨平台 | Windows、macOS、Linux | 跨平台 | 跨平台 |
| 语法高亮 | 代码块语法高亮 | 支持 | 需手动处理 |
| 备份管理 | 导出备份 | ️ 需手动复制文件 | ️ 需手动操作 |
为什么选择 Cursor Chat Browser?
Cursor Chat Browser 采用 Next.js 14 App Router 架构,使用 TypeScript 开发,通过 SQLite 读取 Cursor 的聊天数据库。
核心组件:
Cursor Chat Browser
├── Next.js 14 (App Router)
│ ├── 页面路由
│ ├── 服务端组件
│ └── 客户端组件
├── SQLite 数据库读取
│ ├── 读取 state.vscdb 文件
│ ├── 解析聊天记录
│ └── 解析 Composer 日志
├── UI 组件 (shadcn/ui)
│ ├── 导航栏
│ ├── 搜索栏
│ ├── 聊天列表
│ └── 导出功能
└── 样式系统 (Tailwind CSS)
├── 响应式设计
└── 深色/浅色模式
设计理念:
Cursor 编辑器将聊天历史存储在 SQLite 数据库中(state.vscdb 文件)。
存储位置:
%APPDATA%CursorUserworkspaceStorage<workspace-id>state.vscdb~/Library/Application Support/Cursor/User/workspaceStorage/<workspace-id>/state.vscdb~/.config/Cursor/User/workspaceStorage/<workspace-id>/state.vscdb新版本变化:
state.vscdb 文件数据库结构:
-- 简化的数据库结构
CREATE TABLE ItemTable (
key TEXT PRIMARY KEY,
value TEXT -- JSON 格式的聊天数据
);
应用会自动检测不同平台的 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':
// 检查是否是 WSL2
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');
}
}
手动配置:
如果自动检测失败,用户可以在配置页面手动设置路径:
搜索功能支持全文搜索和类型过滤:
搜索流程:
1. 用户输入搜索关键词
↓
2. 扫描所有工作区的 state.vscdb 文件
↓
3. 解析聊天记录和 Composer 日志
↓
4. 全文搜索匹配内容
↓
5. 按类型过滤(Chat/Composer/All)
↓
6. 显示搜索结果
搜索结果展示:
支持三种导出格式:
Markdown 导出:
# Chat Title
## User
用户消息内容
## Assistant
AI 回复内容
```code
代码块内容
**HTML 导出**:
- 带样式的 HTML 文档
- 代码块语法高亮(使用 highlight.js 或类似库)
- 响应式设计
- 可打印格式
**PDF 导出**:
- 使用浏览器打印功能或 PDF 库
- 格式化文档
- 适合分享和存档
**导出实现**:
```typescript
// 伪代码示例
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);
}
}
Next.js 14 App Router:
TypeScript:
Tailwind CSS:
shadcn/ui:
SQLite:
better-sqlite3 或类似库读取数据库项目需要处理新旧版本的 Cursor 存储格式差异:
旧版本(工作区特定存储):
workspaceStorage/
├── workspace-id-1/
│ └── state.vscdb
├── workspace-id-2/
│ └── state.vscdb
└── ...
新版本(全局存储):
User/
├── workspaceStorage/
│ └── (旧格式)
└── globalStorage/
└── (新格式)
兼容策略:
欢迎来我中的个人主页找到更多有用的知识和有趣的产品