Skip to content

Аналитика токенов — разбивка стоимости, сравнение подписок, поддержка OpenCode #18

@NovakPAai

Description

@NovakPAai

Фича: Аналитика токенов — разбивка стоимости, сравнение подписок, поддержка OpenCode

Проблема

CodeDash считает стоимость сессий, но показывает только итоговую сумму в долларах. У пользователей нет понимания:

  • Какие типы токенов формируют стоимость (input vs output vs cache)
  • Какой процент контекстного окна реально используется
  • Окупается ли подписка по сравнению с API-тарифами
  • Какие агенты дают реальные данные, а какие — оценки или ничего

Предлагаемое решение

Расширить вкладку Cost Analytics:

  1. Разбивка по типам токенов — input / output / cache_read / cache_write с процентами
  2. Утилизация контекстного окна — средний % по всем ходам (не пиковый), база 200K
  3. Сравнение подписки и API — мультипериодная поддержка (напр. Pro $20/мес + Max $100/мес), расчёт ROI, прогресс-бар
  4. Стоимость по агентам — горизонтальная диаграмма с вкладом каждого агента
  5. Прозрачность данных — бейджи: у кого реальные данные / оценки / ничего
  6. Поддержка OpenCode — чтение tokens.input, tokens.output, tokens.cache.read/write из SQLite

Покрытие данных по агентам

Агент Статус Источник
Claude Code Реальные данные JSONL поле usage (input_tokens, output_tokens, cache_*)
Claude Extension Реальные данные Тот же формат JSONL
OpenCode Реальные данные (новое) SQLite message.data JSON → tokens.input/output, tokens.cache.read/write
Codex Оценка Эвристика по размеру файла (в JSONL нет данных о токенах)
Cursor Нет данных Подписочная модель, токенов в транскриптах нет
Kiro Нет данных В JSON разговоров нет полей с токенами

Затронутые файлы

  • src/data.jscomputeSessionCost(), getCostAnalytics(), batch-запрос OpenCode
  • src/frontend/app.jsrenderAnalytics(), хелперы подписок, бейджи покрытия
  • src/frontend/styles.css — сетка токенов, карточки подписок, индикаторы покрытия

Ограничения

  • Cursor: невозможно извлечь данные о токенах — формат транскриптов не содержит полей usage, Cursor работает по подписке (не API)
  • Kiro: JSON разговоров (conversations_v2.value) не содержит счётчиков токенов в assistant.Response
  • Codex: доступна только оценка по размеру файла, в UI помечена как ~est.
  • OpenCode без modelID: если modelID отсутствует в сообщениях, цена считается по дефолтной модели (Sonnet 4.6), агент помечается как ~est.
  • Контекстное окно: захардкожено 200K для всех моделей; для будущих моделей с другими лимитами потребуется доработка
  • Даты подписок: периоды хранятся, но не фильтруются по диапазону дат аналитики — итого считается по всем записям

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