Базовый замер экономии Codex для 1.11
English | Русский
Команда tausik metrics tokens --host codex --json и MCP tausik_metrics(host="codex") читают локальные журналы Codex. Кэш .tausik/usage-codex.sqlite сохраняет разрешённые счётчики и идентификаторы, но не запросы и ответы. Повторный запуск читает только дописанные полные строки. Удаление кэша запускает повторное построение, не меняя исходные журналы.
Записи ответов имеют приоритет над накопительными счётчиками; складывать их нельзя. Дубли истории форков исключаются по ID ответа. История без отдельных ответов показывается отдельно, без атрибуции задаче. Проект определяется точным совпадением рабочей директории; неоднозначность подпапок и отсутствие связи с задачей остаются неизвестными. Отчёт показывает конфликты, повреждённые записи, сбросы и покрытие. Ненадёжные суммы не доказывают экономию. Отсутствие журналов не означает нулевой расход. Квота общая для аккаунта: смотрите время наблюдения и сброса, старый снимок не показывает текущий остаток.
Зафиксированный протокол сравнения
Исходная ревизия: 72862321c50a1dc47005c551d719734a1b8d31be, до оптимизаций 1.11. Дата замера: 2026-10-01. Основная связка: Codex / gpt-6-astra. В каждой паре фиксируются reasoning effort, speed mode, каталог инструментов и запрос пользователя. Неизвестная или изменившаяся настройка делает сравнение неубедительным. Добавленный сборщик не меняет запросы модели.
| Случай | Сложность | Задача | Независимая приёмка |
|---|---|---|---|
| S1 | Простая | Неверный/отсутствующий usage не становится нулём | tests/test_usage_observation.py |
| S2 | Простая | Идентичность модели сохраняется | tests/test_model_profiles.py и provenance |
| M1 | Средняя | Выбираются затронутые проверки и потребители | tests/test_gate_test_resolver.py |
| M2 | Средняя | Устаревшее доказательство проверки отклоняется | tests/test_verify_handle.py |
| C1 | Сложная | Обновление БД сохраняет данные | tests/test_migrations.py |
| C2 | Сложная | Проверка и закрытие через настоящий сервис | tests/test_verify_handle_integration.py |
На случай записываются ID и число ответов, вход/кэш/выход/reasoning отдельно, результат приёмки, замечания ревью и переделки. Цена задачи требует явного набора ответов, а не текущего slug или распределения целой сессии. Используем обычную разработку; платные параллельные прогоны не запускаются. Максимум — одна исходная и одна новая попытка на случай. Неудачные пары сохраняются, не повторяются до зелёного результата. Очистка тестов не удаляет замороженное доказательство.
Общий контракт summarize_accepted_tasks принимает только записи ответов с точной привязкой к задаче, устраняет дубли по ID ответа и берёт число повторов из attempts задачи. Сравнимый итог равен input плюс output. Cached input и reasoning output показываются как подмножества и второй раз не прибавляются. Отсутствующие счётчики оставляют задачу неизмеренной, а не превращаются в ноль.
Начальные значения шести модельных случаев не измерены, не равны нулю. Живая сверка подтверждает сбор счётчиков; парное сравнение качества и расхода остаётся условием приёмки релиза. Цель — минимум 30% меньше измеренных токенов на принятую задачу на той же модели без потери обнаружения ошибок. Это не обещание соответствующего изменения квоты или цены.
Первый снимок проекта: 98 ответов, 11 815 495 входных токенов, из них 11 389 952 кэшированных; 79 184 выходных, из них 13 510 reasoning. Из 39 файлов 27 содержали записи отдельных ответов; 1054 ответа других проектов или без атрибуции исключены. Связь с отдельными задачами неизвестна. Квота аккаунта включает остальные проекты.
Взвешивание по кредитам подписки
Исходные счётчики остаются доказательством. Проект может дополнительно задать codex_subscription_credit_rates, чтобы сравнивать принятые задачи по текущей таблице кредитов ChatGPT/Codex. TAUSIK не поставляет таблицу по умолчанию: цены и доступность меняются. Конфигурация обязана назвать source, as_of, единицу credits_per_million_tokens и ставки input, cached_input, output для префиксов моделей.
От общего входа вычитается кэшированное подмножество, затем к каждой части применяется своя ставка; общий output считается один раз, reasoning второй раз не прибавляется. Неполные счётчики, неверная таблица и неизвестная модель дают явное «неизвестно», не повреждая исходную телеметрию. Кредиты — не API-доллары, не остаток включённой квоты и не гарантированное число задач.