Skip to content

0.14.0: дедуп по requestId, измеренный потолок, statusline, context, commits - #7

Merged
Socialpranker merged 6 commits into
mainfrom
feat/dedup-context-statusline
Sep 6, 2026
Merged

Socialpranker merged 6 commits into
mainfrom
feat/dedup-context-statusline

Conversation

@Socialpranker

Copy link
Copy Markdown
Owner

Что

  • Баг: адаптер Claude Code складывал usage по строкам транскрипта, а харнесс пишет по строке на content-блок с одним и тем же usage. Замер на 40 файлах за 7 дней: 11 744 строк / 6 508 requestId = 1.8× завышение вызовов и токенов. Теперь одна реплика считается один раз (requestId, fallback message.id); синтетические строки не считаются вызовами.
  • Потолок без --hit: Claude Code сам пишет «You've hit your session limit · resets 8:30pm» — каждое такое сообщение это измеренная стена. Потолок = медиана таких окон (на живых данных: 35 отсечений). --hit по-прежнему главнее; потолок запоминается в ~/.agentburn/ceiling.json.
  • TIME TO WALL по темпу последних 30 минут; пиковая неделя, недельный потолок; пик по проектам (cwd из логов).
  • agentburn statusline — одна строка для statusLine Claude Code.
  • agentburn context — доля окна по размеру контекста, что сэкономил бы /clear на 100/150/200/300k, самые длинные сессии, по effort, цена скилла за загрузку (замер прироста контекста после одиночного вызова Skill).
  • agentburn commits — сессии джойнятся с git log репозиториев по cwd: цена коммита, медиана по репо.
  • fix: два новых рычага (порог рестарта, тяжёлые скиллы). MCP: burn_context, burn_commits.

Проверка

  • python tests/selftest.py — 245 проверок, зелёные локально (macOS, 3.14).
  • ruff check --select F,E9 чистый.
  • Живой прогон на 3.1 ГБ логов: limits, context, commits, statusline, fix — вывод в README.

Риски

  • Схема кэша поднята до 2 → первый прогон после обновления парсит всё заново.
  • Все абсолютные числа в старых карточках/README были завышены ~1.8×; отношения нет.
  • docs/index.html (браузерная симуляция) не обновлён под новые команды.

…реплики завышали вызовы и токены в 1.8×

Харнесс пишет по строке на content-блок, и в каждой лежит один и тот же
usage. Заодно адаптер перестал считать синтетические строки вызовами API,
записывает отсечения лимита («You've hit your session limit · resets …»),
размер контекста каждого вызова, effort, cwd/ветку и прирост контекста
после вызова Skill. Схема кэша → 2.
…tusline, context и commits

- limits: потолок = медиана окон, закончившихся на отсечениях, которые
  Claude Code записал сам; --hit по-прежнему главнее; потолок сохраняется
  в ~/.agentburn/ceiling.json; TIME TO WALL по темпу последних 30 минут;
  пиковая неделя и недельный потолок; пик по проектам.
- statusline: одна строка для statusLine Claude Code, читает 3 дня логов.
- context: доля окна по размеру контекста, экономия /clear на порогах,
  самые длинные сессии, по effort, цена скилла за загрузку (замер).
- commits: сессии джойнятся с git log репозиториев — цена коммита.
- fix: рычаги «рестарт на N» и «тяжёлые скиллы»; mcp: burn_context,
  burn_commits. 245 офлайн-проверок.
…олок из счётчика провайдера (WIP: без тестов и README)

- codex: ~/.codex/sessions/**/rollout-*.jsonl, usage как дельта кумулятивного
  token_count, rate_limits.used_percent → RateLimitSample → потолок в limits.
- gemini: ~/.gemini/tmp/*/chats/session-*.json, tokens per turn, cwd из projects.json.
- opencode: sqlite read-only, cost из самого агента, part → tool events.
- recommend: ссылка на hermes #12023 только для Hermes (третье место того же класса).
…«Supported agents» на шесть строк

- один пустой адаптер больше не роняет мультиагентный отчёт: load_all ловит по адаптеру, печатает warning, заголовок считает только загруженные
- doctor: агенты без локальных цен (claude-code, codex, gemini) не показывают ложный «unpriced/LOWER BOUND»
- SKILL.md: ceiling_source=provider для Codex, tokens-only для Gemini/opencode
…ется как неизмеренный; 30-дневное показание больше не становится недельным потолком

Данные: 5h-показания есть только 10–12 июля (потолок 3.6M стабилен во всех диапазонах used%), с 13-го Codex пишет только окно 10080 и пик 14 июля (12.5M) лёг вне покрытия — «325%» было сравнением периодов, не перебором.
@Socialpranker
Socialpranker merged commit 9759cf1 into main Sep 6, 2026
6 checks passed
@Socialpranker
Socialpranker deleted the feat/dedup-context-statusline branch September 6, 2026 06:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant