Skip to content

feat: добавить поддержку GitHub Copilot Chat агента #166

Closed

Description

@MaxRyabov

Summary

GitHub Copilot Chat (расширение VS Code) хранит историю разговоров локально в workspaceStorage/*/chatSessions/ в формате JSON и JSONL. Эти данные можно загружать и отображать в CodeDash наравне с остальными агентами.

Предлагается добавить Copilot как 6-й поддерживаемый агент: обнаружение сессий, детальный просмотр, поиск, leaderboard, полная интеграция в UI.

Почему это нужно

Copilot Chat — один из самых распространённых AI-агентов в VS Code. Многие разработчики используют его параллельно с Claude Code / Codex / Cursor. Без поддержки Copilot дашборд показывает неполную картину активности.

Что нужно реализовать

Backend (src/data.js)

  • Константы путей VS Code storage: %APPDATA%/Code (Windows), ~/Library/Application Support/Code (macOS), ~/.config/Code (Linux)
  • Маппинг workspace-hash → проект через workspace.json (декодирование file URI, нормализация Windows-путей), с дисковым кэшем
  • Поддержка двух форматов хранения:
    • JSON — полное состояние сессии как один объект
    • JSONL — mutation log (kind:0 init, kind:1 set, kind:2 splice), нужен целевой replay для извлечения requests и responses
  • Оптимизация парсинга: пропуск нерелевантных JSONL-мутаций (inputState, image byte-array вложения) до JSON.parse — файлы бывают 200+ МБ
  • Дисковый кэш метаданных сессий по ключу path|mtime|size
  • Обработка формата Copilot в _computeSessionDailyBreakdown() для корректной работы leaderboard
  • computeSessionCost() → пустая стоимость (Copilot не хранит данные о токенах локально, как Cursor/Kiro)

Frontend

  • Sidebar фильтр с иконкой и data-view="copilot-only"
  • CSS класс .tool-copilot (фиолетовый #8b6fc0)
  • Calendar toggle, analytics label, heatmap color, AGENT_INSTALL entry

Документация

  • Обновить таблицы агентов и data sources в README.md, CLAUDE.md, ARCHITECTURE.md, README_RU.md, README_ZH.md

Критерии приёмки

  • Copilot сессии отображаются в списке с фиолетовым бейджем
  • Фильтр "Copilot" в сайдбаре работает корректно
  • Клик по сессии — detail panel с user/assistant сообщениями
  • Leaderboard загружается без зависаний при наличии больших Copilot-файлов
  • Analytics и heatmap учитывают Copilot с корректным цветом/меткой
  • На машине без VS Code — 0 Copilot сессий, без ошибок
  • Обратная совместимость: существующие агенты работают как прежде

Известные ограничения

  • Стоимость недоступна — Copilot не хранит usage-данные локально
  • Active session detection не поддерживается — Copilot работает внутри VS Code, не как отдельный процесс
  • Вариант Code - Insiders пока не сканируется

Activity

  1. MaxRyabov commented on Apr 10, 2026

    @MaxRyabov
    ContributorAuthor

    Привет! У меня готова реализация этой фичи — ветка feat/copilot-agent, 6 коммитов, 12 файлов, +503 строки.

    Протестировано локально на реальных данных VS Code (319 сессий, 50+ проектов):

    • Оба формата (JSON и JSONL) парсятся корректно
    • Холодный скан ~5с, тёплый ~120мс (дисковый кэш)
    • Detail loading для 200+ МБ файлов — ~1с
    • Leaderboard работает без зависаний
    • Синтаксис и CLI проверены

    PR: #171

  2. ABIvan-Tech commented on Apr 10, 2026

    @ABIvan-Tech
    Contributor

    на Маках сессии хранятся тут .copiolt/session-state для copilot cli в том числе

  3. MaxRyabov commented on Apr 10, 2026

    @MaxRyabov
    ContributorAuthor

    Связь с PR #167 (Copilot CLI)

    Изучил PR #167 от @ABIvan-Tech — он добавляет поддержку Copilot CLI (терминальный агент, ~/.copilot/session-state/), а моя реализация покрывает Copilot Chat (расширение VS Code, workspaceStorage/*/chatSessions/).

    Это два разных агента с разными форматами хранения:

    PR #167 — Copilot CLI Моя реализация — Copilot Chat
    Хранение ~/.copilot/session-state/{uuid}/events.jsonl + workspace.yaml workspaceStorage/*/chatSessions/*.json и *.jsonl
    Формат Event-based JSONL (user.message, assistant.turn_start/message/turn_end) JSON (полный state) или mutation JSONL (kind:0/1/2)
    Метаданные YAML (cwd, repo, branch, summary) workspace.json (folder URI)
    JetBrains ~/.copilot/jb/ (partition-1.jsonl) —
    Active detection inuse.{pid}.lock файлы Не поддерживается (работает внутри VS Code)
    Оптимизации — Дисковый кэш, пропуск мутаций с вложениями, peek для файлов >1МБ

    Чтобы избежать конфликта по tool name, переименовал агент в copilot-chat — PR #167 использует copilot для CLI, я использую copilot-chat для VS Code. Реализации дополняют друг друга и не конфликтуют по коду.

    PR: #171

  4. vakovalskii commented on Apr 16, 2026

    @vakovalskii
    Owner

    PR #171 (Copilot Chat) waiting for rebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions