📌 项目地址:github.com/kruzovic7/ai-data-extractor | 星数:447+ | 依赖:纯 Python 标准库
你用 Claude Code 聊过的需求、用 Cursor 改过的 bug、用 Aider 跑过的重构——这些高价值对话都躺在各工具自己的本地数据库里,格式各异、入口分散。ai-data-extractor 把它们统一成一份规范化 JSONL:用户消息、助手回复、代码上下文(文件路径/选区/片段)、diff、工具调用及其结果、时间戳、会话 ID、项目路径、模型名——各工具存了什么就导出什么。三大用途:微调数据准备、个人使用分析、应用清库前的多年对话备份。会话管理是 AI 工作流的重要一环,还可以参考 Claude Code会话管理三招。
| # | 工具 | 存储方式 | 搜索位置 |
|---|---|---|---|
| 1 | Claude Code | JSONL,每会话一文件 | ~/.claude/projects/**/*.jsonl |
| 2 | Codex CLI | JSONL rollout 文件 | ~/.codex/sessions/**/rollout-*.jsonl |
| 3 | Cursor | SQLite(state.vscdb) | …/Cursor/User/{global,workspace}Storage |
| 4 | Windsurf | SQLite,未公开schema(启发式) | …/Windsurf/User/… |
| 5 | Trae | SQLite + JSONL(启发式) | …/Trae |
| 6 | Continue | JSON,每会话一文件 | ~/.continue/sessions/*.json |
| 7 | Gemini CLI | JSON,每聊天一文件 | ~/.gemini/tmp/<hash>/chats/*.json |
| 8 | OpenCode | JSON(session/message/part树) | ~/.local/share/opencode/storage/ |
| 9 | Cline / Roo Code | JSON,每任务一目录 | <editor>/User/globalStorage/<ext-id>/tasks/ |
| 10 | Aider | Markdown,每项目一份 | <project>/.aider.chat.history.md |
# 无任何第三方依赖,Python 3.9+(推荐 3.10+)
python --version
# 交互模式:编号菜单选择要提取的来源
python extract.py
# 直驱动模式
python extract.py --all # 提取全部
python extract.py --sources cursor,claude_code,aider # 指定来源
python extract.py --list # 只看装了什么,不提取
python extract.py --all --merge # 额外合并 all_conversations.jsonl
# 一键全提取脚本
./extract_all.sh
extracted_data/
├── claude_code_conversations_<时间戳>.jsonl
├── cursor_conversations_<时间戳>.jsonl
├── aider_conversations_<时间戳>.jsonl
└── ... # 每个来源一个文件;--merge 时追加 all_conversations.jsonl
每个提取器也可以单独运行(python -m extractors.cursor),调试单个来源时很方便。
--list 做一次快速、安全的预览,确认能发现哪些来源再决定提取范围--search-path 指向你的项目根;非标准安装位置的其他工具同理一个纯 Python 标准库(无第三方依赖)的开源工具(kruzovic7/ai-data-extractor,447 星),把你自己的 AI 编程助手本地聊天记录自动发现并导出为统一的 JSONL 格式,覆盖 Claude Code、Codex CLI、Cursor、Windsurf、Trae、Continue、Gemini CLI、OpenCode、Cline/Roo Code、Aider 十款工具,用途是微调数据准备、个人使用分析,或在应用清空本地数据库前备份多年对话。
Python 3.9+(推荐 3.10+)直接运行:交互模式 python extract.py 从编号菜单选来源;python extract.py --all 提取全部;--sources cursor,claude_code,aider 指定来源;--list 只报告各来源找到什么不实际提取;--merge 额外合并出 all_conversations.jsonl;--output-dir 指定输出目录(默认 ./extracted_data)。
脚本会自动按 macOS/Linux/Windows 三种约定路径搜索(~/Library/Application Support、~/.config、~/.local/share、%APPDATA%、%LOCALAPPDATA%)。Aider 没有固定数据目录,需要用 --search-path 告诉它你的项目在哪;其他工具装在非标准位置时同样用 --search-path 追加搜索目录。