Skip to Content
Руководство для пользователейКонфигурацияНастройки

Конфигурация Qwen Code

Tip

Аутентификация / API-ключи: Документация по аутентификации (API-ключ, План кодирования Alibaba Cloud) и переменным окружения, связанным с аутентификацией (например, OPENAI_API_KEY), находится в разделе Аутентификация.

Note

Примечание о новом формате конфигурации: Формат файла settings.json был обновлен до новой, более организованной структуры. Старый формат будет перенесен автоматически. Qwen Code предлагает несколько способов настройки своего поведения, включая переменные окружения, аргументы командной строки и файлы настроек. Этот документ описывает различные методы конфигурации и доступные параметры.

Слои конфигурации

Конфигурация применяется в следующем порядке приоритета (нижние номера переопределяются более высокими):

УровеньИсточник конфигурацииОписание
1Значения по умолчаниюЖестко закодированные значения по умолчанию внутри приложения
2Системный файл по умолчаниюСистемные параметры по умолчанию, которые могут быть переопределены другими файлами настроек
3Файл пользовательских настроекГлобальные настройки для текущего пользователя
4Файл настроек проектаНастройки для конкретного проекта
5Системный файл настроекСистемные настройки, переопределяющие все остальные файлы настроек
6Переменные окруженияСистемные или сессионные переменные, возможно загруженные из файлов .env
7Аргументы командной строкиЗначения, переданные при запуске CLI

Файлы настроек

Qwen Code использует JSON-файлы настроек для постоянной конфигурации. Существует четыре расположения этих файлов:

Тип файлаРасположениеОбласть применения
Системный файл по умолчаниюLinux: /etc/qwen-code/system-defaults.json
Windows: C:\ProgramData\qwen-code\system-defaults.json
macOS: /Library/Application Support/QwenCode/system-defaults.json
Путь может быть переопределен с помощью переменной окружения QWEN_CODE_SYSTEM_DEFAULTS_PATH.
Обеспечивает базовый слой системных настроек по умолчанию. Эти настройки имеют самый низкий приоритет и предназначены для переопределения пользовательскими, проектными или системными настройками.
Файл пользовательских настроек~/.qwen/settings.json (где ~ — ваш домашний каталог).Применяется ко всем сеансам Qwen Code для текущего пользователя.
Файл настроек проекта.qwen/settings.json в корневом каталоге вашего проекта.Применяется только при запуске Qwen Code из этого конкретного проекта. Настройки проекта переопределяют пользовательские настройки.
Системный файл настроекLinux: /etc/qwen-code/settings.json
Windows: C:\ProgramData\qwen-code\settings.json
macOS: /Library/Application Support/QwenCode/settings.json
Путь может быть переопределен с помощью переменной окружения QWEN_CODE_SYSTEM_SETTINGS_PATH.
Применяется ко всем сеансам Qwen Code в системе для всех пользователей. Системные настройки переопределяют пользовательские и проектные настройки. Может быть полезно для системных администраторов на предприятиях для контроля над настройками Qwen Code у пользователей.
Note

Примечание о переменных окружения в настройках: Строковые значения в ваших файлах settings.json могут ссылаться на переменные окружения с помощью синтаксиса $VAR_NAME или ${VAR_NAME}. Эти переменные будут автоматически разрешены при загрузке настроек. Например, если у вас есть переменная окружения MY_API_TOKEN, вы можете использовать её в settings.json так: "apiKey": "$MY_API_TOKEN".

Каталог .qwen в вашем проекте

Помимо файла настроек проекта, каталог .qwen проекта может содержать другие файлы, связанные с работой Qwen Code, например:

Миграция конфигурации

Qwen Code автоматически переносит устаревшие параметры конфигурации в новый формат. Перед миграцией создаются резервные копии старых файлов настроек. Следующие параметры были переименованы с отрицательного (disable*) на положительный (enable*) принцип именования:

Старый параметрНовый параметрПримечания
disableAutoUpdate + disableUpdateNaggeneral.enableAutoUpdateОбъединено в один параметр
disableLoadingPhrasesui.accessibility.enableLoadingPhrases
disableFuzzySearchcontext.fileFiltering.enableFuzzySearch
disableCacheControlmodel.generationConfig.enableCacheControl
Note

Инвертирование логического значения: При миграции логические значения инвертируются (например, disableAutoUpdate: true становится enableAutoUpdate: false).

Политика объединения для disableAutoUpdate и disableUpdateNag

Если оба устаревших параметра присутствуют с разными значениями, миграция следует следующей политике: если любой из disableAutoUpdate или disableUpdateNag равен true, то enableAutoUpdate становится false:

disableAutoUpdatedisableUpdateNagПеренесённое enableAutoUpdate
falsefalsetrue
falsetruefalse
truefalsefalse
truetruefalse

Доступные настройки в settings.json

Настройки сгруппированы по категориям. Большинство параметров следует размещать внутри соответствующего объекта категории верхнего уровня в вашем файле settings.json. Несколько настроек верхнего уровня, такие как proxy и plansDirectory, остаются прямыми корневыми ключами для совместимости.

general

ПараметрТипОписаниеПо умолч.
general.preferredEditorstringПредпочитаемый редактор для открытия файлов.undefined
general.vimModebooleanВключить привязки клавиш Vim.false
general.enableAutoUpdatebooleanВключить автоматическую проверку обновлений и их установку при запуске.true
general.showSessionRecapbooleanАвтоматически показывать однострочное резюме «на чём вы остановились» при возвращении в терминал после отсутствия. По умолчанию выключено. Используйте /recap для ручного вызова независимо от этой настройки.false
general.sessionRecapAwayThresholdMinutesnumberКоличество минут, в течение которых терминал должен быть скрыт, чтобы сработал авто-рекап при возврате фокуса. Используется только при включённом showSessionRecap.5
general.gitCoAuthor.commitbooleanДобавлять строку Co-authored-by в сообщения коммитов git И прикреплять пофайловую git-заметку с указанием авторства ИИ (refs/notes/ai-attribution) для коммитов, сделанных через Qwen Code. Отключение пропускает оба действия.true
general.gitCoAuthor.prbooleanДобавлять строку с указанием Qwen Code в описание pull request при выполнении gh pr create.true
general.defaultFileEncodingstringКодировка по умолчанию для новых файлов. Используйте "utf-8" (по умолчанию) для UTF-8 без BOM или "utf-8-bom" для UTF-8 с BOM. Меняйте только если ваш проект явно требует BOM."utf-8"
general.cleanupPeriodDaysnumberКоличество дней хранения резервных копий сессий в ~/.qwen/file-history/, используемых /rewind. Резервные копии старше этого срока удаляются фоновым процессом, запускающимся не чаще одного раза в день. 0 = минимальный срок хранения (~1 час): сохраняются сессии, изменённые за последний час, а также текущая активная сессия. Изменения вступают в силу после перезапуска.30
general.languageenumЯзык пользовательского интерфейса. Используйте "auto" для автоматического определения из системных настроек или код языка (например, "zh-CN", "fr"). Можно добавлять собственные коды, разместив файлы локалей JS в ~/.qwen/locales/. См. i18n. Требуется перезапуск."auto"
general.outputLanguagestringЯзык вывода модели. Используйте "auto" для автоматического определения из системных настроек или укажите конкретный язык. Требуется перезапуск."auto"
general.dynamicCommandTranslationbooleanВключить AI-перевод описаний динамических слеш-команд. При отключении динамические команды сохраняют свои оригинальные описания и пропускают вызовы модели перевода.false

output

НастройкаТипОписаниеПо умолчаниюВозможные значения
output.formatstringФормат вывода CLI."text""text", "json"
output.showTimestampsbooleanПоказывать метку времени [HH:MM:SS] перед каждым ответом ассистента.false

ui

НастройкаТипОписаниеПо умолчанию
ui.themestringЦветовая тема интерфейса. См. Темы для доступных вариантов."Qwen Dark"
ui.customThemesobjectОпределения пользовательских тем.{}
ui.statusLineobjectНастройка пользовательской строки состояния. Поддерживает опции command, refreshInterval, respectUserColors и hideContextIndicator. См. Строка состояния.undefined
ui.hideWindowTitlebooleanСкрыть заголовок окна.false
ui.hideTipsbooleanСкрыть все подсказки (при запуске и после ответа) в интерфейсе. См. Контекстные подсказки.false
ui.hideBannerbooleanСкрыть ASCII-логотип и информационную панель при запуске. Подсказки и поле ввода чата всё равно отображаются, если не установлен также ui.hideTips.false
ui.customBannerTitlestringЗаменить стандартный заголовок >_ Qwen Code в информационной панели баннера. Суффикс версии (vX.Y.Z) добавляется всегда; строки аутентификации, модели и пути не затрагиваются. Санитизируется; максимальная длина 80 символов.""
ui.customBannerSubtitlestringНеобязательная строка подзаголовка, отображаемая между заголовком баннера и строкой аутентификации/модели, вместо пустой строки-разделителя. Санитизируется; максимальная длина 160 символов. Пустая строка (по умолчанию) оставляет исходный пустой разделитель.""
ui.customAsciiArtstring | objectЗаменить ASCII-логотип QWEN в баннере. Принимает строку (используется для обоих уровней ширины), { "path": "./brand.txt" } (относительные пути разрешаются относительно каталога файла настроек; читается один раз при запуске с O_NOFOLLOW на POSIX, максимальный размер 64 КБ) или { "small": ..., "large": ... } для выбора в зависимости от ширины. Санитизируется; максимум 200 строк × 200 столбцов на уровень.undefined
ui.showLineNumbersbooleanПоказывать номера строк в блоках кода в выводе CLI.true
ui.renderModestringРежим отображения Markdown по умолчанию. Используйте "render" для насыщенного визуального предпросмотра или "raw" для отображения исходного Markdown. Переключение во время сессии с помощью Alt/Option+M; на macOS терминал должен передавать Option как Meta. См. Рендеринг Markdown."render"
ui.showCitationsbooleanПоказывать цитаты для сгенерированного текста в чате.false
ui.history.collapseOnResumebooleanСворачивать историю по умолчанию при возобновлении сессии. Можно переключать с помощью /history collapse-on-resume и /history expand-on-resume.false
ui.compactModebooleanСкрыть вывод инструментов и размышления для более чистого вида. Переключение с помощью Ctrl+O во время сессии или через диалог настроек. Запросы на одобрение инструментов никогда не скрываются, даже в компактном режиме. Настройка сохраняется между сессиями.false
ui.shellOutputMaxLinesnumberМаксимальное количество строк вывода оболочки, отображаемых в строке. Установите 0, чтобы отключить лимит и показывать полный вывод. Скрытые строки отображаются через индикатор +N lines. Ошибки, команды пользователя с префиксом !, инструменты подтверждения и сфокусированные встроенные оболочки всегда показывают полный вывод.5
ui.enableWelcomeBackbooleanПоказывать диалог “С возвращением” при возвращении в проект с историей разговоров. Когда включено, Qwen Code автоматически определяет, возвращаетесь ли вы в проект с ранее созданным сводкой проекта (.qwen/PROJECT_SUMMARY.md), и показывает диалог, позволяющий продолжить предыдущий разговор или начать новый. Если вы выберете Начать новый сеанс чата, этот выбор запоминается для текущего проекта, пока сводка проекта не изменится. Эта функция интегрируется с командой /summary и диалогом подтверждения выхода.true
ui.accessibility.enableLoadingPhrasesbooleanВключить фразы загрузки (отключить для доступности).true
ui.accessibility.screenReaderbooleanВключает режим экранного диктора, который адаптирует TUI для лучшей совместимости с программами чтения с экрана.false
ui.customWittyPhrasesarray of stringsСписок пользовательских фраз для отображения во время загрузки. Если указан, CLI будет циклически перебирать эти фразы вместо стандартных.[]
ui.showResponseTokensPerSecondbooleanПоказывать оценку токенов/сек в реальном времени рядом со счётчиком токенов ответа, пока модель передаёт данные. Это подсказка скорости генерации, а не расчётное время завершения или процент выполнения. Вступает в силу в следующей сессии.false
ui.enableFollowupSuggestionsbooleanВключить предложения продолжения, которые предсказывают, что вы хотите ввести после ответа модели. Предложения отображаются как текст-заполнитель и принимаются с помощью Tab, Enter или стрелки вправо (которые заполняют поле ввода, но не отправляют автоматически). Включено по умолчанию; установите false, чтобы отказаться.true
ui.enableCacheSharingbooleanИспользовать кэш-зависимые разветвлённые запросы для генерации предложений. Снижает затраты у провайдеров, поддерживающих кэширование префиксов (экспериментально).true
ui.enableSpeculationbooleanСпекулятивно выполнять принятые предложения до отправки. Результаты отображаются мгновенно при принятии (экспериментально).false

ide

НастройкаТипОписаниеПо умолчанию
ide.enabledbooleanВключить режим интеграции с IDE.false
ide.hasSeenNudgebooleanВидел ли пользователь подсказку об интеграции с IDE.false

privacy

НастройкаТипОписаниеПо умолчанию
privacy.usageStatisticsEnabledbooleanВключить сбор статистики использования.true

model

НастройкаТипОписаниеПо умолчанию
model.namestringМодель Qwen, используемая для бесед.undefined
model.maxSessionTurnsnumberМаксимальное количество циклов (пользователь/модель/инструмент), хранимых в сессии. -1 означает безлимит.-1
model.maxWallTimeSecondsnumberБюджет реального времени для беспилотных / неинтерактивных запусков в секундах. -1 означает безлимит. Можно переопределить при каждом вызове через --max-wall-time, который требует положительной длительности (90, 30s, 5m, 1h, 1.5h); минимум 1 секунда — значения менее секунды (500ms, 0.5) отклоняются как опечатки. Если флаг опущен, используется это значение. При превышении завершается с кодом 55.-1
model.maxToolCallsnumberСовокупный бюджет вызовов инструментов за запуск (учитывается каждый выполненный инструмент, успешный или нет; structured_output при --json-schema освобождается). -1 означает безлимит; 0 означает “вызовы инструментов запрещены”. Ограничено сверху 1 000 000 для обнаружения опечаток. Можно переопределить через --max-tool-calls. При превышении завершается с кодом 55.-1
model.generationConfigobjectРасширенные переопределения, передаваемые базовому генератору контента. Поддерживает управление запросами, такие как timeout, maxRetries, enableCacheControl, splitToolMedia (по умолчанию true; разделяет медиа, возвращённые инструментом — включая изображения, прочитанные встроенной функцией read_file — на последующее сообщение пользователя вместо нарушающего спецификацию сообщения role: "tool", чтобы строгие серверы, совместимые с OpenAI (например doubao / new-api / LM Studio), могли его увидеть; установите false, чтобы восстановить устаревшее поведение встраивания в инструмент), toolResultContentFormat (по умолчанию "parts"; установите "string" только для устаревших сред выполнения, совместимых с OpenAI, шаблоны инструментов которых игнорируют части текстового контента), contextWindowSize (переопределение размера контекстного окна модели), modalities (переопределение автоматически обнаруженных входных модальностей), customHeaders (пользовательские HTTP-заголовки для запросов API) и extra_body (дополнительные параметры тела для запросов, совместимых с OpenAI API), а также параметры тонкой настройки в samplingParams (например temperature, top_p, max_tokens). Оставьте незаданным, чтобы полагаться на настройки провайдера.undefined
model.chatCompression.contextPercentageThresholdnumberУДАЛЕНО. Авто-сжатие теперь использует трёхуровневую лестницу порогов (предупреждение / авто / жёсткий), вычисляемую внутренне из контекстного окна модели через функцию computeThresholds() — больше не настраивается пользователем. Установка этого поля в settings.json молча игнорируется (предупреждение при запуске отсутствует). В настоящее время нет замены для “полного отключения сжатия” — реактивное восстановление при переполнении остаётся предохранительным клапаном на уровне API, если само сжатие не удаётся. (См. PR #4345 / docs/design/auto-compaction-threshold-redesign.md для обоснования редизайна.)N/A
model.chatCompression.maxRecentFilesToRetainnumberКоличество файлов, к которым обращались последними, чьё текущее содержимое восстанавливается (встраивается, если файл мал, иначе указывается путь) в историю после авто-сжатия. 0 не восстанавливает ни одного. Переопределение через переменную окружения: QWEN_COMPACT_MAX_RECENT_FILES.5
model.chatCompression.maxRecentImagesToRetainnumberКоличество последних изображений (скриншотов инструментов / вставленных пользователем), восстанавливаемых в историю после авто-сжатия. 0 не восстанавливает ни одного. Переопределение через переменную окружения: QWEN_COMPACT_MAX_RECENT_IMAGES.3
model.chatCompression.enableScreenshotTriggerbooleanЕсли true, авто-сжатие также срабатывает, когда количество изображений, возвращённых инструментом и накопленных в истории, достигает screenshotTriggerThreshold, независимо от использования токенов — предназначено для сеансов с компьютерным зрением, где частые скриншоты размывают внимание модели. Учитываются только изображения, возвращённые в результатах инструментов, а не вставленные пользователем. Переопределение через переменную окружения: QWEN_COMPACT_SCREENSHOT_TRIGGER (1/true/0/false).true
model.chatCompression.screenshotTriggerThresholdnumberКоличество изображений, возвращённых инструментом, на котором или выше которого срабатывает триггер скриншотов (только если enableScreenshotTrigger). Сжатие сбрасывает счётчик — выжившие изображения повторно встраиваются как части верхнего уровня, которые триггер не учитывает — так что он не сработает немедленно снова. Переопределение через переменную окружения: QWEN_COMPACT_SCREENSHOT_THRESHOLD.50
model.skipNextSpeakerCheckbooleanПропустить проверку следующего говорящего.true
model.skipLoopDetectionbooleanОтключает проверки обнаружения циклической потоковой передачи. По умолчанию true (обнаружение цикла пропускается), чтобы избежать ложных срабатываний, прерывающих легитимные рабочие процессы. Установите false, чтобы включить обнаружение циклической потоковой передачи — полезно в качестве защиты в беспилотных / неинтерактивных запусках, где застрявшее повторение может впустую расходовать бюджет.true
model.skipStartupContextbooleanПропускает отправку контекста рабочей области при запуске (сводка окружения и подтверждение) в начале каждого сеанса. Включите, если предпочитаете предоставлять контекст вручную или хотите сэкономить токены при запуске.false
model.enableOpenAILoggingbooleanВключает журналирование вызовов OpenAI API для отладки и анализа. При включении запросы и ответы API записываются в JSON-файлы.false
model.openAILoggingDirstringПуть к каталогу для журналов OpenAI API. Если не указан, по умолчанию используется logs/openai в текущем рабочем каталоге. Поддерживает абсолютные пути, относительные пути (разрешаются из текущего рабочего каталога) и расширение ~ (домашний каталог).undefined
Пример model.generationConfig:
{ "model": { "generationConfig": { "timeout": 60000, "contextWindowSize": 128000, "modalities": { "image": true }, "enableCacheControl": true, "toolResultContentFormat": "parts", "customHeaders": { "X-Client-Request-ID": "req-123" }, "extra_body": { "enable_thinking": true }, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }

max_tokens (адаптивное количество выходных токенов):

Если samplingParams.max_tokens не задан, Qwen Code использует адаптивную стратегию выходных токенов для оптимизации использования ресурсов GPU:

  1. Запросы начинаются с ограничения по умолчанию в 8K выходных токенов.
  2. Если ответ был обрезан (модель достигла лимита), Qwen Code автоматически повторяет запрос с лимитом в 64K токенов.
  3. Частичный вывод отбрасывается и заменяется полным ответом из повторного запроса.

Это прозрачно для пользователей — вы можете кратко увидеть индикатор повтора, если произошло повышение лимита. Поскольку 99% ответов имеют объём менее 5K токенов, повтор происходит редко (<1% запросов).

Чтобы переопределить это поведение, задайте samplingParams.max_tokens в настройках или используйте переменную окружения QWEN_CODE_MAX_OUTPUT_TOKENS.

toolResultContentFormat:

Управляет сериализацией текстовых результатов инструментов в запросах, совместимых с OpenAI. Значение по умолчанию "parts" сохраняет стандартную форму массива content-part. Устанавливайте "string" только для устаревших сред выполнения, совместимых с OpenAI, шаблоны инструментов которых игнорируют текстовые content parts, например, старые шаблоны GLM-5.1 vLLM/SGLang. Возвращаемые инструментом медиа по-прежнему контролируются параметром splitToolMedia.

contextWindowSize:

Переопределяет размер контекстного окна по умолчанию для выбранной модели. Qwen Code определяет размер контекстного окна, используя встроенные значения по умолчанию на основе сопоставления имени модели, с постоянным запасным значением. Используйте этот параметр, когда эффективный лимит контекста провайдера отличается от значения по умолчанию Qwen Code. Это значение определяет предполагаемую максимальную ёмкость контекста модели, а не лимит токенов на запрос.

Если выбранная модель определена в modelProviders, задавайте contextWindowSize в generationConfig соответствующей записи провайдера, а не в верхнем уровне model.generationConfig. Записи моделей провайдеров являются финализированными, поэтому настройки генерации верхнего уровня не заполняют отсутствующие поля провайдера.

modalities:

Переопределяет автоматически определённые модальности ввода для выбранной модели. Qwen Code автоматически определяет поддерживаемые модальности (изображение, PDF, аудио, видео) на основе сопоставления с именем модели. Используйте этот параметр, когда автоопределение неверно — например, чтобы включить pdf для модели, которая его поддерживает, но не распознаётся. Формат: { "image": true, "pdf": true, "audio": true, "video": true }. Опустите ключ или установите false для неподдерживаемых типов.

customHeaders:

Позволяет добавлять пользовательские HTTP-заголовки ко всем API-запросам. Это полезно для трассировки запросов, мониторинга, маршрутизации через API-шлюз или когда разным моделям требуются разные заголовки. Для моделей провайдера определяйте customHeaders в modelProviders[].generationConfig.customHeaders. Для моделей среды выполнения без соответствующей записи провайдера определяйте в model.generationConfig.customHeaders. Объединения между двумя уровнями не происходит.

Поле extra_body позволяет добавлять пользовательские параметры в тело запроса, отправляемое API. Это полезно для специфичных для провайдера опций, не охваченных стандартными полями конфигурации. Примечание: это поле поддерживается только для провайдеров, совместимых с OpenAI (openai, qwen-oauth). Для провайдеров Anthropic и Gemini оно игнорируется. Для моделей провайдера определяйте extra_body в modelProviders[].generationConfig.extra_body. Для моделей среды выполнения без соответствующей записи провайдера определяйте в model.generationConfig.extra_body.

Примеры model.openAILoggingDir:

  • "~/qwen-logs" — логирование в каталог ~/qwen-logs
  • "./custom-logs" — логирование в ./custom-logs относительно текущего каталога
  • "/tmp/openai-logs" — логирование по абсолютному пути /tmp/openai-logs

fastModel

НастройкаТипОписаниеПо умолчанию
fastModelstringМодель, используемая для генерации подсказок для продолжения и спекулятивного выполнения. Оставьте пустым для использования основной модели. Меньшая/более быстрая модель (например, qwen3-coder-flash) снижает задержку и стоимость. Также может быть задана через /model --fast.""

context

НастройкаТипОписаниеПо умолчанию
context.fileNamestring или array of stringsИмя файла(ов) контекста.undefined
context.importFormatstringФормат, используемый при импорте памяти.undefined
context.includeDirectoriesarrayДополнительные каталоги для включения в контекст рабочей области. Задаёт массив дополнительных абсолютных или относительных путей для включения в контекст рабочей области. Отсутствующие каталоги будут пропущены с предупреждением по умолчанию. Пути могут использовать ~ для обозначения домашнего каталога пользователя. Этот параметр можно комбинировать с флагом командной строки --include-directories.[]
context.loadFromIncludeDirectoriesbooleanУправляет поведением команды /memory refresh. Если установлено true, файлы QWEN.md должны загружаться из всех добавленных каталогов. Если false, файлы QWEN.md должны загружаться только из текущего каталога.false
context.fileFiltering.respectGitIgnorebooleanУчитывать .gitignore-файлы при поиске.true
context.fileFiltering.respectQwenIgnorebooleanУчитывать .qwenignore и настроенные пользовательские файлы игнорирования при поиске.true
context.fileFiltering.customIgnoreFilesarrayФайлы игнорирования относительно корня проекта, используемые вместо стандартных файлов совместимости (.agentignore, .aiignore), когда включён respectQwenIgnore. Файл .qwenignore всегда включается.[".agentignore", ".aiignore"]
context.fileFiltering.enableRecursiveFileSearchbooleanВключает ли рекурсивный поиск имён файлов в текущем дереве при автодополнении префикса @ в подсказке.true
context.fileFiltering.enableFuzzySearchbooleanЕсли true, включает нечёткий поиск при поиске файлов. Установите false для повышения производительности в проектах с большим количеством файлов.true
context.clearContextOnIdle.toolResultsThresholdMinutesnumberКоличество минут бездействия перед очисткой старых результатов инструментов. Используйте -1 для отключения триггера по бездействию.60
context.clearContextOnIdle.toolResultsNumToKeepintegerЦелое число — количество самых последних сжимаемых результатов инструментов, которые следует сохранить при очистке. Значения ниже 1 округляются до 1.5
context.clearContextOnIdle.toolResultsTotalCharsThresholdnumberОбщее количество символов в выводимых сжимаемых результатах инструментов, допустимое в истории, прежде чем будут удалены самые старые результаты. Используйте -1 для отключения триггера по размеру. Это мягкая граница: защищённые последние результаты инструментов могут удерживать общее количество выше этого значения.500000

Устранение проблем с производительностью поиска файлов

Если у вас возникают проблемы с производительностью поиска файлов (например, при автодополнении через @), особенно в проектах с очень большим количеством файлов, вот несколько вариантов действий в порядке рекомендации:

  1. Используйте файл игнорирования: Создайте файл .qwenignore или настройте собственный файл игнорирования в корне проекта, чтобы исключить каталоги, содержащие большое количество файлов, на которые вам не нужно ссылаться (например, артефакты сборки, журналы, node_modules). Уменьшение общего количества просматриваемых файлов — самый эффективный способ повысить производительность.
  2. Отключите нечеткий поиск: Если игнорирования файлов недостаточно, можно отключить нечеткий поиск, установив enableFuzzySearch в false в файле settings.json. Это будет использовать более простой, нечеткий алгоритм сопоставления, что может быть быстрее.
  3. Отключите рекурсивный поиск файлов: В крайнем случае можно полностью отключить рекурсивный поиск файлов, установив enableRecursiveFileSearch в false. Это будет самым быстрым вариантом, так как позволяет избежать рекурсивного обхода вашего проекта. Однако это означает, что вам нужно будет вводить полный путь к файлам при использовании автодополнения через @.

tools

ПараметрТипОписаниеЗначение по умолчаниюПримечания
tools.sandboxboolean или stringСреда выполнения песочницы (может быть логическим значением или строкой пути).undefined
tools.sandboxImagestringURI образа песочницы, используемый Docker/Podman, если не заданы --sandbox-image и QWEN_SANDBOX_IMAGE.undefined
tools.shell.enableInteractiveShellbooleanИспользовать node-pty для интерактивной работы с оболочкой. Применяется резервный вариант child_process.true
tools.corearray of stringsУстарел. Будет удален в следующей версии. Используйте permissions.allow + permissions.deny вместо этого. Ограничивает встроенные инструменты списком разрешенных. Все инструменты, не входящие в список, отключены.undefined
tools.excludearray of stringsУстарел. Используйте permissions.deny вместо этого. Имена инструментов, исключаемые из обнаружения. Автоматически переносится в формат permissions при первой загрузке.undefined
tools.allowedarray of stringsУстарел. Используйте permissions.allow вместо этого. Имена инструментов, которые обходят диалоговое окно подтверждения. Автоматически переносится в формат permissions при первой загрузке.undefined
tools.approvalModestringУстанавливает режим подтверждения по умолчанию для использования инструментов.defaultВозможные значения: plan (только анализ, не изменяет файлы и не выполняет команды), default (требуется подтверждение перед редактированием файлов или выполнением команд оболочки), auto-edit (автоматически подтверждает редактирование файлов), auto (LLM-классификатор автоматически подтверждает безопасные действия, блокирует рискованные), yolo (автоматически подтверждает все вызовы инструментов)
tools.discoveryCommandstringКоманда для выполнения обнаружения инструментов.undefined
tools.callCommandstringОпределяет пользовательскую команду оболочки для вызова конкретного инструмента, обнаруженного с помощью tools.discoveryCommand. Команда оболочки должна соответствовать следующим требованиям: она должна принимать имя функции name (точно так, как в объявлении функции ) в качестве первого аргумента командной строки. Она должна читать аргументы функции в формате JSON из stdin, аналогично functionCall.args. Она должна возвращать вывод функции в формате JSON в stdout, аналогично functionResponse.response.content.undefined
tools.useRipgrepbooleanИспользовать ripgrep для поиска содержимого файлов вместо резервной реализации. Обеспечивает более высокую производительность поиска.true
tools.useBuiltinRipgrepbooleanИспользовать встроенный бинарный файл ripgrep. Если установлено значение false, будет использоваться системная команда rg. Этот параметр действует только при tools.useRipgrep равном true.true
tools.truncateToolOutputThresholdnumberОбрезать вывод инструмента, если он превышает указанное количество символов. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles.25000Требуется перезапуск: Да
tools.truncateToolOutputLinesnumberМаксимальное количество строк или записей, сохраняемых при обрезке вывода инструмента. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles.1000Требуется перезапуск: Да
tools.computerUse.enabledbooleanВключить встроенные инструменты Computer Use (cua-driver для нативной автоматизации рабочего стола). Если true (по умолчанию), инструменты computer_use__* регистрируются как отложенные встроенные; при первом вызове загружается подписанный бинарный файл cua-driver в ~/.qwen/computer-use/ и выполняется настройка разрешений macOS Accessibility / Screen Recording.trueТребуется перезапуск: Да
tools.computerUse.maxImageDimensionnumberМаксимальный размер пикселей по длинной стороне для скриншотов cua-driver (через set_config’s max_image_dimension). -1 (по умолчанию) оставляет встроенное значение по умолчанию cua-driver (1568); 0 отключает изменение размера (полное разрешение); положительное значение ограничивает длинную сторону. Меньшие значения снижают затраты токенов на зрение за счет мелких деталей.-1Требуется перезапуск: Да. Переопределение через переменную окружения: QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION (неотрицательное целое число; имеет приоритет над этим параметром)
Note

Миграция с tools.core / tools.exclude / tools.allowed: Эти устаревшие настройки объявлены устаревшими и автоматически переносятся в новый формат permissions при первой загрузке. Рекомендуется настраивать permissions.allow / permissions.deny напрямую. Используйте /permissions для интерактивного управления правилами.

memory

НастройкаТипОписаниеПо умолчанию
memory.enableManagedAutoMemorybooleanВключить фоновое извлечение воспоминаний из диалогов.true
memory.enableManagedAutoDreambooleanВключить автоматическую консолидацию (дедупликацию и очистку) собранных воспоминаний.true
memory.enableAutoSkillbooleanВключить фоновый анализ для повторно используемых навыков проекта после сессий с интенсивным использованием инструментов.true
memory.autoSkillConfirmbooleanЗапрашивать подтверждение перед добавлением автоматически созданных навыков в библиотеку навыков. При выключении навыки сохраняются сразу.true

Подробнее о работе автоматической памяти и использовании команд /memory, /remember и /dream см. в разделе Память.

permissions

Система разрешений обеспечивает тонкий контроль над тем, какие инструменты могут выполняться, какие требуют подтверждения, а какие заблокированы.

Приоритет решений (от наибольшего к наименьшему): deny > ask > allow > (по умолчанию/интерактивный режим)

Первое совпавшее правило имеет приоритет. Правила используют формат "ToolName" или "ToolName(спецификатор)".

НастройкаТипОписаниеПо умолчанию
permissions.allowarray of stringsПравила для автоматически одобренных вызовов инструментов (без запроса подтверждения). Объединяются из всех областей (пользователь + проект + система).undefined
permissions.askarray of stringsПравила для вызовов инструментов, которые всегда требуют подтверждения пользователя. Имеют приоритет над allow.undefined
permissions.denyarray of stringsПравила для заблокированных вызовов инструментов. Наивысший приоритет — переопределяет allow и ask.undefined

Псевдонимы имён инструментов (любой из них работает в правилах):

ПсевдонимКанонический инструментПримечания
Bash, Shellrun_shell_command
Read, ReadFileread_fileМета-категория — см. ниже
Edit, EditFileeditМета-категория — см. ниже
Write, WriteFilewrite_file
NotebookEditnotebook_edit
NotebookEditToolnotebook_edit
Grep, SearchFilesgrep_search
Glob, FindFilesglob
ListFileslist_directory
WebFetchweb_fetch
Agenttask
Skillskill

Мета-категории:

Некоторые имена правил автоматически охватывают несколько инструментов:

Имя правилаОхватываемые инструменты
Readread_file, grep_search, glob, list_directory
Editedit, write_file, notebook_edit

[!important] Read(/path/**) соответствует всем четырём инструментам чтения (чтение файла, grep, glob, список каталогов). Чтобы ограничить только чтение файлов, используйте ReadFile(/path/**) или read_file(/path/**).

Примеры синтаксиса правил:

ПравилоЗначение
"Bash"Все команды оболочки
"Bash(git *)"Команды оболочки, начинающиеся с git (граница слова: НЕ gitk)
"Bash(git push *)"Команды оболочки, такие как git push origin main
"Bash(npm run *)"Любой скрипт npm run
"Read"Все операции чтения файлов (чтение, grep, glob, список)
"Read(./secrets/**)"Чтение любого файла в папке ./secrets/ рекурсивно
"Edit(/src/**/*.ts)"Редактирование TypeScript-файлов в корне проекта /src/
"WebFetch(api.example.com)"Выборка с api.example.com и всех его поддоменов
"mcp__puppeteer"Все инструменты с MCP-сервера puppeteer
Префиксы шаблонов путей:
ПрефиксЗначениеПример
//Абсолютный путь от корня файловой системы//etc/passwd
~/Относительно домашней директории~/Documents/*.pdf
/Относительно корня проекта/src/**/*.ts
./Относительно текущей рабочей директории./secrets/**
(нет)То же, что и ./secrets/**

Предотвращение обхода через shell-команды:

Правила разрешений для Read, Edit и WebFetch также применяются, когда агент выполняет эквивалентные shell-команды. Например, если Read(./.env) указано в deny, агент не сможет обойти это через cat .env в shell-команде. Поддерживаемые shell-команды включают cat, grep, curl, wget, cp, mv, rm, chmod и многие другие. Неизвестные/безопасные команды (например, git) не затрагиваются правилами файлов/сети.

Миграция из устаревших настроек:

Устаревшая настройкаЭквивалентное правило permissionsПримечания
tools.allowedpermissions.allowАвтомигрируется при первой загрузке
tools.excludepermissions.denyАвтомигрируется при первой загрузке
tools.corepermissions.allow (белый список)Автомигрируется; неперечисленные инструменты отключаются на уровне реестра

Пример конфигурации:

{ "permissions": { "allow": ["Bash(git *)", "Bash(npm run *)", "Read(//Users/alice/code/**)"], "ask": ["Bash(git push *)", "Edit"], "deny": ["Bash(rm -rf *)", "Read(.env)", "WebFetch(malicious.com)"] } }

[!tip] Используйте /permissions в интерактивном CLI для просмотра, добавления и удаления правил без редактирования settings.json напрямую.

slashCommands

Управляет тем, какие слеш-команды доступны в CLI. Полезно для ограничения поверхности команд в мультитенантных или корпоративных развертываниях.

НастройкаТипОписаниеПо умолч.
slashCommands.disabledмассив строкИмена слеш-команд, которые нужно скрыть и отказаться выполнять. Сравнение без учёта регистра с финальным именем команды (для команд расширений это уточнённая форма, например myext.deploy). Объединяется как объединение по областям видимости, так что настройки рабочей области могут добавлять, но не удалять записи, определённые в пользовательских или системных настройках.undefined

Тот же список запрета может быть передан через флаг CLI --disabled-slash-commands (через запятую или повторяющийся) и переменную окружения QWEN_DISABLED_SLASH_COMMANDS; значения из всех трёх источников объединяются.

Пример — блокировка встроенных команд для изолированного развертывания:

{ "slashCommands": { "disabled": ["auth", "mcp", "extensions", "ide", "quit"] } }

С этими значениями в системном settings.json (/etc/qwen-code/settings.json или QWEN_CODE_SYSTEM_SETTINGS_PATH) пользователи не могут уменьшить список запрета из своей области видимости, и отключённые команды не будут отображаться в автодополнении и не будут выполняться при вводе.

[!note] Эта настройка ограничивает только слеш-команды (например, /auth, /mcp). Она не затрагивает разрешения инструментов — для этого используйте permissions.deny. Также она не перехватывает сочетания клавиш, такие как Ctrl+C или Esc.

mcp

НастройкаТипОписаниеПо умолч.
mcp.serverCommandстрокаКоманда для запуска MCP-сервера.undefined
mcp.allowedмассив строкБелый список разрешённых MCP-серверов. Позволяет указать список имён MCP-серверов, которые должны быть доступны модели. Можно использовать для ограничения набора подключаемых MCP-серверов. Обратите внимание, что это игнорируется, если установлен --allowed-mcp-server-names.undefined
mcp.excludedмассив строкЧёрный список исключаемых MCP-серверов. Сервер, перечисленный как в mcp.excluded, так и в mcp.allowed, исключается. Обратите внимание, что это игнорируется, если установлен --allowed-mcp-server-names.undefined
Note

Замечание по безопасности для MCP-серверов: Эти настройки используют простое сопоставление строк по именам MCP-серверов, которые могут быть изменены. Если вы системный администратор и хотите предотвратить обход этого ограничения пользователями, рассмотрите возможность настройки mcpServers на уровне системных параметров, чтобы пользователь не мог настраивать собственные MCP-серверы. Это не следует рассматривать как абсолютный механизм безопасности.

lsp

[!warning] Экспериментальная возможность: Поддержка LSP в настоящее время является экспериментальной и отключена по умолчанию. Включите её с помощью флага командной строки --experimental-lsp.

Протокол Language Server Protocol (LSP) предоставляет функции интеллектуального анализа кода, такие как переход к определению, поиск ссылок и диагностика.

Настройка LSP-сервера осуществляется через файлы .lsp.json в корневой директории проекта, а не через settings.json. Дополнительные сведения о конфигурации и примеры см. в документации по LSP.

security

НастройкаТипОписаниеПо умолчанию
security.folderTrust.enabledbooleanНастройка для отслеживания, включено ли доверие к папкам.false
security.auth.selectedTypestringТекущий выбранный тип аутентификации.undefined
security.auth.enforcedTypestringОбязательный тип аутентификации (полезно для предприятий).undefined
security.auth.useExternalbooleanИспользовать ли внешний процесс аутентификации.undefined

advanced

НастройкаТипОписаниеПо умолчанию
advanced.autoConfigureMemorybooleanАвтоматически настраивать ограничения памяти Node.js.false
advanced.dnsResolutionOrderstringПорядок разрешения DNS.undefined
advanced.excludedEnvVarsarray of stringsПеременные окружения, исключаемые из контекста проекта. Указывает переменные окружения, которые не следует загружать из файлов .env проекта. Это предотвращает влияние специфичных для проекта переменных (например, DEBUG=true) на поведение CLI. Переменные из файлов .qwen/.env никогда не исключаются.["DEBUG","DEBUG_MODE"]
advanced.bugCommandobjectКонфигурация команды отправки отчёта об ошибке. Переопределяет URL по умолчанию для команды /bug. Свойства: urlTemplate (string): URL, который может содержать плейсхолдеры {title} и {info}. Пример: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined
plansDirectorystringПользовательский каталог для утверждённых файлов режима Планирования. Относительные пути разрешаются относительно корня проекта, и разрешённый путь должен оставаться в пределах корня проекта. Если не задан, файлы планов хранятся в ~/.qwen/plans. Требуется перезапуск. Если каталог находится внутри корня проекта, добавьте его в .gitignore, чтобы избежать фиксации файлов планов.undefined

experimental

Warning

Экспериментальные возможности. Эти переключатели открывают разрабатываемые функции, которые могут измениться или быть удалены в будущих версиях.

НастройкаТипОписаниеПо умолчанию
experimental.cronbooleanВключить внутрисеансовые инструменты cron/циклов (cron_create, cron_list, cron_delete), чтобы модель могла создавать повторяющиеся запросы. Можно отключить через переменную окружения QWEN_CODE_DISABLE_CRON=1. Требуется перезапуск.true
experimental.agentTeambooleanВключить инструменты совместной работы агентов в команде (team_create, task_create, task_update, send_message и т.д.) для многокомпонентной координации. Также можно включить через QWEN_CODE_ENABLE_AGENT_TEAM=1. Требуется перезапуск.false
experimental.artifactbooleanВключить инструмент Artifact, позволяющий модели публиковать самодостаточную HTML-страницу и открывать её в браузере. Только для интерактивных сессий без SDK. Переключается через QWEN_CODE_ENABLE_ARTIFACT=1 / QWEN_CODE_DISABLE_ARTIFACT=1. Требуется перезапуск.false
experimental.emitToolUseSummariesbooleanГенерировать краткую метку на основе LLM после завершения каждого пакета вызовов инструментов. См. Сводки использования инструментов. Требуется быстрая модель (настройка fastModel); иначе молча пропускается. Можно переопределить для сессии с помощью QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 или =1.true

mcpServers

Настраивает подключения к одному или нескольким серверам Model-Context Protocol (MCP) для обнаружения и использования пользовательских инструментов. Qwen Code пытается подключиться к каждому настроенному MCP-серверу для обнаружения доступных инструментов. Если несколько MCP-серверов предоставляют инструмент с одним и тем же именем, имена инструментов будут дополнены псевдонимом сервера, заданным в конфигурации (например, serverAlias__actualToolName), чтобы избежать конфликтов. Обратите внимание, что система может удалить некоторые свойства схемы из определений MCP-инструментов для обеспечения совместимости. Должен быть указан хотя бы один из параметров: command, url или httpUrl. Если указано несколько, приоритет имеет httpUrl, затем url, затем command.

СвойствоТипОписаниеОпционально
mcpServers.<SERVER_NAME>.commandstringКоманда для запуска MCP-сервера через стандартный ввод/вывод.Да
mcpServers.<SERVER_NAME>.argsarray of stringsАргументы для передачи команде.Да
mcpServers.<SERVER_NAME>.envobjectПеременные окружения для процесса сервера.Да
mcpServers.<SERVER_NAME>.cwdstringРабочая директория для запуска сервера.Да
mcpServers.<SERVER_NAME>.urlstringURL MCP-сервера, использующего Server-Sent Events (SSE) для взаимодействия.Да
mcpServers.<SERVER_NAME>.httpUrlstringURL MCP-сервера, использующего потоковый HTTP для взаимодействия.Да
mcpServers.<SERVER_NAME>.headersobjectКарта HTTP-заголовков, отправляемых с запросами к url или httpUrl.Да
mcpServers.<SERVER_NAME>.timeoutnumberТайм-аут в миллисекундах для запросов к этому MCP-серверу.Да
mcpServers.<SERVER_NAME>.trustbooleanДоверять этому серверу и пропускать все подтверждения вызова инструментов.Да
mcpServers.<SERVER_NAME>.descriptionstringКраткое описание сервера, которое может использоваться для отображения.Да
mcpServers.<SERVER_NAME>.includeToolsarray of stringsСписок имён инструментов, которые следует включить с этого MCP-сервера. Если указан, из этого сервера будут доступны только перечисленные инструменты (поведение белого списка). Если не указан, по умолчанию включены все инструменты сервера.Да
mcpServers.<SERVER_NAME>.excludeToolsarray of stringsСписок имён инструментов, которые следует исключить с этого MCP-сервера. Инструменты из этого списка не будут доступны модели, даже если они предоставлены сервером. Примечание: excludeTools имеет приоритет над includeTools — если инструмент есть в обоих списках, он будет исключён.Да

telemetry

Настраивает сбор логов и метрик для Qwen Code. Дополнительную информацию см. в telemetry.

НастройкаТипОписаниеПо умолчанию
telemetry.enabledbooleanВключает или выключает телеметрию.
telemetry.targetstringИнформационная метка для назначения телеметрии (local или gcp). Не управляет маршрутизацией экспортера; установите telemetry.otlpEndpoint или telemetry.outfile, чтобы настроить отправку данных.
telemetry.otlpEndpointstringЭндпоинт для OTLP-экспортера.
telemetry.otlpProtocolstringПротокол для OTLP-экспортера (grpc или http).
telemetry.logPromptsbooleanВключает или выключает включение содержимого пользовательских запросов в логи.
telemetry.includeSensitiveSpanAttributesbooleanПри включении добавляет дословные пользовательские запросы, системные запросы, вводы/выводы инструментов и ответы модели к собственным атрибутам span OTel (в дополнение к span моста log-to-span). ⚠️ Передает конфиденциальные данные — содержимое файлов, команды оболочки, историю разговоров — в ваш OTLP-бэкенд.false
telemetry.outfilestringПуть для записи телеметрии в файл. При установке переопределяет экспорт OTLP.

Пример settings.json

Вот пример файла settings.json с вложенной структурой, начиная с версии v0.3.0:

{ "proxy": "http://localhost:7890", "plansDirectory": "./.qwen/plans", "general": { "vimMode": true, "preferredEditor": "code" }, "ui": { "theme": "GitHub", "hideTips": false, "customWittyPhrases": [ "You forget a thousand things every day. Make sure this is one of 'em", "Connecting to AGI" ] }, "tools": { "approvalMode": "yolo", "sandbox": "docker", "sandboxImage": "ghcr.io/qwenlm/qwen-code:0.14.1", "discoveryCommand": "bin/get_tools", "callCommand": "bin/call_tool", "exclude": ["write_file"] }, "mcpServers": { "mainServer": { "command": "bin/mcp_server.py" }, "anotherServer": { "command": "node", "args": ["mcp_server.js", "--verbose"] } }, "telemetry": { "enabled": true, "target": "local", "otlpEndpoint": "http://localhost:4317", "logPrompts": true, "includeSensitiveSpanAttributes": false }, "privacy": { "usageStatisticsEnabled": true }, "model": { "name": "qwen3-coder-plus", "maxSessionTurns": 10, "enableOpenAILogging": false, "openAILoggingDir": "~/qwen-logs", }, "context": { "fileName": ["CONTEXT.md", "QWEN.md"], "includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"], "loadFromIncludeDirectories": true, "fileFiltering": { "respectGitIgnore": false } }, "advanced": { "excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"] } }

История оболочки

CLI хранит историю выполненных вами команд оболочки. Чтобы избежать конфликтов между различными проектами, эта история сохраняется в директории, специфичной для проекта, внутри вашей домашней папки пользователя.

  • Расположение: ~/.qwen/tmp/<project_hash>/shell_history
    • <project_hash> — это уникальный идентификатор, созданный на основе корневого пути вашего проекта.
    • История сохраняется в файле с именем shell_history.

Переменные окружения и файлы .env

Переменные окружения — это распространённый способ настройки приложений, особенно для конфиденциальной информации (например, токенов) или для параметров, которые могут меняться в зависимости от окружения.

Qwen Code может автоматически загружать переменные окружения из файлов .env. По переменным, связанным с аутентификацией (например, OPENAI_*), и рекомендуемому подходу с .qwen/.env см. Аутентификация.

Tip

Исключение переменных окружения: Некоторые переменные окружения (например, DEBUG и DEBUG_MODE) по умолчанию автоматически исключаются из файлов .env проекта, чтобы предотвратить влияние на поведение CLI. Переменные из файлов .qwen/.env никогда не исключаются. Вы можете настроить это поведение с помощью параметра advanced.excludedEnvVarssetting в файле settings.json.

Таблица переменных окружения

ПеременнаяОписаниеПримечания
QWEN_HOMEНастраивает глобальную директорию конфигурации (по умолчанию: ~/.qwen). Принимает абсолютный или относительный путь (относительные пути разрешаются относительно текущей рабочей директории). Начальный ~ раскрывается в домашнюю директорию пользователя.Хранит учётные данные, настройки, память, навыки и другое глобальное состояние. При установке этой переменной проектные директории .qwen/ не затрагиваются. Пустая строка считается неустановленной.
QWEN_RUNTIME_DIRПереопределяет директорию выходных данных во время выполнения (разговоры, журналы, задачи). Если не установлена, по умолчанию используется директория QWEN_HOME.Используйте эту переменную, чтобы отделить эфемерные данные времени выполнения от постоянной конфигурации. Полезно, когда QWEN_HOME находится в общей/медленной файловой системе.
QWEN_TELEMETRY_ENABLEDУстановите в true или 1, чтобы включить телеметрию. Любое другое значение считается отключением.Переопределяет параметр telemetry.enabled.
QWEN_TELEMETRY_TARGETЗадаёт информационную метку для назначения телеметрии (local или gcp). Не управляет маршрутизацией; используйте QWEN_TELEMETRY_OTLP_ENDPOINT или QWEN_TELEMETRY_OUTFILE, чтобы настроить, куда отправляются данные.Переопределяет параметр telemetry.target.
QWEN_TELEMETRY_OTLP_ENDPOINTЗадаёт конечную точку OTLP для телеметрии.Переопределяет параметр telemetry.otlpEndpoint.
QWEN_TELEMETRY_OTLP_PROTOCOLЗадаёт протокол OTLP (grpc или http).Переопределяет параметр telemetry.otlpProtocol.
QWEN_TELEMETRY_LOG_PROMPTSУстановите в true или 1, чтобы включить или отключить логирование пользовательских запросов. Любое другое значение считается отключением.Переопределяет параметр telemetry.logPrompts.
QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTESУстановите в true или 1, чтобы прикреплять дословные пользовательские запросы, системные запросы, ввод/вывод инструментов и ответы модели к собственным атрибутам span OTel (а также сохранять prompt / function_args / response_text в bridge-спанах логов в span). Любое другое значение отключает это.Переопределяет параметр telemetry.includeSensitiveSpanAttributes.
Если оба пользовательских файла .env определяют одну и ту же переменную, побеждает файл, специфичный для Qwen: <QWEN_HOME>/.env (или ~/.qwen/.env, если QWEN_HOME не задан) загружается раньше, чем ~/.env, и существующие значения переменных окружения не перезаписываются.

Аргументы командной строки

Аргументы, переданные непосредственно при запуске CLI, могут переопределять другие настройки для данной конкретной сессии.

Для выбора образа sandbox приоритет следующий: --sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > встроенный образ по умолчанию.

Таблица аргументов командной строки

АргументПсевдонимОписаниеВозможные значенияПримечания
--model-mУказывает модель Qwen, которая будет использоваться в этой сессии.Имя моделиПример: npm start -- --model qwen3-coder-plus
--prompt-pИспользуется для передачи промпта непосредственно в команду. При этом Qwen Code запускается в неинтерактивном режиме.Текст вашего промптаДля примеров скриптов используйте флаг --output-format json для получения структурированного вывода.
--prompt-interactive-iЗапускает интерактивную сессию с указанным промптом в качестве начального ввода.Текст вашего промптаПромпт обрабатывается внутри интерактивной сессии, а не до неё. Нельзя использовать при передаче ввода из stdin. Пример: qwen -i "объясни этот код"
--system-promptПереопределяет встроенный системный промпт основной сессии для этого запуска.Текст вашего промптаЗагруженные контекстные файлы, такие как QWEN.md, всё равно добавляются после этого переопределения. Можно комбинировать с --append-system-prompt.
--append-system-promptДобавляет дополнительные инструкции к системному промпту основной сессии для этого запуска.Текст вашего промптаПрименяется после встроенного промпта и загруженных контекстных файлов. Можно комбинировать с --system-prompt. Примеры см. в разделе Headless Mode.
--output-format-oУказывает формат вывода CLI для неинтерактивного режима.text, json, stream-jsontext: (по умолчанию) Стандартный человекочитаемый вывод. json: Машиночитаемый JSON-вывод, отправляемый в конце выполнения. stream-json: Потоковые JSON-сообщения, отправляемые по мере выполнения. Для структурированного вывода и написания скриптов используйте флаг --output-format json или --output-format stream-json. Подробнее см. в разделе Headless Mode.
--input-formatУказывает формат, потребляемый из стандартного ввода.text, stream-jsontext: (по умолчанию) Стандартный текстовый ввод из stdin или аргументов командной строки. stream-json: Протокол JSON-сообщений через stdin для двунаправленной связи. Требование: --input-format stream-json требует установки --output-format stream-json. При использовании stream-json stdin зарезервирован для сообщений протокола. Подробнее см. в разделе Headless Mode.
--include-partial-messagesВключает частичные сообщения ассистента при использовании формата вывода stream-json. Если включено, отправляет события потока (message_start, content_block_delta и т.д.) по мере их возникновения во время стриминга.По умолчанию: false. Требование: требуется установка --output-format stream-json. Подробнее о событиях потока см. в разделе Headless Mode.
--sandbox-sВключает режим sandbox для этой сессии.
--sandbox-imageУстанавливает URI образа sandbox.
--debug-dВключает отладочный режим для этой сессии, обеспечивая более подробный вывод.
--all-files-aЕсли установлено, рекурсивно включает все файлы в текущем каталоге в качестве контекста для промпта.
--help-hОтображает справочную информацию об аргументах командной строки.
--show-memory-usageОтображает текущее использование памяти.
--yoloВключает режим YOLO, который автоматически одобряет все вызовы инструментов.
--approval-modeУстанавливает режим одобрения для вызовов инструментов.plan, default, auto-edit, auto, yoloПоддерживаемые режимы: plan: только анализ — не изменять файлы и не выполнять команды. default: требовать одобрения для редактирования файлов или команд оболочки (поведение по умолчанию). auto-edit: автоматически одобрять инструменты редактирования (edit, write_file, notebook_edit), запрашивая одобрение для остальных. auto: классификатор LLM автоматически одобряет безопасные действия и блокирует рискованные. yolo: автоматически одобрять все вызовы инструментов (эквивалент --yolo). Нельзя использовать вместе с --yolo. Вместо --yolo используйте --approval-mode=yolo для нового унифицированного подхода. Пример: qwen --approval-mode auto-edit
Подробнее о режиме одобрения.
--allowed-toolsСписок имён инструментов, разделённых запятыми, которые будут пропускать диалог подтверждения.Имена инструментовПример: qwen --allowed-tools "Shell(git status)"
--disabled-slash-commandsИмена слеш-команд для скрытия/отключения (через запятую или повторением флага). Объединяется с настройкой slashCommands.disabled и переменной окружения QWEN_DISABLED_SLASH_COMMANDS. Регистронезависимое сравнение с финальным именем команды.Имена командПример: qwen --disabled-slash-commands "auth,mcp,extensions"
--telemetryВключает телеметрию.
--telemetry-targetУстанавливает цель телеметрии.Дополнительную информацию см. в разделе телеметрия.
--telemetry-otlp-endpointУстанавливает конечную точку OTLP для телеметрии.Дополнительную информацию см. в разделе телеметрия.
--telemetry-otlp-protocolУстанавливает протокол OTLP для телеметрии (grpc или http).По умолчанию grpc. Дополнительную информацию см. в разделе телеметрия.
--telemetry-log-promptsВключает запись промптов для телеметрии.Дополнительную информацию см. в разделе телеметрия.
--acpВключает режим ACP (Agent Client Protocol). Полезен для интеграции с IDE/редакторами, например Zed.Стабильный. Заменяет устаревший флаг --experimental-acp.
--experimental-lspВключает экспериментальный LSP (Language Server Protocol) для интеллектуальной работы с кодом (переход к определению, поиск ссылок, диагностика и т.д.).Экспериментальный. Требует установки языковых серверов.
--extensions-eУказывает список расширений для использования в сессии.Имена расширенийЕсли не указано, используются все доступные расширения. Используйте специальный термин qwen -e none, чтобы отключить все расширения. Пример: qwen -e my-extension -e my-other-extension
--list-extensions-lВыводит список всех доступных расширений и завершает работу.
--proxyУстанавливает прокси для CLI.URL проксиПример: --proxy http://localhost:7890.
--include-directoriesВключает дополнительные каталоги в рабочую область для поддержки нескольких каталогов.Пути к каталогамМожно указать несколько раз или через запятую. Максимум можно добавить 5 каталогов. Пример: --include-directories /path/to/project1,/path/to/project2 или --include-directories /path/to/project1 --include-directories /path/to/project2
--screen-readerВключает режим экранного диктора, который адаптирует TUI для лучшей совместимости с программами чтения с экрана.
--versionОтображает версию CLI.
--openai-loggingВключает логирование вызовов API OpenAI для отладки и анализа.Этот флаг переопределяет настройку enableOpenAILogging в settings.json.
--openai-logging-dirУстанавливает пользовательский путь к каталогу для логов API OpenAI.Путь к каталогуЭтот флаг переопределяет настройку openAILoggingDir в settings.json. Поддерживаются абсолютные пути, относительные пути и расширение ~. Пример: qwen --openai-logging-dir "~/qwen-logs" --openai-logging

Контекстные файлы (иерархический инструктивный контекст)

Хотя это не является строгой конфигурацией поведения CLI, контекстные файлы (по умолчанию QWEN.md, но настраиваются через параметр context.fileName) имеют решающее значение для настройки инструктивного контекста (также называемого “памятью”). Эта мощная функция позволяет передавать ИИ проектно-специфичные инструкции, руководства по стилю кодирования или любую релевантную фоновую информацию, делая его ответы более адаптированными и точными под ваши нужды. CLI включает элементы пользовательского интерфейса, такие как индикатор в нижнем колонтитуле, показывающий количество загруженных контекстных файлов, чтобы вы были в курсе активного контекста.

  • Назначение: Эти Markdown-файлы содержат инструкции, руководства или контекст, который вы хотите, чтобы модель Qwen учитывала во время взаимодействия. Система предназначена для иерархического управления этим инструктивным контекстом.

Пример содержимого контекстного файла (например, QWEN.md)

Вот концептуальный пример того, что может содержать контекстный файл в корне TypeScript-проекта:

# Проект: Моя классная библиотека TypeScript ## Общие инструкции: - При генерации нового кода TypeScript, пожалуйста, придерживайтесь существующего стиля кодирования. - Убедитесь, что все новые функции и классы имеют комментарии JSDoc. - Отдавайте предпочтение парадигмам функционального программирования, где это уместно. - Весь код должен быть совместим с TypeScript 5.0 и Node.js 22+. ## Стиль кодирования: - Используйте отступы в 2 пробела. - Имена интерфейсов должны иметь префикс `I` (например, `IUserService`). - Приватные члены классов должны иметь префикс подчеркивания (`_`). - Всегда используйте строгое равенство (`===` и `!==`). ## Конкретный компонент: `src/api/client.ts` - Этот файл обрабатывает все исходящие API-запросы. - При добавлении новых функций вызовов API убедитесь, что они включают надежную обработку ошибок и логирование. - Используйте существующую утилиту `fetchWithRetry` для всех GET-запросов. ## Относительно зависимостей: - Избегайте внедрения новых внешних зависимостей, если это не абсолютно необходимо. - Если требуется новая зависимость, пожалуйста, укажите причину.

Этот пример демонстрирует, как вы можете предоставить общий контекст проекта, конкретные соглашения по кодированию и даже заметки об определенных файлах или компонентах. Чем более релевантны и точны ваши контекстные файлы, тем лучше ИИ сможет вам помочь. Настоятельно рекомендуется использовать проектно-специфичные контекстные файлы для установления соглашений и контекста.

  • Иерархическая загрузка и приоритет: CLI реализует иерархическую систему памяти, загружая контекстные файлы (например, QWEN.md) из нескольких местоположений. Содержимое файлов, расположенных ниже в этом списке (более специфичные), обычно переопределяет или дополняет содержимое из файлов, расположенных выше (более общие). Точный порядок объединения и итоговый контекст можно просмотреть в диалоге /memory. Типичный порядок загрузки:
    1. Глобальный контекстный файл:
      • Расположение: ~/.qwen/<настроенное-имя-контекстного-файла> (например, ~/.qwen/QWEN.md в вашей домашней директории).
      • Область действия: Предоставляет инструкции по умолчанию для всех ваших проектов.
    2. Контекстные файлы корня проекта и родительских директорий:
      • Расположение: CLI ищет настроенный контекстный файл в текущей рабочей директории, а затем в каждой родительской директории вплоть до корня проекта (определяется по папке .git) или вашей домашней директории.
      • Область действия: Предоставляет контекст, релевантный для всего проекта или его значительной части.
  • Объединение и индикация в UI: Содержимое всех найденных контекстных файлов объединяется (с разделителями, указывающими их происхождение и путь) и передается как часть системного промпта. Нижний колонтитул CLI отображает количество загруженных контекстных файлов, давая вам быструю визуальную подсказку об активном инструктивном контексте.
  • Импорт содержимого: Вы можете модуляризировать свои контекстные файлы, импортируя другие Markdown-файлы с помощью синтаксиса @path/to/file.md. Для получения дополнительной информации см. Документацию по памяти.
  • Команды для управления памятью:
    • Используйте /memory, чтобы открыть диалог управления памятью.
    • Обновите память из диалога, чтобы повторно просканировать и перезагрузить контекстные файлы из всех настроенных местоположений.
    • См. Документацию по командам для получения полной информации о команде /memory.

Понимая и используя эти уровни конфигурации и иерархическую природу контекстных файлов, вы сможете эффективно управлять памятью ИИ и адаптировать ответы Qwen Code под свои конкретные потребности и проекты.

Песочница

Qwen Code может выполнять потенциально опасные операции (например, команды оболочки и модификацию файлов) в изолированной среде (песочнице) для защиты вашей системы.

Песочница отключена по умолчанию, но вы можете включить ее несколькими способами:

  • Используя флаг --sandbox или -s.
  • Установив переменную окружения QWEN_SANDBOX.
  • Установив параметр tools.sandbox в настройках.

⚠️ --yolo не включает автоматически песочницу. Режим YOLO только автоматически одобряет вызовы инструментов; использование песочницы по-прежнему должно быть явно выбрано через --sandbox, QWEN_SANDBOX или tools.sandbox. При безголовых/неинтерактивных запусках с --yolo (или --approval-mode=yolo) и без песочницы модель может выполнять инструменты оболочки, записи и редактирования на уровне привилегий текущего процесса — в этом случае Qwen Code выводит предупреждение в stderr. Подавите его с помощью QWEN_CODE_SUPPRESS_YOLO_WARNING=1, как только вы оцените компромисс. По умолчанию используется предварительно собранный Docker-образ qwen-code-sandbox.

Для изолированного окружения, специфичного для проекта, вы можете создать собственный Dockerfile по пути .qwen/sandbox.Dockerfile в корневой директории проекта. Этот Dockerfile может быть основан на базовом образе песочницы:

FROM qwen-code-sandbox # Add your custom dependencies or configurations here # For example: # RUN apt-get update && apt-get install -y some-package # COPY ./my-config /app/my-config

Когда файл .qwen/sandbox.Dockerfile существует, вы можете использовать переменную окружения BUILD_SANDBOX при запуске Qwen Code, чтобы автоматически собрать собственный образ песочницы:

BUILD_SANDBOX=1 qwen -s

Статистика использования

Чтобы помочь нам улучшить Qwen Code, мы собираем анонимизированную статистику использования. Эти данные помогают понять, как используется CLI, выявить распространенные проблемы и определить приоритеты новых функций.

Что мы собираем:

  • Вызовы инструментов: Мы регистрируем названия вызываемых инструментов, успешность их выполнения и время выполнения. Мы не собираем аргументы, переданные инструментам, или любые возвращаемые ими данные.
  • API-запросы: Мы регистрируем модель, использованную для каждого запроса, длительность запроса и его успешность. Мы не собираем содержимое промптов или ответов.
  • Информация о сессии: Мы собираем информацию о конфигурации CLI, например, включенные инструменты и режим подтверждения.

Что мы НЕ собираем:

  • Личная информация (PII): Мы не собираем никакую личную информацию, такую как ваше имя, адрес электронной почты или API-ключи.
  • Содержимое промптов и ответов: Мы не регистрируем содержимое ваших промптов или ответов модели.
  • Содержимое файлов: Мы не регистрируем содержимое файлов, которые читаются или записываются CLI.

Как отказаться от сбора:

Вы можете в любой момент отказаться от сбора статистики использования, установив свойство usageStatisticsEnabled в false в категории privacy вашего файла settings.json:

{ "privacy": { "usageStatisticsEnabled": false } }
Note

Когда сбор статистики использования включен, события отправляются на конечную точку сбора Alibaba Cloud RUM.

Last updated on