Об этом проекте
cc-grass — это небольшой инструмент командной строки на Node.js, который превращает локальную активность Claude Code в график вкладов в стиле GitHub, представленный в виде автономного SVG, где ячейки окрашены в оранжевый цвет вместо зеленого. Он считывает транскрипты сессий, хранящиеся в ~/.claude/projects в виде файлов JSONL, а при наличии ~/.codex — развертывания сессий из ~/.codex/sessions, созданные OpenAI Codex CLI.
В README четко изложена мотивация: Claude Code уже рисует график использования внутри терминала через /usage Stats, но этот вид остается локальным. cc-grass перерисовывает те же базовые данные в файл, который можно закоммитить и встроить в README профиля GitHub, страницу портфолио или в любое другое место.
Примечания по реализации и дизайну из README:
- Ноль зависимостей во время выполнения: используются только модули fs, path и os из Node.js. Никаких ccusage или API-вызовов. Требуется Node 18 или новее; поддерживаются macOS, Linux и Windows.
- Инкрементальный кэш означает, что при повторных запусках перепарсиваются только новые или измененные файлы сессий. Его можно отключить с помощью --no-cache; по умолчанию каталог кэша — ~/.cache/cc-grass.
- SVG повторяет макет GitHub: сетка 10 на 10 ячеек, зазоры 3px, скругленные углы, метки строк Пн/Ср/Пт, ежемесячные заголовки и легенда Less/More.
- Результатом является один SVG-файл или минимальная HTML-страница при использовании флага --html. Проект намеренно не поставляется с демоном, планировщиком или встроенным рабочим процессом GitHub Actions; планирование остается на усмотрение пользователя, а в README приведен пример crontab, который регенерирует файл и делает коммит только при наличии изменений.
Опции включают выбор метрики (промпты, сессии или токены, по умолчанию токены), диапазон дат через --since и --until, темную или светлую тему, переопределение строки заголовка, альтернативные каталоги данных Claude и Codex, исключение данных Codex, исключение транскриптов субагентов и переопределение расположения кэша.
Учет токенов: ежедневный подсчет токенов суммирует входные, выходные, токены создания кэша и чтения кэша для каждой записи, т. е. все, за что API выставило бы счет. Файлы субагентов включены по умолчанию; их исключение позволяет привести данные в соответствие с цифрами, которые Claude Code показывает в /usage. Сессии Codex подсчитываются на основе кумулятивных значений total_token_usage в событиях token_count с использованием дельт, чтобы дублирующиеся события не учитывались дважды. HTML-вывод также показывает расчетную стоимость API для каждой модели на основе опубликованных тарифов за миллион токенов, хранящихся по периодам цен; для моделей с неизвестным тарифом отображается маркер недоступности цены, а в README отмечается, что пользователи с подпиской фактически не платят эти суммы.
Честно задокументированы два нюанса. Во-первых, всплывающие подсказки при наведении на ячейку используют элементы SVG title; они работают в автономных просмотрщиках SVG и в HTML-выводе, но не работают при встраивании SVG в README GitHub, так как GitHub предоставляет его как изображение, и браузеры игнорируют title в таких случаях. Во-вторых, пример SVG и связанная с ним интерактивная страница показывают реальную активность автора, поэтому в README рекомендуется быть внимательным при публикации собственного графика.
Также предоставляется программный API: функции parseClaudeProjects и renderSvg можно импортировать для создания такого же графика в собственном коде. Проект распространяется под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.