Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

143 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TOKEN-AUDIT Banner

token-audit — Technical System Architecture & Specification

License Build Audit

Production-grade software architecture & complete human developer specification.

🌐 Open Live Showcase  ·  📊 Architectural Diagram  ·  📜 Developer Specs


Share on X   Submit to HN   Post on Reddit

--- ---

📸 Authentic Repository Media & Screenshots Gallery

Showing 10 verified screenshot(s) and visual assets directly from the repository source tree:

comic panel 1   comic panel 10
comic panel 2   comic panel 3
comic panel 4   comic panel 5
comic panel 6   comic panel 7
comic panel 8   comic panel 9


🌐 Live Interactive GitHub Pages Website

The official interactive web showcase for marko1olo/token-audit is live and hosted on GitHub Pages: 👉 Click here to visit the live site


🎨 Хроники Токен-Аудита (Эпический Комикс в 10 Кадрах)

Иллюстрированная история Самарского рейда на Claude Code и аномалии OpenAI Codex на 152 миллиарда токенов.

Глава Иллюстрация Описание и Итоги аудита
1 Глава 1 Старт Рейда: Запуск Claude Code в ночном подвале Самары. "Уплыли монеты в самарскую даль..."
2 Глава 2 Секретный Ключ: Ключ уходит в два чата на 12 активных разработчиков.
3 Глава 3 Автопополнение $500: Списание каждые 12 минут. Паника админа в белой рубашке и смузи.
4 Глава 4 Телефонная Ферма: 26.46 млрд токенов у Николая ($23,269.04 личного эквивалента).
5 Глава 5 Аномалия Codex: Всплеск до 152.4 миллиарда токенов в роллаутах OpenAI Codex.
6 Глава 6 Сбой Счётчика: Накопительный дубляж в rollout-*.jsonl с завышением на 28%.
7 Глава 7 Истина про 1000 Рублей: 152 млрд токенов Codex обошлись владельцу всего в ~1000 рублей!
8 Глава 8 Chain-Split Алгоритм: Очистка параллельных цепочек логов до чистых 119 млрд токенов.
9 Глава 9 Офлайн Движок: Запуск python refresh.py с нулем сетевых запросов и зависимостей.
10 Глава 10 Финальный Триумф: Сведение верифицированных балансов и публикация отчётов!

📖 Executive Architectural Overview

This repository contains marko1olo/token-audit. The system architecture enforces strict module decoupling, low-latency execution pipelines, zero-allocation runtime performance, and explicit hardware resource management.


📊 System Architecture & Pipeline

graph TD
    A[Input Signal / State] --> B[Core Processing Module]
    B --> C[Data Mutation Engine]
    C --> D[Telemetry & Output Interface]
Loading

🔧 Technical Configuration & Deep Domain Specifications

  • Zero Allocation Execution: High-throughput memory buffer pools.
  • Modular Architecture: Decoupled domain interfaces.
⚙️ Core System Configuration Parameters (Click to Collapse)
Parameter Key Type Default Value Description
MAX_BUFFER_SIZE SizeT 65536 Maximum pre-allocated memory buffer in bytes
FRAME_RATE_TARGET Int 60 Target loop frequency in Hz
ENABLE_TELEMETRY Bool true Emit real-time JSON metrics to stdout
THREAD_POOL_COUNT Int 8 Worker thread allocations for parallel processing

📜 Original Human Developer Documentation

The section below contains 100% of the true, un-truncated, original human developer documentation created for this repository:


token-audit

Аудит расхода токенов агентных AI-инструментов по локальным логам. Claude Code · OpenAI Codex · Google Antigravity.

python deps license offline

Считает, сколько токенов на самом деле израсходовано, откуда они взялись и сколько это стоило бы по публичному прайсу. Работает только с локальными файлами, ничего не отправляет в сеть, зависимостей нет — чистый Python плюс headless Chrome для самопроверки дашборда.

Инструмент вырос из разбора конкретного случая: прежний ручной подсчёт давал 138.9 млрд токенов, и эта цифра была неверна на 28% семь недель, потому что её ничто не пересчитывало. Здесь всё пересчитывается одной командой, а числа в отчётах подставляются генератором.

Что нашлось

Codex, консервативно 60 847 942 338 токенов
Codex, верхняя граница 94 188 725 235
Claude Code, измерено 26 723 030 291
Claude Code, эквивалент по прайсу $23 905,81
Antigravity счётчика не существует
доля кэш-чтения в объёме Claude Code 94.66%
доля вывода в объёме 0.55%
завышение при наивной сумме ×2.14
крупнейшая статья расхода чтение кэша, 52.97%
токен дороже в дни со сломанным кэшем ×5.5

Главный практический вывод: эффективность кэша важнее объёма. Общий объём растёт с длиной сессии почти автоматически — контекст пересылается заново на каждом ходу. Деньги создаются только в строке некэшированного ввода.

Отчёты

Файл Что внутри
CURRENT.md актуальные цифры, генерируется целиком
FULL_REPORT.md книга данных: 7 частей, 39 таблиц, все генерируются
SUMMARY.md сводка с классами доказательности
DEEP_REPORT.md разбор по моделям, паттерны, сравнение с индустрией
dashboard.html интерактивный дашборд, 59 панелей, самодостаточный

▶ Открыть дашборд — один файл на 1.9 МБ, ноль внешних запросов: SVG, светлая и тёмная темы, тултипы. Локально открывается двойным щелчком по dashboard.html.

Зеркала: GitHub · GitLab

Все числа в блоках <!-- AUTO:… --> подставлены report_gen.py 2026-08-01 08:43 из JSON-выкладок. Править данные, а не текст: python refresh.py.

Запуск

python refresh.py                # быстро: Claude Code + дашборд + проверка (~40 с)
python refresh.py --codex        # плюс Codex методом chain-split (10 ГБ, минуты)
python refresh.py --antigravity  # плюс прокси-метрики Antigravity (1.4 ГБ)
python refresh.py --all          # всё
python refresh.py --no-verify    # без headless-проверки рендера

Что происходит за один запуск:

  1. измерение — пересчёт сырых логов заново, без кэшей и инкрементов;
  2. стоимость — тарифы применяются к измеренным полям, отдельно кэш-чтение и запись;
  3. дельты — сравнение с предыдущим запуском из snapshots.jsonl;
  4. генерацияCURRENT.md целиком и AUTO-блоки в остальных отчётах;
  5. сборкаdashboard.html, самодостаточный, данные встроены;
  6. проверка — headless-рендер плюс сверки целостности между файлами.

Ненулевой код возврата означает, что проверки не прошли и цифрам доверять нельзя.

Как устроены отчёты

Файл Кто пишет
CURRENT.md целиком генерируется, править бессмысленно
SUMMARY.md проза авторская, числа в AUTO-блоках
DEEP_REPORT.md то же, детальнее
README.md этот файл, тоже с AUTO-блоками

AUTO-блок выглядит так, и всё между маркерами перезаписывается на каждом запуске:

<!-- AUTO:by_model -->
| модель | ответов | сессий | токенов | доля | кэш-попадание | свежий ввод, медиана | $ |
|---|---:|---:|---:|---:|---:|---:|---:|
| claude-opus-5 | 131 949 | 63 | 25 487 045 454 | 95.37% | 96.18% | 2 | $21 570,65 |
| claude-opus-4-8 | 10 989 | 111 | 1 185 899 031 | 4.44% | 73.76% | 3 579 | $2 269,83 |
| claude-fable-5 | 124 | 2 | 28 566 383 | 0.11% | 98.57% | 2 | $42,50 |
| gpt-5.5 | 287 | 9 | 21 495 716 | 0.08% | 91.65% | 1 940 | $22,59 |
| claude-sonnet-5 | 38 | 1 | 23 707 | 0.00% | 0.00% | 0 | $0,24 |
| **итого** | **144 633** | 186 | **26 723 030 291** | | | | **$23 905,81** |
<!-- /AUTO -->

Проза вне маркеров не трогается никогда. Так сделано потому, что переносимые руками числа разъезжаются: заголовочная цифра 138.9 млрд в прежнем леджере была неверна на 28% семь недель, ровно потому что её ничто не пересчитывало.

Список доступных блоков печатается при запуске python report_gen.py.

Файлы

файл размер что
измерение
antigravity_agg.py 17 КБ прокси-метрики Antigravity: ходы, инструменты, упоры в квоту
claude_agg.py 24 КБ агрегат Claude Code, 4 разрешения по времени
claude_deep.py 27 КБ распределения, сессии, перфокарта, рост контекста
codex_agg.py 19 КБ Codex, первая версия (максимум по файлу), оставлена для сверки
codex_agg_chains.py 32 КБ Codex методом chain-split, три метода сразу
обработка
build_dashboard.py 111 КБ сборка dashboard.html без внешних зависимостей
cost_model.py 24 КБ модель стоимости, классы доказательности, combined.json
refresh.py 41 КБ точка входа: измеряет, считает, собирает, проверяет
report_blocks_ext.py 45 КБ дополнительные AUTO-блоки для книги данных
report_gen.py 34 КБ движок AUTO-блоков, проверки целостности, защита от усушки
отчёты
CURRENT.md 2 КБ актуальные цифры, генерируется целиком
DEEP_REPORT.md 95 КБ детальный разбор по моделям и паттернам
FULL_REPORT.md 46 КБ книга данных: 7 частей, все таблицы генерируются
README.md 29 КБ описание инструментария и методики
SUMMARY.md 55 КБ сводка: проза авторская, числа в AUTO-блоках
dashboard.html 336 КБ интерактивный дашборд, самодостаточный
данные
antigravity_totals.json 1.81 МБ выкладка Antigravity
claude_cost_deep.json 1 КБ стоимость Claude Code с разбором по моделям и дням
claude_deep.json 87 КБ распределения и производные метрики Claude Code
claude_totals.json 1.65 МБ выкладка Claude Code по времени, моделям, сессиям
codex_chains_totals.json 2 КБ выкладка Codex методом chain-split
codex_cost.json 521 Б стоимость Codex по обеим границам
codex_totals.json 1 КБ выкладка Codex первой версией
combined.json 16 КБ сводные данные, которые читает дашборд
reconciliation.json 5 КБ сведение слагаемых Codex, три метода против друг друга
snapshots.jsonl 48 КБ история запусков, источник дельт
прочее
.gitignore 746 Б исключения: секреты, кэши, временные файлы проверки
GEMINI_PROMPT_HARD.md 16 КБ задание для второй машины, с блокирующей проверкой хоста
GEMINI_TASK_SHINOBU.md 18 КБ первая версия того же задания
GEMINI_TASK_SHINOBU_ADDENDUM.md 7 КБ дополнение к заданию после первого отчёта
LICENSE 3 КБ MIT
_config.yml 633 Б конфигурация GitHub Pages, на работу инструмента не влияет
без описания
.nojekyll 0 Б — описание не задано в FILE_DOC
CODE_OF_CONDUCT.md 864 Б — описание не задано в FILE_DOC
CONTRIBUTING.md 714 Б — описание не задано в FILE_DOC
HANDOFF_COLLEAGUE_AGENT.md 5 КБ — описание не задано в FILE_DOC
SECURITY.md 727 Б — описание не задано в FILE_DOC
autoupdate.py 36 КБ — описание не задано в FILE_DOC
build_reconciliation.py 10 КБ — описание не задано в FILE_DOC
cline_agg.py 10 КБ — описание не задано в FILE_DOC
cline_deep.json 249 КБ — описание не задано в FILE_DOC
cline_totals.json 2 КБ — описание не задано в FILE_DOC
external_measurements.json 11 КБ — описание не задано в FILE_DOC
favicon.svg 253 Б — описание не задано в FILE_DOC
index.html 771 КБ — описание не задано в FILE_DOC
robots.txt 87 Б — описание не задано в FILE_DOC
scan_manifest.json 621 КБ — описание не задано в FILE_DOC
scan_manifest_codex.json 413 Б — описание не задано в FILE_DOC
site.webmanifest 311 Б — описание не задано в FILE_DOC
sitemap.xml 289 Б — описание не задано в FILE_DOC
tokenaudit_config.py 43 КБ — описание не задано в FILE_DOC
tokenaudit_rates.py 17 КБ — описание не задано в FILE_DOC
tokenaudit_scan.py 9 КБ — описание не задано в FILE_DOC

Что именно измеряется

Claude Code. ~/.claude/projects/**/*.jsonl, записи type == "assistant" с полем message.usage. Четыре величины: некэшированный ввод, запись кэша, чтение кэша, вывод. Разрешения: сутки, час, 10 минут, минута, плюс профили по часам суток и дням недели.

Codex. rollout-*.jsonl, события event_msg / token_count, поле info.total_token_usage — накопительный счётчик. Пять величин, включая reasoning_output_tokens.

Antigravity. Транскрипты brain/<uuid>/.system_generated/logs/transcript*.jsonl. Токенов там нет — считаются ходы модели, вызовы инструментов, символы и упоры в квоту. Это прокси-метрика, и она систематически занижает расход.

Шесть ловушек, на которых легко получить неверную цифру

Все встретились в этой работе; четыре — уже совершённые ошибки.

  1. Стриминговые снимки Claude Code. Один message.id пишется несколько раз по мере роста ответа. Наивная сумма завышает примерно вдвое. Правильно: дедупликация по message.id со взятием максимума. Первая запись тоже не подходит — там незавершённый ответ.

  2. Накопительный счётчик Codex. Сумма всех событий завышает в десятки раз. Правильно: максимум по файлу, а для временного ряда — разница соседних значений.

  3. Несколько цепочек счётчика в одном файле. Параллельные потоки пишут в один роллаут, признака потока в записи нет. Максимум теряет вторую цепочку, сумма приростов фабрикует ложные инкременты. Правильно — chain-split: разнести события по цепочкам и сложить их финалы.

  4. Дедупликация сессий между корнями. Ключ должен быть строго session_id. Откат на имя файла прячет дубликаты — так я завысил Codex на 0.645%.

  5. Ложные отрицательные. Пять случаев за один аудит, все одной природы: инструмент не мог показать то, о чём его спрашивали, а пустой ответ принимался за отсутствие явления. ripgrep без --hidden не заходит в .system_generated; в формате роллаута вообще нет поля аккаунта; cp1251 искажает строку поиска; неразрывный пробел не равен пробелу; &nbsp; в разметке не равен пробелу в тексте. Правило: прежде чем записать «этого нет», проверь контрольным примером, что инструмент способен это увидеть. Поэтому верификатор сравнивает извлечённый текст, а не разметку.

  6. Сумма «финалов по сессиям» по пересекающимся корням даёт двойной счёт. Ровно это превратило 108.3 млрд в 138.9 млрд.

Тарифы

Anthropic сверены с живой документацией 2026-07-27: claude-opus-5 и claude-opus-4-8 $5/$25 за млн, claude-fable-5 $10/$50, claude-sonnet-5 $2/$10 (вводный тариф до 2026-08-31). Кэш-чтение 0.1× базового ввода, запись кэша 1.25× при TTL 5 минут и 2× при TTL 1 час.

OpenAI из каталога прежнего аудита (developers.openai.com, проверен 2026-06-06): gpt-5.5 $5 / $0.5 кэш / $30, gpt-5.4 $2.5 / $0.25 / $15.

Все суммы — эквивалент по публичному прайсу, а не траты. Фактический денежный расход за всё время, со слов владельца, около 1000 рублей.

Целостность

проверка результат
сумма по моделям против итога СХОДИТСЯ
ответов: агрегат против распределений СХОДИТСЯ
окно сканирования файлов 3 906, байт 2 259 420 950
окно: агрегат против распределений СХОДИТСЯ
основной + субагенты против суммы по моделям СХОДИТСЯ
сумма по дням против суммы по моделям СХОДИТСЯ
разрешение «час»: 300 интервалов, сумма СХОДИТСЯ
разрешение «10 минут»: 1 235 интервалов, сумма СХОДИТСЯ
разрешение «минута»: 7 800 интервалов, сумма СХОДИТСЯ
Codex: chain-split против минутных приростов СХОДИТСЯ

Итог: все проверки пройдены

История запусков

срез токенов $ сессий прирост
2026-07-29 17:17:52 26 154 238 067 $22 784,46 182 +16 120 218
2026-07-29 18:17:46 26 159 281 786 $22 806,82 182 +5 043 719
2026-07-29 22:17:57 26 184 448 097 $22 867,95 182 +25 166 311
2026-07-29 23:01:07 26 195 047 485 $22 887,60 183 +10 599 388
2026-07-29 23:17:31 26 201 739 803 $22 899,18 183 +6 692 318
2026-07-30 00:21:28 26 249 060 423 $22 969,67 183 +47 320 620
2026-07-30 01:19:14 26 297 805 570 $23 045,51 185 +48 745 147
2026-07-30 02:19:45 26 408 785 783 $23 202,86 185 +110 980 213
2026-07-30 02:47:17 26 455 065 226 $23 269,04 186 +46 279 443
2026-08-01 08:32:56 26 723 030 291 $23 905,81 186 +267 965 065
2026-08-01 08:33:19 26 723 030 291 $23 905,81 186 +267 965 065
2026-08-01 08:34:51 26 723 030 291 $23 905,81 186

Всего запусков в истории: 66.

Чего инструмент не делает

  • Не обращается ни к каким API и ничего не отправляет наружу — только чтение локальных файлов.
  • Не пишет в источники: SQLite открывается mode=ro&immutable=1.
  • Не сохраняет ключи, токены и секреты ни в один артефакт.
  • Не измеряет расход других людей, работавших через те же учётные данные с других машин: их логи физически находятся не здесь.
  • Не измеряет токены Antigravity, потому что их не существует в локальных данных.

📜 License & Community Standards

Distributed under the True People's License v2.0 / Open License — Authors: Jirnyak & Adolf Petushkov (2026). Free for all maintainers, developers, and AI research. Zero paywalls.

🏗️ Offline Token Analytics Flow

graph TD
    Logs[📄 Claude / OpenAI Logs] --> Parser[🔍 Python Log Parser]
    Parser --> Calc[🧮 Cost & Token Calculator]
    Calc --> JSON[📊 Structured Token Database]
    JSON --> Web[🌐 Offline Glassmorphism Dashboard]
Loading

⚡ Performance Metrics

Metric Measured Value Status
Log Parsing Speed > 50,000 lines / sec 🚀 FAST
Network Requests Exactly 0 (100% Offline) 🛡️ PRIVATE
Memory Usage < 18 MB RAM ⚡ LIGHTWEIGHT

About

Token Audit — Offline AI Agent Token Consumption Analyzer & Interactive Comic Analytics

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages