Каждый AI-ассистент хранит вашу историю — но молчит об этом

Разработчик под ником 0xSero выпустил на GitHub открытый инструментарий ai-data-extraction — набор Python-скриптов, который автоматически находит и выгружает полную историю сессий из восьми популярных AI-ассистентов для программистов. Проект набрал более 1 000 звёзд и уже собрал 4 контрибьютора. Примечательна сама постановка проблемы от одного из пользователей: «Каждый coding-агент хранит историю. Никто из них не даёт её посмотреть».

ℹ Что такое ai-data-extraction
Полный набор инструментов для извлечения ВСЕХ данных чатов, агентных сессий и кодового контекста из AI-ассистентов для последующего машинного обучения. Требует только Python 3.6+ — без дополнительных зависимостей.

Что именно извлекается

Каждый скрипт собирает не только текст переписки. В выгрузку попадают:

  • сообщения пользователя и ответы модели
  • фрагменты кода с путями к файлам и номерами строк
  • диффы (предложенные правки кода)
  • контексты нескольких файлов одновременно
  • вызовы инструментов (tool use) и результаты их выполнения
  • временны́е метки и метаданные сессий

Поддерживаемые инструменты

Тулкит извлекает полную историю диалогов из 8 AI-ассистентов для программирования. Вот краткая сводка:

АссистентФормат храненияРасположение данных
Claude CodeJSONL-файлы сессий~/.claude, ~/.claude-code
CursorSQLite БД (.vscdb)~/Library/Application Support/Cursor
CodexRollout JSONL~/.codex, ~/.codex-local
WindsurfSQLite (VSCode-like)~/Library/Application Support/Windsurf
TraeJSONL + SQLite~/.trae, ~/Library/Application Support/Trae
ContinueJSON-файлы сессий~/.continue/sessions/
Gemini CLIJSON-файлы чатов~/.gemini/tmp/[hash]/chats/
OpenCodeJSON + Tauri .dat~/.local/share/opencode
💡 Одна команда — все данные

Чтобы извлечь данные из всех восьми инструментов сразу, достаточно запустить:

./extract_all.sh

Скрипт создаст директорию extracted_data/ с файлами в формате JSONL, разбитыми по временным меткам.

Как это работает


graph TD
    A[Запуск скрипта] --> B[Определение ОС]
    B --> C[Поиск установок ассистента]
    C --> D{Формат данных?}
    D -->|SQLite| E[Парсинг .vscdb / .db]
    D -->|JSONL| F[Чтение файлов сессий]
    D -->|JSON| G[Чтение файлов чатов]
    E --> H[Объединение в JSONL]
    F --> H
    G --> H
    H --> I[extracted_data/*.jsonl]

Каждый скрипт умеет работать с macOS, Linux и Windows — пути к данным подбираются автоматически. Для Cursor реализована поддержка всех форматов хранения, начиная с версии v0.43 и вплоть до актуального v2.0+, поскольку структура баз данных менялась несколько раз.

Пример выходного формата

{
  "messages": [
    {
      "role": "user",
      "content": "How do I fix this TypeScript error?",
      "code_context": [
        {
          "file": "/Users/user/project/src/index.ts",
          "code": "const x: string = 123;"
        }
      ],
      "timestamp": "2025-01-16T14:30:22.123Z"
    },
    {
      "role": "assistant",
      "content": "The error occurs because you're assigning a number to a string type...",
      "model": "claude-sonnet-4-5",
      "timestamp": "2025-01-16T14:30:25.456Z"
    }
  ],
  "source": "cursor-composer",
  "name": "TypeScript Type Error Fix"
}

Каждая беседа — одна строка JSONL. Данные можно сразу загрузить в Hugging Face datasets и дообучить любую модель на собственном стиле работы.

Зачем это нужно и какие риски

«Хочешь поэкспериментировать с Reinforcement Learning? Хочешь восстановить все свои AI-сессии в виде аккуратного, готового к обучению датасета?» — типичный сценарий использования инструмента из обсуждений на X.

Тулкит извлекает ВАШИ СОБСТВЕННЫЕ данные из локально установленных AI-инструментов — это принципиальный момент. Авторы позиционируют проект как способ вернуть контроль над своей историей взаимодействия с ИИ.

Однако инструмент поднимает и важные вопросы о приватности в более широком контексте. Самой распространённой проблемой приватности оказывается отсутствие прозрачности в том, что именно инструмент собирает, хранит, передаёт, использует для обучения или делает доступным администраторам. Факт существования ai-data-extraction наглядно демонстрирует: локальные данные AI-ассистентов содержат значительно больше информации, чем пользователи обычно предполагают.

⚠ Что хранится в ваших базах данных
В извлечённых данных могут оказаться пути к проприетарным файлам, фрагменты исходного кода, результаты выполнения команд и другие чувствительные сведения о проекте. Перед отправкой датасета куда-либо рекомендуется его внимательно проверить.

Контекст: данные разработчиков становятся активом

По данным отчёта GitHub Octoverse 2025, 92% разработчиков в США уже используют AI-инструменты для написания кода. При таком масштабе накопленная история взаимодействий с ассистентами превращается в ценный корпус данных — и инструмент вроде ai-data-extraction позволяет разработчикам самостоятельно распоряжаться этим ресурсом.

Показательно, что сам автор использовал ai-data-extraction для построения калибровочного корпуса в собственном исследовании по машинному обучению.

Проект открыт для вклада сообщества: если появился новый формат хранения или поддержка нового инструмента — авторы ждут pull request’ы.