session-cost
Skill9 starsChanged 2 months agoMITView on GitHub
Посчитать токены задачи из явных локальных receipts или токены сессии Claude Code из транскрипта. Для ledger задачи, отчета и сметы; не для остатка лимита аккаунта или внешних usage API.
Files
session-cost
Умеет сводить расход отдельной задачи из явных receipts, собирать receipt из явного Codex CLI JSONL и считать выбранную сессию Claude Code по локальному транскрипту. Работает без внешних API. /usage показывает остаток лимита аккаунта - это другая задача.
Когда применять
- Есть один активный task ID и нужен честный учет нескольких сессий/ролей/моделей: следуй task-accounting.md, не допуская параллельных писателей ledger.
- Запуск выполнен через Codex CLI
exec --jsonи сохранен в явно выбранный локальный файл: используй--codex-eventsпо процедуре task-accounting.md. - Нужен локальный расход явной Claude Code сессии: используй legacy режимы ниже.
Когда НЕ применять
- Остаток лимита аккаунта: используй штатный
/usage, не этот скрипт. - Доступ к аккаунту, внешние usage API, поиск транскриптов или извлечение текста prompt/ответов: скрипт этого не делает.
- Нативная orchestration-сессия без доступного usage receipt остается
unknown; этот parser не находит и не восстанавливает такие вызовы. - Клиентский счет: внутренний ledger не определяет цену, ставку или сумму к выставлению заказчику.
Как работает
Claude Code пишет каждую сессию в ~/.claude/projects/<encoded-project>/<session-id>.jsonl. У каждого assistant-сообщения есть message.usage с полями input_tokens, output_tokens, cache_creation_input_tokens (запись кэша), cache_read_input_tokens (чтение кэша). Скрипт считает только записи типа assistant с непустым usage. Повторные записи одного сообщения в транскрипте не завышают расход: учитывается последний непустой usage; сообщения без ID считаются отдельно.
Для каждого выбранного <dir>/<id>.jsonl добавляются <dir>/<id>/subagents/*.jsonl: при --file, --session, выборе текущей сессии и --all-sessions. Чужие сессии не включаются. Отсутствующий каталог субагентов дает нулевой вклад; ошибка доступа к существующему каталогу или файлу останавливает подсчет. Входные файлы не изменяются.
Текстовый вывод показывает основной контекст, суммарную строку субагентов (включая нулевую) и общий итог. В каждой группе есть число сообщений, четыре типа токенов, work = output + cache_write и grand_total = input + output + cache_read + cache_write.
В --json верхние поля files, messages, tokens, work_tokens, grand_total включают весь учтенный расход, в том числе субагентов. files перечисляет все прочитанные файлы без дублей. Группы main и subagents содержат те же пять полей. На верхнем уровне и в каждой группе есть invalid_lines и messages_without_id; общие числа равны сумме групп.
Непустой битый JSON пропускается с увеличением invalid_lines. Пустые строки и корректные служебные записи не считаются ни сообщениями, ни ошибками. messages_without_id показывает число учтенных записей без ID, для которых дедупликация невозможна. При ненулевых счетчиках stderr содержит причину, число записей и путь файла. Битый JSON дает код 3 с явно неполной сводкой, записи без ID - сводку с ограничением дедупликации. При успешном подсчете stdout с --json остается валидным JSON. Ошибки доступа и отсутствующий явно указанный файл дают код 1 и причину в stderr, без успешной частичной сводки в stdout.
Имя папки проекта - абсолютный путь рабочей папки, где каждый не-alnum символ заменен на - (/Users/x/My.Proj -> -Users-x-My-Proj).
Запуск
python3 scripts/session-cost.py # текущая сессия (env CLAUDE_CODE_SESSION_ID), проект по CWD
python3 scripts/session-cost.py --session <id> # конкретная сессия
python3 scripts/session-cost.py --file <path.jsonl>
python3 scripts/session-cost.py --project <dir> --all-sessions
python3 scripts/session-cost.py --json # машиночитаемоЧто знать про цифры (важно для честной сметы)
- Текущая сессия определяется по env
CLAUDE_CODE_SESSION_ID(его ставит Claude Code) - надежно. Без него - свежайшая по mtime, а при параллельных сессиях в одном проекте это может оказаться ЧУЖАЯ сессия. Тогда указывай--sessionявно. cache_readобычно доминирует (десятки млн) - это перечитывание постоянного контекста (системный промпт, правила, память, схемы тулов) на каждом ходу, а НЕ работа по задаче. Показатель реального труда агента -output(и отчастиcache_write). Скрипт помечает это в выводе (строкаwork).- per-session = per-задача только когда сессия однотемная. Для сессии, где смешаны разные задачи, точной разбивки по задачам нет - бери сессию целиком или дели вручную по границам.
Когда НЕ применять
- Нужен остаток лимита аккаунта (не расход конкретной сессии) - это
/usageили usage-эндпоинты аккаунта. - Нужна стоимость в деньгах - скрипт дает токены; конверсию в валюту делать снаружи по актуальным ценам модели.
Модель и текущие назначения
Перед новым заданием и запуском применяй маршрутизацию моделей: свежий MODELS выше канонического дефолта. Границы данных и полномочий этого навыка сохраняются.
Other versions4 projects use a version of this.
Word for word · 1
- dewil/claude-toolkit★ 9100% same
Edited · 0
None found.
Wrote their own version · 3
- PeteChu/skills★ 1same name
- eldenjh/claude-usage-hud★ 0same name
- MikkoNumminen/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository37 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agent-browserSkill
- android-apk-releaseSkill
- asana-blockersSkill
- asana-commentsSkill
- asana-projectSkill
- backlog-taskSkill
- canon-syncSkill
- csv-xlsxSkill
- estimate-calibrationSkill
- gdocsSkill
- harvest-canonSkill
- implementSkill
- jev-decideSkill
- llm-ruSkill
- local-transcriptionSkill
- md-docxSkill
- md-pdfSkill
- md-pptxSkill
- memory-compactSkill
- memory-searchSkill
- migrateSkill
- minimal-codeSkill
- mymeet-snapshotSkill
- office-mdSkill
- pii-maskSkill
- proofreadSkill
- qa-browserSkill
- redmine-snapshotSkill
- repo-publicationSkill
- requirementsSkill
- reviewSkill
- sddSkill
- telegram-sendSkill
- telegram-snapshotSkill
- tutorSkill
- web-researchSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

