openai
Промпт в 16 символов весит 0,3% запроса Codex
Promtime
openaiЗапрос, который Codex CLI отправил модели в ответ на промпт из 16 символов, весил 42 980 байт, а сам промпт занял в нём около 25 токенов из примерно 9 435, то есть 0,3%. Замеры опубликовал 0xkato, тесты шли на Codex CLI 0.145.0 с моделью gpt-5.6-sol.
Коротко
- Автор перенаправил Codex на локальный HTTP-сервер, который сохранял каждый запрос, вырезал чувствительные заголовки и отдавал фиксированный фальшивый ответ, так что внешняя модель ни разу не вызывалась.
- Три элемента дали 7 696 из 9 435 токенов по локальной оценке o200k_base: developer-запись с четырьмя описаниями инструментов (16 741 символ), основные инструкции Codex (17 730 символов) и промпт пользователя.
- Содержимое файлов, вывод команд и описания инструментов MCP попадают в запрос только после конкретного действия, и правила .gitignore не мешают явному чтению файла и его попаданию в историю.
Для команд, которые считают расходы на агентские сессии, полезен сам масштаб постоянной части: клиент задаёт почти десять тысяч токенов ещё до первого действия, и повлиять на это со стороны пользователя почти нечем. Переменная часть растёт с каждым чтением файла и каждым запуском команды, поэтому граница утечки данных, судя по замерам, проходит по действиям агента, а правила игнорирования файлов на неё не влияют.
Три элемента заняли 7 696 из 9 435 токенов первого запроса
Автор эксперимента запустил Codex в пустом временном Git-репозитории, отключил проектные инструкции и указал CODEX_HOME на пустой каталог. Запрос всё равно описывал пять встроенных системных скиллов, поэтому это база изолированного окружения, а не минимально возможный запрос: 42 980 байт и около 9 435 токенов по локальной оценке.
На три элемента пришлось 7 696 из этих токенов: developer-запись additional_tools объёмом 16 741 символ (3 942 токена), основное developer-сообщение с инструкциями Codex на 17 730 символов (3 729 токенов) и промпт «Reply with pong.» длиной 16 символов (25 токенов). Обвязка клиента включает инструкции, определения инструментов, разрешения, метаданные скиллов и описание окружения.
Четыре верхнеуровневые записи об инструментах (exec, wait, request_user_input и пространство collaboration) покрывали больше четырёх действий: внутри collaboration шесть подынструментов, а exec описывал запуск команд, применение патчей, просмотр изображений и обновление плана. В этом прогоне Codex положил описания инструментов и базовые инструкции в массив input вместо верхнеуровневых полей instructions и tools.
Тысяча синтетических маркеров в AGENTS.md добавила к запросу 11 030 токенов
Цепочка проектных инструкций строится от корня репозитория до каталога запуска: старт из корня отправил 100 корневых маркеров, старт из дочернего каталога все 200, а команда ls child цепочку не расширила. Файл с 1 000 синтетических маркеров увеличил запрос на 24 197 байт и 11 030 токенов, но такие маркеры занимают по 11 токенов каждый и стоимость обычного текста не отражают.
Скиллы репозитория из .agents/skills/ сначала передают только имя, описание и путь: один скилл добавил 481 байт и около 125 токенов, десять скиллов 4 810 байт, тела SKILL.md в первых запросах отсутствовали. Описания инструментов MCP тоже отложены: exec вместо них получил общую инструкцию по обнаружению, а отключение сервера возвращало запрос к базовому уровню.
После того как exec напечатал отложенные записи, содержимое описаний вошло в историю: два сервера с семью инструментами добавили 15 970 байт и около 4 210 токенов, один сервер с одним разрешённым инструментом 2 288 байт и 578 токенов. Дельты считались относительно первого запроса в том же трейсе.
Компакция превратила историю в запрос на 21 408 токенов
В сценарии с исправлением бага в приоритете конфигурации запрос вырос с 44 189 байт и 9 815 токенов до 52 389 байт и 11 889 токенов за девять шагов: поиск, чтения файлов, прогоны тестов, упавший регрессионный тест, патч и финальный diff остались доступны следующим ходам.
Ни один из пяти подготовленных файлов не попал в первый запрос, а листинг rg добавил только имена. После явных чтений в запросы вошли обычный файл, игнорируемый файл и фальшивый .env, а чтение игнорируемого лога на 20 000 строк подняло тело до 87 561 байта и около 20 350 токенов.
При работе с кастомным провайдером Codex сам собирает запрос на суммаризацию: в трейсе с порогом 12 000 токенов и окном 20 000 первый запрос весил 42 030 байт и около 9 378 токенов, запрос компакции 68 375 байт и 21 408 токенов с пустым списком инструментов, а возобновлённый 42 646 байт и 9 500 токенов. Исходный вызов инструмента и его вывод заменил синтетический пересказ, так что после компакции деталь может сохраниться только через сводку.
Чего замеры не показывают Токенные оценки получены локальным энкодером o200k_base и не равны учёту API или биллингу, точны только размеры захваченных тел запросов. Эксперимент не фиксировал преобразования на стороне провайдера, попадания в кэш и внутреннее устройство модели, а ответы во всех многошаговых трейсах были фиксированными заглушками, поэтому реальные сессии несут на ход больше. Автор выложил набор артефактов с рекордером, санитизированными телами запросов и анализом.
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
Из Google мы используем только имя и аватар. Почту не сохраняем.
