greedy-token — benchmark

greedy-token-workshop · M2 Max · медиана 3 прогонов · «без greedy» = measured baseline ~17,043 tok overhead + ~25.7s

Модели и ставки

Матрица: greedy vs без greedy

«С greedy, tok» = agent overhead ~17,043 (измерен calibrate: rules + system + schemas + reply) + payload исполнителя — greedy-вызов не бесплатен, ход агента платится. Wall включает старт CLI (~200ms). Жёлтые строки — честные пределы: paraphrase → fallback, rag-синоним → пусто, refactoring → полный чат ($0 saved). Стоимость по input-ставке.

Большие объёмы — где greedy реально окупается

oh = agent overhead воркспейса: workshop 17,043 / monorepo ~37,450. Наивный pull — измеренный объём (байты/4), который агент прочитал бы: 1.2MB JSONL, 4.9MB usage-лог, guide.md, git log. Красная строка — после фикса --compact: 7.2KB ≈ 1.8k tok vs naive 0.9k — листинг всё ещё лёгкий минус; «что изменилось» выигрывает. run CLI тоже применяет args_from_prompt (F4 закрыт): plan_run приклеивает derived-argv к команде — compact доезжает и по hook/intercept, и по run --execute.

Живые прогоны — свежие субагенты (2026-10-02)

12 прогонов свежими субагентами (чистый контекст на каждый). «Без greedy» = 17,043 + реально прочитанные байты/4 (subagent отчитался списком файлов — размеры посчитаны снаружи, не на доверии). «С greedy» = 17,043 + stdout исполнителя/4 (tee → /tmp/gt-live-*.out). IDE usage субагент не видит — overhead остаётся калибровкой, контент измерен. Красные строки — честный минус: на 100B-фикстурах обвязка роута (149–600B) дороже самого файла; пара B дала ещё и неверный ответ (rg построил «email|lab/users.json» по всему репо, строки из users.json не вернул — F5 в draft). E: экономия — поведенческий артефакт (naive-агент сам прочитал 4 файла), не свойство роута.

Итог

Как читать Три колонки токенов: «без greedy» (полный наивный ход) vs «с greedy» (тот же ход агента + payload исполнителя) → Saved = их разница. Футерное «saved ~17k» верно только при hook-режиме intercept — когда LLM-ход не случается вовсе; в advisory/MCP overhead платится. Футер сам печатает оба числа: «saved ~N (if intercept; turn-shared otherwise ~M)», а события usage.jsonl несут поле hook_mode. $ — по input-ставке (saved = непрочитанный контекст; output <5%). После живых прогонов заменить base/overhead фактом из IDE usage.