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

Сводки использования инструментов

Qwen Code может генерировать короткую метку в стиле заголовка git-коммита после завершения каждого пакета инструментов, кратко описывая результат его выполнения. Метка отображается в транскрипте inline и заменяет стандартный заголовок Tool × N в компактном режиме.

Это улучшение UX для параллельных вызовов инструментов: когда модель одновременно запускает несколько вызовов Read + Grep + Bash, сводка сразу показывает цель выполнения, избавляя от необходимости просматривать весь список инструментов.

Функция включена по умолчанию и работает в фоновом режиме. Для её работы требуется настроенная быстрая модель.

Как это выглядит

Полный режим (по умолчанию)

Сводка отображается в виде приглушённой строки-бейджа сразу под группой инструментов:

╭──────────────────────────────────────────────╮ │ ✓ ReadFile a.txt │ │ ✓ ReadFile b.txt │ │ ✓ ReadFile c.txt │ │ ✓ ReadFile d.txt │ ╰──────────────────────────────────────────────╯ ● Read 4 text files

Компактный режим (Ctrl+O или ui.compactMode: true)

Метка заменяет стандартный заголовок Tool × N в компактной однострочной записи:

╭──────────────────────────────────────────────╮ │✓ Read txt files · 4 tools │ │Press Ctrl+O to show full tool output │ ╰──────────────────────────────────────────────╯

Отдельные вызовы инструментов по-прежнему доступны одним нажатием клавиши (Ctrl+O для переключения в полный режим).

Как это работает

После завершения пакета инструментов Qwen Code отправляет запрос в режиме fire-and-forget к настроенной быстрой модели, передавая:

  • Имена инструментов, обрезанные аргументы и обрезанные результаты (каждое поле ограничено 300 символами).
  • Последний текстовый вывод ассистента (первые 200 символов) в качестве префикса намерения.
  • Системный промпт, предписывающий модели вернуть метку в прошедшем времени длиной до 30 символов в стиле заголовка git-коммита.

Запрос выполняется параллельно со стримингом API следующего хода, поэтому его задержка ~1 с скрывается за ответом основной модели. После получения метки она добавляется в транскрипт как запись tool_use_summary.

Примеры меток: Searched in auth/, Fixed NPE in UserService, Created signup endpoint, Read config.json, Ran failing tests.

Когда появляется сводка

Сводка генерируется, если выполняются все следующие условия:

  • experimental.emitToolUseSummaries имеет значение true (по умолчанию).
  • Настроена fastModel (через настройки или /model --fast).
  • В пакете успешно выполнен хотя бы один инструмент.
  • Ход не был прерван до завершения работы инструментов.
  • Быстрая модель вернула непустой ответ без ошибок.

Вызовы инструментов субагентами не запускают генерацию сводок — обрабатываются только пакеты инструментов основной сессии.

Когда сводка не появляется

Сводка молча пропускается (без ошибок и изменений в UI), если:

  • Быстрая модель не настроена.
  • Запрос к быстрой модели завершился ошибкой, таймаутом или вернул пустой результат.
  • Модель вернула строку, явно похожую на сообщение об ошибке (например, Error: ..., I cannot ...) — такие ответы фильтруются клиентом, чтобы UI не показывал некорректные метки.
  • Ход был прерван (Ctrl+C) до завершения работы модели.

Во всех этих случаях группа инструментов отображается в стандартном виде.

Быстрая модель

Метка генерируется с помощью быстрой модели — той же, что используется для подсказок промптов и спекулятивного выполнения. Настроить её можно следующим образом:

Через команду

/model --fast qwen3-coder-flash

Через settings.json

{ "fastModel": "qwen3-coder-flash" }

Если быстрая модель не настроена, генерация сводок полностью пропускается — функция не работает, пока вы её не настроите.

Настройка

Эти параметры можно настроить в settings.json:

ПараметрТипПо умолчаниюОписание
experimental.emitToolUseSummariesbooleantrueГлавный переключатель генерации сводок. Отключите, чтобы запретить дополнительный запрос к быстрой модели.
fastModelstring""Быстрая модель для генерации сводок (используется совместно с подсказками промптов). Обязательный параметр; не работает, если пустой.

Переопределение через переменные окружения

Переменная QWEN_CODE_EMIT_TOOL_USE_SUMMARIES переопределяет параметр experimental.emitToolUseSummaries для текущей сессии:

  • QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 или =false — принудительно отключить.
  • QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=1 или =true — принудительно включить.
  • Не задана — используется значение из experimental.emitToolUseSummaries.

Пример

{ "fastModel": "qwen3-coder-flash", "experimental": { "emitToolUseSummaries": true } }

Область применения и жизненный цикл

Три момента, которые часто вызывают вопросы при первом знакомстве с функцией:

  1. Одна генерация на пакет, общая для обоих режимов отображения. Запрос к быстрой модели выполняется ровно один раз в handleCompletedTools при завершении пакета инструментов. Переключение Ctrl+O после этого не запускает новый запрос — оба режима читают одну и ту же запись истории tool_use_summary, сохранённую при первом вызове. Вы можете свободно включать и выключать компактный режим без дополнительных затрат.

  2. Нет обратного заполнения при переключении или возобновлении сессии. tool_group, завершившийся до включения функции (или до изменения настройки, или в возобновлённой сессии — ChatRecordingService не сохраняет записи сводок), никогда не получит метку. Отсутствует этап «сканирования существующей истории». Если вы включите настройку в середине сессии, метки появятся только у будущих пакетов; старые группы останутся в стандартном виде без индикации отсутствия метки.

  3. Только пакеты основного агента. Триггер находится в цикле ходов основной сессии (useGeminiStream), поэтому:

    • ✅ Вызовы Shell, MCP, файловые операции и сам вызов инструмента Task / субагента (в том виде, в котором он появляется в основном пакете) получают сводку.
    • Внутренние пакеты инструментов субагента (выполняемые через packages/core/src/agents/runtime/) не суммируются.

    Внешний пакет, содержащий инструмент Task, всё равно получит метку, но быстрая модель видит только вызов субагента и его агрегированный вывод, а не отдельные вызовы внутри субагента. Ожидайте меток вроде Ran research-agent или Delegated file search, а не Searched 14 files. Это сделано намеренно — суммирование внутренней работы субагентов многократно увеличило бы затраты на быструю модель и вывело бы в UI шум, который там не нужен.

Рекомендуемая комбинация: включите компактный режим

Для пакетов из 3+ параллельных вызовов инструментов сочетание этой функции с ui.compactMode: true даёт наиболее чистый транскрипт. Компактный вид сворачивает весь пакет в одну строку с меткой (✓ Read txt files · 4 tools) вместо отображения каждой строки инструмента и последующей сводки. Детали по-прежнему доступны одним нажатием Ctrl+O.

{ "fastModel": "qwen3-coder-flash", "ui": { "compactMode": true }, "experimental": { "emitToolUseSummaries": true } }

В полном режиме (по умолчанию) сводка отображается как завершающая строка ● <label> под группой инструментов — это полезно для больших или разнородных пакетов, но для небольших однотипных пакетов (например, Read × 3) метка может выглядеть как повторение видимых строк. Если это соответствует вашему обычному workflow, либо включите компактный режим, как описано выше, либо полностью отключите сводки через experimental.emitToolUseSummaries: false.

Мониторинг

Использование модели для сводок отображается в выводе /stats в разделе общих токенов быстрой модели с prompt_id tool_use_summary_generation, что позволяет отличить его от подсказок промптов и других фоновых задач.

Поток данных и конфиденциальность

Запрос сводки отправляет имя каждого успешно выполненного инструмента, обрезанные args и обрезанный результат (каждое поле ограничено 300 символами) в быструю модель, а также первые 200 символов последнего текста ассистента в качестве префикса намерения.

Если быстрая модель настроена на того же провайдера/авторизацию, что и модель основной сессии, данные передаются в рамках уже используемого контура — область доверия не меняется. Если вы настроили быструю модель от другого провайдера, входные и выходные данные инструментов (включая содержимое файлов, прочитанных через read_file, вывод команд из shell или значения, полученные через MCP-инструменты) будут отправлены этому провайдеру в составе промпта для суммирования. Это расширяет область обмена данными по сравнению с использованием только основной сессии.

Если это важно для вашего workflow, есть два корректных варианта:

  • Настройте fastModel на модель того же провайдера, что и основная сессия, чтобы запрос сводки не пересекал новые границы авторизации/данных.
  • Полностью отключите функцию через experimental.emitToolUseSummaries: false (или QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0).

Ограничение в 300 символов на поле снижает риски, но не устраняет их полностью — секреты, обнаруженные в выводе инструментов в пределах этого лимита, всё равно могут быть отправлены. Относитесь к границе данных быстрой модели так же, как к границе данных основной модели.

Стоимость

Один запрос к быстрой модели на каждый подходящий пакет инструментов. Входные данные: небольшой фиксированный системный промпт плюс обрезанные входные/выходные данные инструментов (каждое поле ограничено 300 символами). Выходные данные: одна короткая строка (ограничена 100 символами, обычно 20 токенов или меньше). На типичной быстрой модели это стоит примерно $0.001 за пакет.

Если вы не хотите нести дополнительные расходы, отключите функцию через experimental.emitToolUseSummaries: false или QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0.

Связанные материалы

  • Компактный режим — переключается через Ctrl+O; при включении компактного режима сводка заменяет стандартный заголовок группы инструментов.
  • Followup Suggestions — ещё одно улучшение UX на базе быстрой модели, использующее тот же параметр fastModel.
Last updated on