Фича: Аналитика токенов — разбивка стоимости, сравнение подписок, поддержка OpenCode
Проблема
CodeDash считает стоимость сессий, но показывает только итоговую сумму в долларах. У пользователей нет понимания:
- Какие типы токенов формируют стоимость (input vs output vs cache)
- Какой процент контекстного окна реально используется
- Окупается ли подписка по сравнению с API-тарифами
- Какие агенты дают реальные данные, а какие — оценки или ничего
Предлагаемое решение
Расширить вкладку Cost Analytics:
- Разбивка по типам токенов — input / output / cache_read / cache_write с процентами
- Утилизация контекстного окна — средний % по всем ходам (не пиковый), база 200K
- Сравнение подписки и API — мультипериодная поддержка (напр. Pro $20/мес + Max $100/мес), расчёт ROI, прогресс-бар
- Стоимость по агентам — горизонтальная диаграмма с вкладом каждого агента
- Прозрачность данных — бейджи: у кого реальные данные / оценки / ничего
- Поддержка 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.js — computeSessionCost(), getCostAnalytics(), batch-запрос OpenCode
src/frontend/app.js — renderAnalytics(), хелперы подписок, бейджи покрытия
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 для всех моделей; для будущих моделей с другими лимитами потребуется доработка
- Даты подписок: периоды хранятся, но не фильтруются по диапазону дат аналитики — итого считается по всем записям
Фича: Аналитика токенов — разбивка стоимости, сравнение подписок, поддержка OpenCode
Проблема
CodeDash считает стоимость сессий, но показывает только итоговую сумму в долларах. У пользователей нет понимания:
Предлагаемое решение
Расширить вкладку Cost Analytics:
tokens.input,tokens.output,tokens.cache.read/writeиз SQLiteПокрытие данных по агентам
usage(input_tokens, output_tokens, cache_*)message.dataJSON →tokens.input/output,tokens.cache.read/writeЗатронутые файлы
src/data.js—computeSessionCost(),getCostAnalytics(), batch-запрос OpenCodesrc/frontend/app.js—renderAnalytics(), хелперы подписок, бейджи покрытияsrc/frontend/styles.css— сетка токенов, карточки подписок, индикаторы покрытияОграничения
conversations_v2.value) не содержит счётчиков токенов вassistant.Response~est.modelIDотсутствует в сообщениях, цена считается по дефолтной модели (Sonnet 4.6), агент помечается как~est.