你跟 AI 编程助手聊了几年的记录,可能下一秒就没了:这个零依赖小工具一键导成统一样式
这个项目能干嘛
ai-data-extractor 干的是一件特别实在、但几乎没人认真做的小事:把你自己在本地跟各种 AI 编程助手聊过的记录,统一抽出来,存成一份规整的 JSONL。说白了,Claude Code、Cursor、Codex、Windsurf、Gemini CLI 这些工具,平时把你的对话都存在本机各个犄角旮旯的数据库或文件里,格式五花八门,哪天 App 一升级、本地数据库一清,几年的对话可能说没就没。这个项目就是趁早帮你把家底搬出来——既能拿去做模型微调的训练集,也能做个人生产力分析,或者单纯就是怕丢先备份一份。
为什么最近火了
我觉得它走红,踩中了一个越来越痛的普遍焦虑:我们用 AI 编程助手越久,沉淀下来的对话就越值钱,但这些记录的所有权和控制权其实一直不在我们手里。Cursor、Windsurf、Trae 这些工具从没公布过存储格式,还动不动改结构(光 Cursor 的存储形态就至少换过三种)。当大家意识到「我教了 AI 半年的项目上下文,可能一次升级就灰飞烟灭」,一个能把记录安全导出的开源小工具,自然就成了刚需。而且它刚刚补上了 Cline / Roo Code 和 Aider 这两个最被忽略、却最常用工具的解析,等于把覆盖面补齐了,社区一下就热了起来。
技术亮点
这个工具的技术亮点是「零依赖、纯标准库」。整段代码只用 Python 标准库,3.9 以上就能跑,不装任何第三方包——这意味着你不用纠结环境、不用担心依赖冲突,下载下来 python extract.py 就能用。它现在支持十种来源:Claude Code(按会话拆的 JSONL)、Codex CLI(rollout 文件)、Cursor(SQLite 的 state.vscdb)、Windsurf(SQLite,无文档结构靠启发式)、Trae、Continue、Gemini CLI、OpenCode、Cline / Roo Code,以及 Aider(每个项目目录里一份 Markdown 记录)。
它会自动识别操作系统,把 macOS 的 ~/Library/Application Support、Linux 的 ~/.config、~/.local/share、Windows 的 %APPDATA%、%LOCALAPDATA% 这些常见数据根都扫一遍,你甚至不用告诉它你用啥系统。输出按来源分别生成带时间戳的 JSONL 文件,每条记录统一成 messages[] 结构,包含角色、内容、代码上下文(文件路径、选中片段)、代码 diff、工具调用及结果、时间戳、会话 ID、项目路径、模型名。还贴心地提供了 --merge 把全部聊天拼成 all_conversations.jsonl 一份。
工程上也有分寸:读数据库一律只读模式(mode=ro),所以哪怕编辑器正开着也不会被锁住;每个读取器都包了容错,单个文件损坏或被锁,只会给你一个部分结果然后跳过,绝不会整个脚本崩溃。对 Cursor / Windsurf / Trae 这种不公开格式的,它用通用启发式去扫聊天相关的键,坦承是「尽力而为」,格式变了就调 KEY_HINTS 或发 PR。
适合什么人
它最对胃口的是三类人。第一类是想拿自己的对话去微调模型的人——README 里直接给了用 datasets.load_dataset 读 JSONL、过滤助手消息、套 chat template 的完整示例,开箱即练。第二类是做个人效率分析的人,想知道自己跟 AI 协作的模式、时间分布、常用工具。第三类是单纯的备份党,怕哪天工具升级把本地库清空,先导出保平安。前提是你愿意在命令行跑一下,并且意识到导出的数据里可能混着密钥、专有代码和个人路径,分享或训练前得先用 detect-secrets 扫一遍。
快速试用
不需要任何依赖。先确认 Python 版本:python --version(3.9+,推荐 3.10+)。然后交互式跑 python extract.py,会弹出一个编号菜单让你勾选要从哪些来源导出;或者图省事直接 python extract.py --all 一键全抽。也可以 python extract.py --sources cursor,claude_code,aider 只抽指定的,python extract.py --list 先看看装了哪些工具而不真正抽取。仓库里还附带一个 ./extract_all.sh 快捷脚本。
与竞品对比
说实话,这个领域几乎没有「同类竞品」——各大 AI 编程工具官方的导出功能要么没有、要么只能导单家。它真正的差异化就是「一站式、跨十家、零依赖」。比起你自己写脚本去翻 Cursor 的 SQLite 或 Claude Code 的 JSONL,它把十个工具的存储位置、格式差异、容错全包了,还统一成一份 schema。比起那些动辄要装一堆依赖的通用数据迁移工具,它纯标准库、双击即用的特性对个人用户极友好。唯一要留心的就是它对无文档格式(Windsurf、Trae)是启发式扫描,版本大改时可能漏抽,这时候要么调 KEY_HINTS 要么等社区 PR——对一个三百多星的开源小项目,这已经是很诚实的取舍了。