AI Data Extractor 教程:把散落十处的 AI 编程对话一网打尽

📌 项目地址:github.com/kruzovic7/ai-data-extractor | 星数:447+ | 依赖:纯 Python 标准库

📋 项目简介

你用 Claude Code 聊过的需求、用 Cursor 改过的 bug、用 Aider 跑过的重构——这些高价值对话都躺在各工具自己的本地数据库里,格式各异、入口分散。ai-data-extractor 把它们统一成一份规范化 JSONL:用户消息、助手回复、代码上下文(文件路径/选区/片段)、diff、工具调用及其结果、时间戳、会话 ID、项目路径、模型名——各工具存了什么就导出什么。三大用途:微调数据准备、个人使用分析、应用清库前的多年对话备份。会话管理是 AI 工作流的重要一环,还可以参考 Claude Code会话管理三招。

✨ 支持的十款工具

#工具存储方式搜索位置
1Claude CodeJSONL,每会话一文件~/.claude/projects/**/*.jsonl
2Codex CLIJSONL rollout 文件~/.codex/sessions/**/rollout-*.jsonl
3CursorSQLite(state.vscdb)…/Cursor/User/{global,workspace}Storage
4WindsurfSQLite,未公开schema(启发式)…/Windsurf/User/…
5TraeSQLite + JSONL(启发式)…/Trae
6ContinueJSON,每会话一文件~/.continue/sessions/*.json
7Gemini CLIJSON,每聊天一文件~/.gemini/tmp/<hash>/chats/*.json
8OpenCodeJSON(session/message/part树)~/.local/share/opencode/storage/
9Cline / Roo CodeJSON,每任务一目录<editor>/User/globalStorage/<ext-id>/tasks/
10AiderMarkdown,每项目一份<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),调试单个来源时很方便。

💡 使用建议

📚 常见问题

ai-data-extractor 是什么?

一个纯 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 追加搜索目录。