Skip to Content
Руководство для пользователейВозможностиСтоимость резидентного контекста

Стоимость резидентного контекста

Каждый запрос, отправляемый сессией, несёт один и тот же префикс до начала вашего разговора: системный промпт, схемы всех объявленных инструментов, ваши контекстные файлы (QWEN.md) и список навыков. Вы платите за этот префикс на каждом ходу, включая ходы, которые просто отвечают на вопрос. Эта страница посвящена измерению и сокращению префикса.

Кэширование токенов снижает цену префикса. Эта страница уменьшает сам префикс. Эти подходы дополняют друг друга — меньший префикс дешевле и в кэше.

Посмотрите, за что вы платите

/context detail

/context выводит разбивку по категориям; detail добавляет строки по каждому элементу — каждый встроенный инструмент, каждый MCP-инструмент, каждый контекстный файл, каждый навык в списке — чтобы вы могли увидеть, какая именно запись самая дорогая. Читайте его на первом ходу сессии, когда разговор ещё пуст и всё, что вы видите, — это префикс.

Категории — это то, что сообщает /context, плюс две служебные строки: startupContext (блок окружения, отправляемый как первый ход пользователя) и явный остаток для всего, что категории не атрибутировали, чтобы части всегда складывались в итог.

Используйте стоимость простоя, а не процент окна

Процент контекстного окна — это не целевой показатель, потому что знаменатель произволен. Одна и та же конфигурация читается как 6,5% для модели с контекстом 1M и 37% для модели 128k — одинаковый текст, одинаковая стоимость, совершенно разные числа. Вместо этого используйте:

Стоимость простоя — входные токены сессии, которая задаёт один вопрос и не вызывает ни одного инструмента.

Она не зависит от модели и окна, и её нельзя улучшить, переместив текст из схемы инструмента в контекстный файл. Второе полезное измерение — сколько ходов нужно, чтобы разговор перерос префикс: префикс, для амортизации которого нужно 20 ходов, никогда не амортизируется в сессии из 5 ходов.

Рычаги, в порядке эффективности

1. Отключите неиспользуемые возможности

Каждая возможность (capability), регистрирующая инструмент, платит за схему этого инструмента при каждом запросе. Самые крупные встроенные записи принадлежат опциональным возможностям, поэтому развёртывание, не использующее рабочие цепочки, цели, запланированные задачи или инструменты ревью, сэкономит больше от отключения этих возможностей, чем от любого редактирования промпта. Это также убирает инструмент у субагентов, чего следующий рычаг не всегда делает.

2. Оставьте в eager-поверхности только то, что реально используете

tools.eager — это allowlist встроенных инструментов, чьи схемы остаются в начальном запросе. Всё остальное становится отложенным (deferred): по-прежнему зарегистрировано, по-прежнему видно в /tools, по-прежнему вызываемо — модель загружает это через tool_search, когда выясняется, что инструмент нужен.

{ "tools": { "eager": [ "read_file", "write_file", "edit", "glob", "grep_search", "run_shell_command", "skill", ], }, }

Четыре вещи, которые нужно знать перед использованием:

  • Это не отключение. Пониженный инструмент остаётся достижимым. Если вы хотели убрать инструмент, используйте правило permissions.deny на весь инструмент или tools.disabled.
  • Некоторые инструменты исключены и сохраняют обычное поведение загрузки независимо от списка: tool_search, structured_output, инструменты жизненного цикла plan-режима (enter_plan_mode, exit_plan_mode, ask_user_question), task_stop, MCP-инструменты (mcp__*) и инструменты Computer Use (computer_use__*). task_stop и семейство Computer Use и так загружаются по требованию, так что их ограничение ничего не сэкономит; MCP-инструменты управляются через tools.toolSearch.* и фильтры includeTools / excludeTools на сервер, а единственный способ убрать первые три — permissions.deny.
  • permissions.allow ничего не экономит. Это чистое автоодобрение: оно никогда не понижает, не скрывает и не удаляет инструмент. Режимы одобрения тоже.
  • Нужно, чтобы tool_search оставался включён. Если ToolSearch не зарегистрирован — tools.toolSearch.enabled: false, правило deny на tool_search или автоматическое отключение для моделей DeepSeek — allowlist всё равно отзывает схемы, но загрузить их обратно нечему, и пониженные инструменты оказываются недоступны на всю сессию.

tools.visible — это лазейка для одного инструмента, который вы хотите объявить заранее, хотя по умолчанию он отложенный.

3. Перенесите сценарные рекомендации из контекстных файлов в навыки

Контекстный файл подклеивается в каждый запрос каждой сессии, к которой он применим, без фильтрации по релевантности. Навык указывается только именем и описанием — в одном измеренном примере 84 навыка в среднем занимали около 55 токенов каждый — и загружает своё тело при вызове, а навык с фильтром по paths: даже не указывается в списке, пока не затронут подходящий файл.

Оставьте в контекстном файле только то, что всегда истинно — идентичность, словарь, жёсткое ограничение — а «когда делаете X, делайте Y» поместите в навык или правило с фильтром paths:. /context detail называет каждый контекстный файл, а для файла расширения указывает расширение, которому он принадлежит.

4. Системный промпт — в последнюю очередь

Базовый промпт уже самая маленькая из резидентных категорий, и примерно треть — это текст безопасности и разрешений, который нельзя редактировать. Он также теперь описывает только те инструменты, которые сессия реально объявила, так что сокращение поверхности инструментов немного уменьшает его бесплатно. Полная замена через --system-prompt возможна и является самым рискованным изменением на этой странице; если делаете это, сравнивайте с вышестоящим промптом при каждом обновлении.

Ловушки

  • Субагенты тоже получают отложенные инструменты. Субагент, не объявляющий явный список инструментов, получает схемы всех зарегистрированных инструментов, включая отложенные, и не проходит через ToolSearch. tools.eager и permissions.deny — единственные рычаги, которые до него доходят; порог предзагрузки — нет.
  • Фоновому агенту памяти нужно шесть инструментов (read_file, grep_search, glob, run_shell_command, write_file, edit). Отказ одного деградирует его работу без ошибки.
  • Токены могут переместиться, а не исчезнуть. Уберите grep_search и glob, и модель может обратиться к grep и find через оболочку, чей вывод попадёт в разговор. Новый вывод добавляет входные токены при первой отправке; неизменная история с ним может попасть в кэш префикса провайдера при последующих запросах. Оценивайте изменение по общим входным токенам на задачу, кэшированным и некэшированным входам от провайдера и реальному счёту, а не только по префиксу.
  • Возобновлённые сессии повторно отправляют то, что нужно. Пониженный инструмент, появившийся в истории возобновлённой сессии, автоматически получает свою схему обратно; отклонённый инструмент — нет.
  • Отложенный инструмент, раскрытый в середине сессии, инвалидирует кэш префикса. Объявления функций находятся в самом начале префикса, поэтому одно раскрытие переписывает его, и весь промпт пересчитывается для этого хода. Предзагрузка отложенного набора (tools.toolSearch.threshold) позволяет этого избежать ценой переноски этих схем на каждом ходу; threshold: 0 выигрывает только если сессия реально никогда в них не нуждается.
  • Модели с кэшированием префикса инвертируют компромисс. Для моделей, чья скидка зависит от стабильного префикса, сохранение префикса идентичным стоит больше, чем его уменьшение; модели DeepSeek автоматически отключают ToolSearch по этой причине.
  • Области настроек протекают. Настройки применяются к каждому клиенту, который их читает (CLI, Web Shell, serve), поэтому поверхность инструментов для конкретного развёртывания нуждается в собственной области настроек.

Проверьте экономию

  1. Запишите стоимость простоя до изменения: свежая сессия, один простой вопрос, /context на первом ходу.
  2. Применяйте по одному рычагу за раз и повторяйте, перезапуская сессию — большинство этих настроек читаются при старте.
  3. Убедитесь, что возможность (capability) сохранилась, на собственном наборе задач: частота успешных вызовов инструментов, как часто приходится вызывать tool_search, и результаты задач. Пониженный инструмент, до которого модель не догадывается обратиться, не падает с ошибкой; он просто перестаёт использоваться.
  4. Смотрите на счёт, а не только на префикс — см. ловушку о токенах, переместившихся в разговор.

См. также

  • Кэширование токенов — что кэширование делает с ценой того, что осталось.
  • Правила — контекст с условием paths:, включая то, что может внести расширение.
  • Навыки — прогрессивное раскрытие и фильтрация по paths:.
  • Справочник настроек — точная семантика tools.eager, tools.visible, tools.disabled, tools.toolSearch.*, permissions.deny.
Last updated on