Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Экономия

PRECC отслеживает расчётную экономию токенов от каждого перехвата. Используйте precc savings, чтобы увидеть, сколько потерь PRECC предотвратил.

Краткая сводка

$ precc savings
Session Token Savings
=====================
Total estimated savings: <span data-stat="session_tokens_saved">8,741</span> tokens

Breakdown:
  Pillar 1 (cd prepends):         <span data-stat="session_p1_tokens">3,204</span> tokens  (<span data-stat="session_p1_count">6</span> corrections)
  Pillar 4 (skill activations):   <span data-stat="session_p4_tokens">1,560</span> tokens  (<span data-stat="session_p4_count">4</span> activations)
  RTK rewrites:                   <span data-stat="session_rtk_tokens">2,749</span> tokens  (<span data-stat="session_rtk_count">11</span> rewrites)
  Lean-ctx wraps:                 <span data-stat="session_lean_tokens">1,228</span> tokens  (<span data-stat="session_lean_count">2</span> wraps)

Подробная разбивка (Pro)

$ precc savings --all
Session Token Savings (Detailed)
================================
Total estimated savings: <span data-stat="session_tokens_saved">8,741</span> tokens

Command-by-command:
  #  Time   Command                          Saving   Source
  1  09:12  cargo build                      534 tk   cd prepend (cargo-wrong-dir)
  2  09:14  cargo test                       534 tk   cd prepend (cargo-wrong-dir)
  3  09:15  git status                       412 tk   cd prepend (git-wrong-dir)
  4  09:18  npm install                      824 tk   cd prepend (npm-wrong-dir)
  5  09:22  find . -name "*.rs"              387 tk   RTK rewrite (output truncation)
  6  09:25  cat src/main.rs                  249 tk   RTK rewrite (lean-ctx wrap)
  7  09:31  cargo clippy                     534 tk   cd prepend (cargo-wrong-dir)
  ...

Pillar Breakdown:
  Pillar 1 (context resolution):   <span data-stat="session_p1_tokens">3,204</span> tokens  <span data-stat="session_p1_pct">36.6</span>%
  Pillar 2 (GDB debugging):            0 tokens   0.0%
  Pillar 3 (mined preventions):        0 tokens   0.0%
  Pillar 4 (automation skills):    <span data-stat="session_p4_tokens">1,560</span> tokens  <span data-stat="session_p4_pct">17.8</span>%
  RTK rewrites:                    <span data-stat="session_rtk_tokens">2,749</span> tokens  <span data-stat="session_rtk_pct">31.5</span>%
  Lean-ctx wraps:                  <span data-stat="session_lean_tokens">1,228</span> tokens  <span data-stat="session_lean_pct">14.1</span>%

Как оценивается экономия

Каждый тип коррекции имеет расчётную стоимость в токенах на основе того, что произошло бы без PRECC:

Тип коррекцииРасчётная экономияРассуждение
cd prepend~500 tokensВывод ошибки + рассуждения Claude + повтор
Активация навыка~400 tokensВывод ошибки + рассуждения Claude + повтор
RTK rewrite~250 tokensМногословный вывод, который Claude пришлось бы читать
Lean-ctx wrap~600 tokensСжатие содержимого больших файлов
Предотвращение изученных ошибок~500 tokensИзвестный паттерн ошибки предотвращён

Это консервативные оценки. Фактическая экономия часто выше, так как рассуждения Claude об ошибках могут быть многословными.

Накопленная экономия

Экономия сохраняется между сессиями в базе данных PRECC. Со временем вы можете отслеживать общее влияние:

$ precc savings
Session Token Savings
=====================
Total estimated savings: <span data-stat="session_tokens_saved">8,741</span> tokens

Lifetime savings: <span data-stat="total_tokens_saved">142,389</span> tokens across <span data-stat="total_sessions">47</span> sessions

Строка состояния

После установки PRECC добавляет запись statusLine в ~/.claude/settings.json, чтобы строка состояния Claude Code показывала актуальные метрики сеанса:

$0.42 spent | 1.2M in/out | 📊 last cmd: −1.2K | PRECC: 7 fixes | 5.8ms avg | this session: 320 saved over 7 cmds (~$0.05) | lifetime: 8.9K saved over 217 cmds (~$2.85)

Установите PRECC_LANG, чтобы метки отображались на вашем языке — см. главу о локализации.

Каждый сегмент:

СегментИсточникЗначениеСбрасывается при перезапуске сеанса?
$0.42 spentcost.total_cost_usdСовокупная стоимость сеанса по данным Claude CodeДа
1.2M in/outtotal_input_tokens + total_output_tokensНекэшированные входные + выходные токены за сеансДа
📊 last cmd: −1.2KИзмерение PRECC для последней команды BashРеальная измеренная экономия от повторного запуска исходной командыНет (сохраняется между сеансами)
PRECC: 7 fixesmetrics.logКоличество исправлений в этом сеансе — только количество, без ложной оценки токеновДа
5.8ms avgЗадержка хука PRECC p50Время, потраченное PRECC на обработку каждого вызова инструментаДа
bash 18% of totalpost_observations.logДоля токенов сеанса, поступивших из вывода Bash — поясняет, почему экономия PRECC естественно составляет лишь часть общей стоимости (PRECC оптимизирует только вывод Bash)Да
this session: 320 saved over 7 cmds (~$0.05).lifetime_summary.json − baselineРеальная разница за сеанс. Скрывается, когда разница равна нулю (начало сеанса)Да (базовая линия пересохраняется)
lifetime: 8.9K saved over 217 cmds (~$2.85).lifetime_summary.jsonНакопленные сэкономленные токены и повторно измеренные команды с момента первой установки PRECC, плюс оценочная стоимость в долларах США по текущей ставке за токенНет

Сегмент lifetime: размещается в конце, чтобы он был первым обрезан, если интерфейс Claude Code обрезает строку по правому краю.

Почему стоимость и число токенов не делятся

Отображаемое 1.2M in/out не является знаменателем, который дал $0.42 spent. cost.total_cost_usd от Claude Code вычисляется из полной разбивки токенов API — базовый ввод, вывод, плюс чтения кэша и создания кэша. Совокупные счётчики токенов кэша за весь сеанс не раскрываются в схеме statusline, поэтому PRECC может показать только видимую (не-кэш) часть.

В длинных сеансах с частыми перечитываниями файлов чтения кэша могут быть в 10 раз больше видимого числа токенов. Именно поэтому объединение их в отношение вводило бы в заблуждение — PRECC показывает их как независимые сегменты.

Почему PRECC не вычисляет стоимость

Число стоимости авторитетно. PRECC читает cost.total_cost_usd дословно из JSON, который Claude Code передаёт по stdin команде статуса. Это та же сумма, которую Claude Code списывает с вашего бюджета подписки/использования. Вы можете проверить её в любое время встроенной слэш-командой /cost — оба значения должны совпадать.

Что определяет стоимость

Для Claude Opus 4.6:

Token typeStandard (≤200k context)1M context tier
Input$15 / MTok$30 / MTok
Output$75 / MTok$150 / MTok
Cache write$18.75 / MTok$37.50 / MTok
Cache read$1.50 / MTok$3 / MTok

Основные факторы в длинных сеансах — это обычно выходные токены (самый дорогой тип за токен, особенно в уровне контекста 1M), повторяющиеся чтения кэша (по отдельности дешёвые, но быстро накапливающиеся за множество ходов) и создания кэша (записываемые один раз на чтение файла по тарифу ~1,25× от базовой ставки на ввод). PRECC снижает стоимость видимых токенов, сжимая вывод Bash (сегмент 📊 last cmd: показывает экономию на команду), но не может уменьшить чтения кэша файлов, которые Claude уже загрузил.

Стабильные счётчики сеанса

Сегмент «PRECC: N fixes» считает события с сохранённого начала сеанса, записываемого в ~/.local/share/precc/sessions/<session_id>.start при первом обновлении statusline каждого сеанса. Это делает счётчик монотонным — он не может уменьшиться в середине сеанса, даже если cost.total_duration_ms отсутствует при конкретном обновлении.

Автоматически обновляемый снимок за всё время

Сегмент lifetime: читает ~/.local/share/precc/.lifetime_summary.json, который перезаписывается при каждом измерении PostToolUse и при каждом вызове precc savings. Сегмент this session: читает тот же lifetime-файл, но вычитает базовое значение на сеанс, сохраняемое при первом обновлении каждого сеанса. Ручное обновление не требуется — файлы обновляются сами.

Отключение строки состояния

Если вы предпочитаете сохранить существующую строку состояния, задайте свою команду statusLine в ~/.claude/settings.json. Установщик PRECC обнаружит пользовательское значение и не будет трогать его при последующих обновлениях.

Чтобы отключить только строку 📊 PRECC для каждого взаимодействия (в additionalContext), установите PRECC_QUIET=1 в окружении оболочки.

PRECC’s three savings mechanisms each have a counterpart in the recent literature. These are related work — the ideas PRECC’s design draws on. Their reported figures are their measurements, not PRECC’s: PRECC only ever quotes numbers measured on your own machine (see “measured, not estimated”, above).

  • Output/trajectory trimming (PRECC’s diet + bash-output compression) — Reducing Cost of LLM Agents with Trajectory Reduction (AgentDiet), FSE 2026, arXiv:2509.23586. Removes redundant/expired trajectory content post-hoc; reports −39.9–59.7% input tokens. PRECC applies the same idea pre-execution and deterministically (no extra LLM call).
  • Skills as programs (PRECC’s mined + builtin rewrite skills) — Harnessing LLM Agents with Skill Programs, arXiv:2605.17734. Frames reusable agent skills as executable program functions — the same analogy behind PRECC’s command-rewrite skills (a pattern → a deterministic rewrite).
  • Context compression (PRECC’s compress + lean-ctx wrapping) — Compress the Context, Keep the Commitments: A Formal Framework for Verifiable LLM Context Compression, arXiv:2605.17304. Recent work on compressing context without losing required information — the property PRECC’s deterministic, cache-stable rewrites aim to preserve.