ARTICLE · 1070455
【AI工具推荐】你用AI写了1000小时代码,聊天记录却随时可能消失?这个开源工具4天狂揽812 Star帮你全部找回
发布时间:2026-09-24 15:56:20 最近访问:2026-09-24 15:56:00
【AI工具推荐】你用AI写了1000小时代码,聊天记录却随时可能消失?这个开源工具4天狂揽812 Star帮你全部找回
你用AI写了1000小时代码,聊天记录却随时可能消失?这个开源工具4天狂揽812 Star帮你全部找回你用 Claude Code 写了半年的代码,和 AI 助手讨论了几千个技术方案,审查了上万行代码变更。那些对话里藏着你的思考过程、决策逻辑、甚至一些灵光一闪的架构设计。或者你换了台电脑,那些和 AI 一起 debug 到凌晨三点的夜晚,那些手把手教 AI 理解你项目结构的对话,全部消失了。没有任何提醒,没有任何备份选项。这不是假设。Cursor 的 state.vscdb 是个 SQLite 数据库,schema 从未公开文档化,已经经历了至少三次格式变更。Windsurf 和 Trae 同理。你的聊天记录,本质上就是一份"随时可能被打碎的、没有文档保障的"本地文件。今天推荐的 ai-data-extractor,就是来解决这个问题的。它是一个完全开源的 Python 工具,能自动发现并提取你所有 AI 编程助手的完整聊天历史,统一输出为标准 JSONL 格式。上线 4 天,GitHub 狂揽 812 Star,132 个 Fork。ai-data-extractor 是一个零依赖的 Python 命令行工具(仅需 Python 3.9+,纯标准库实现),专门用于从各种 AI 编程助手的本地存储中提取完整的对话历史。它的核心能力可以总结为一句话:把你散落在十几个不同位置、使用不同格式存储的 AI 编程聊天记录,全部找出来,统一成一种格式。• 时间戳、会话 ID、项目路径、模型名称——每个工具存储了什么就提取什么 | | | |
|---|
| Claude Code | | |
| Codex CLI | | |
| Cursor | | |
| Windsurf | | |
| Trae | | |
| Continue | | |
| Gemini CLI | | |
| OpenCode | | |
| Cline / Roo Code | | |
| Aider | | |
注意这个工具覆盖的存储格式跨度非常大——从 JSONL 到 SQLite 到纯 Markdown,从单文件到分散目录。这恰恰说明了 AI 编程工具生态的碎片化现状:每款工具都选择了完全不同的方式来存储你的数据,而且大多数没有文档化。2026 年了,越来越多的开发者每天都在用 AI 编程助手。一个重度用户一个月可能产生几百 MB 的对话数据。这些数据包含:• 学习记录:你和 AI 讨论的每一个技术概念、每一次代码审查• 决策上下文:为什么选了 React 而不是 Vue?为什么数据库用了 PostgreSQL?这些决策的理由都藏在对话里• 微调素材:想用你自己的编码风格微调一个模型?你的对话历史就是最好的训练数据但问题是,这些数据的存储完全依赖本地文件,没有任何云端同步,也没有官方的导出功能。一旦数据库损坏、重装系统、或者工具本身更新导致格式不兼容——数据说没就没。ai-data-extractor 给了你一个"逃生通道":一键提取,永久保存。随着开源模型越来越强(Llama 4、Qwen 3、DeepSeek V4),越来越多的开发者和团队想要微调一个"懂自己代码风格"的专属模型。而微调最需要的就是高质量的对话数据。ai-data-extractor 输出的 JSONL 格式直接兼容 Hugging Face 的 datasets 库:from datasets import load_dataset dataset = load_dataset("json", data_files="extracted_data/*.jsonl", split="train") dataset = dataset.filter(lambda x: any(m["role"] == "assistant" for m in x["messages"])) def format_chat(example): return {"text": tokenizer.apply_chat_template(example["messages"], tokenize=False)} dataset = dataset.map(format_chat)从提取到训练,三步搞定。这就是为什么项目 README 专门写了一节 "Training use cases"——作者很清楚,数据提取只是起点,微调才是终极用途。当你用 AI 编程助手时,你的代码、你的 API Key、你的项目架构、甚至你的客户端代码,全都经过了这些工具。但大多数工具从未明确告诉你:这些对话数据存在哪里?会被上传吗?会不会被用于训练?ai-data-extractor 把数据主权还给了你。先看到数据,才能保护数据。 项目甚至内置了安全建议——用 detect-secrets 扫描提取结果中的 API Key 和敏感信息,确保你不会在不知情的情况下泄露密钥。你不需要告诉工具你用的是什么系统。它会自动检测 macOS、Linux 和 Windows 的约定路径:• macOS: ~/Library/Application Support• Linux: ~/.config、~/.local/share• Windows: %APPDATA%、%LOCALAPPDATA%然后逐一搜索每个可能的存储位置。你只需要运行一条命令。不同的 AI 工具有完全不同的存储策略,ai-data-extractor 为每种都做了专门适配:JSONL 格式(Claude Code、Codex CLI):逐行读取,每行解析为 JSON,直接映射到标准 schema。简单直接。SQLite 格式(Cursor、Windsurf、Trae):使用只读连接打开数据库,不会阻塞正在运行的应用。对于 Cursor 这样经历了多次 schema 变更的工具,提取器实现了所有三种已知格式的兼容。对于 Windsurf 和 Trae 这种从未公开 schema 的工具,则使用启发式方法——扫描键值对中寻找"看起来像角色+文本对"的 JSON 对象。Markdown 格式(Aider):Aider 是最特殊的——没有中央数据库,每个项目目录下只有一个 .aider.chat.history.md 文件。工具会扫描你的 home 目录以及常见项目根目录名(projects、code、dev、repos 等),最多 5 层深度,自动跳过 node_modules 和 .git。# 交互式:从编号菜单中选择要提取的数据源 python extract.py # 全部提取,一键搞定 python extract.py --all # 只提取指定工具 python extract.py --sources cursor,claude_code,aider # 先预览有哪些数据,不实际提取 python extract.py --list # 全部提取 + 合并成一个文件 python extract.py --all --merge
--list 模式特别适合第一次使用的用户——它会报告每个工具的安装情况和数据量,但不做任何提取操作,让你心里有数再动手。• 只读操作:永远不会写入源数据库,你的 AI 工具完全不受影响• 单文件容错:一个损坏或锁定的文件不会导致整个任务崩溃——会跳过并继续• 无外部依赖:纯 Python 标准库,不需要 pip install 任何东西git clone https://github.com/kruzovic7/ai-data-extractor.git cd ai-data-extractor
Claude Code ✓ Found 47 session files Cursor ✓ Found database (234 MB) Windsurf ✓ Found database (89 MB) Aider ✓ Found 12 project histories Cline ✗ Not installed
python extract.py --all --merge
完成后,你会在 extracted_data/ 目录下看到:extracted_data/ ├── claude_code_conversations_20260915_143022.jsonl ├── cursor_conversations_20260915_143022.jsonl ├── windsurf_conversations_20260915_143022.jsonl ├── aider_conversations_20260915_143022.jsonl └── all_conversations.jsonl
每一行都是一个完整的对话 JSON,包含所有消息、代码上下文、工具调用等元数据。pip install detect-secrets detect-secrets scan extracted_data/*.jsonl
在分享或训练之前,先确认没有泄露 API Key、密码等敏感信息。 | | | |
|---|
| 10 款 | | |
| 完整 | | |
| 标准化 JSONL | | |
| 直接可用 | | |
| 完全本地 | | |
| MIT 协议 | | |
ai-data-extractor 最大的优势在于广度和深度:它不仅覆盖面广(10 款工具),而且提取深度够——不只是文字消息,还包括代码上下文、diff、工具调用等"元数据"。这些信息对于理解编码决策过程至关重要。你是用 Cursor 写了两年的开发者,数据库突然损坏。如果你提前用 ai-data-extractor 导出了 JSONL,所有对话都在。你可以搜索任何曾经讨论过的技术方案,找回任何曾经有过的灵感。一个 5 人开发团队,每个人用 Claude Code 积累了半年的编码对话。用 ai-data-extractor 提取后合并,就是一份高质量的"团队编码风格"训练数据。微调出的模型能理解团队特有的命名习惯、架构偏好和代码规范。把提取的 JSONL 数据导入分析工具,你可以统计:你从 Cursor 切换到 Windsurf?没问题。用 ai-data-extractor 把 Cursor 的聊天记录导出,然后你可以对比两个工具在相同任务上的表现差异,甚至把旧的对话上下文喂给新工具,让它快速了解你的项目。我们正处在一个 AI 编程成为日常的时代。Cursor、Claude Code、Windsurf、Aider……这些工具正在成为开发者最亲密的"同事"。但有一个问题被严重忽视了:你和 AI 之间的对话,本质上是你最珍贵的编码知识资产。 它记录了你的思考方式、你的技术判断、你的成长轨迹。而这份资产,目前就静静地躺在你电脑的某个 SQLite 文件或 JSONL 文件里,没有任何备份保障,没有任何官方导出渠道。ai-data-extractor 用 812 Star 证明了一件事:开发者需要的不只是更好的 AI 编程工具,更是掌控自己数据的能力。零依赖,纯本地,MIT 协议。4 天时间,132 个 Fork。🔗 项目地址:github.com/kruzovic7/ai-data-extractor📊 数据:812 Star | 132 Fork | MIT License | Python💬 你用过哪些 AI 编程助手?有备份过聊天记录吗?评论区聊聊。