Сводки использования инструментов
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.emitToolUseSummaries | boolean | true | Главный переключатель генерации сводок. Отключите, чтобы запретить дополнительный запрос к быстрой модели. |
fastModel | string | "" | Быстрая модель для генерации сводок (используется совместно с подсказками промптов). Обязательный параметр; не работает, если пустой. |
Переопределение через переменные окружения
Переменная 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
}
}Область применения и жизненный цикл
Три момента, которые часто вызывают вопросы при первом знакомстве с функцией:
-
Одна генерация на пакет, общая для обоих режимов отображения. Запрос к быстрой модели выполняется ровно один раз в
handleCompletedToolsпри завершении пакета инструментов. ПереключениеCtrl+Oпосле этого не запускает новый запрос — оба режима читают одну и ту же запись историиtool_use_summary, сохранённую при первом вызове. Вы можете свободно включать и выключать компактный режим без дополнительных затрат. -
Нет обратного заполнения при переключении или возобновлении сессии.
tool_group, завершившийся до включения функции (или до изменения настройки, или в возобновлённой сессии —ChatRecordingServiceне сохраняет записи сводок), никогда не получит метку. Отсутствует этап «сканирования существующей истории». Если вы включите настройку в середине сессии, метки появятся только у будущих пакетов; старые группы останутся в стандартном виде без индикации отсутствия метки. -
Только пакеты основного агента. Триггер находится в цикле ходов основной сессии (
useGeminiStream), поэтому:- ✅ Вызовы Shell, MCP, файловые операции и сам вызов инструмента
Task/ субагента (в том виде, в котором он появляется в основном пакете) получают сводку. - ❌ Внутренние пакеты инструментов субагента (выполняемые через
packages/core/src/agents/runtime/) не суммируются.
Внешний пакет, содержащий инструмент
Task, всё равно получит метку, но быстрая модель видит только вызов субагента и его агрегированный вывод, а не отдельные вызовы внутри субагента. Ожидайте меток вродеRan research-agentилиDelegated file search, а неSearched 14 files. Это сделано намеренно — суммирование внутренней работы субагентов многократно увеличило бы затраты на быструю модель и вывело бы в UI шум, который там не нужен. - ✅ Вызовы Shell, MCP, файловые операции и сам вызов инструмента
Рекомендуемая комбинация: включите компактный режим
Для пакетов из 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.