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

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

Tip

Аутентификация / API-ключи: Сведения об аутентификации (Qwen OAuth, план Alibaba Cloud Coding или API-ключ) и связанные с ней переменные окружения (например, 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.

Общие настройки

ПараметрТипОписаниеПо умолчанию
general.preferredEditorстрокаПредпочтительный редактор для открытия файлов.undefined
general.vimModeлогическийВключить клавиатурные сокращения Vim.false
general.enableAutoUpdateлогическийВключить автоматическую проверку обновлений и их установку при запуске.true
general.gitCoAuthorлогическийАвтоматически добавлять строку Co-authored-by в сообщения коммитов Git при выполнении коммитов через Qwen Code.true
general.checkpointing.enabledлогическийВключить контрольные точки сеанса для восстановления.false
general.defaultFileEncodingстрокаКодировка по умолчанию для новых файлов. Используйте "utf-8" (по умолчанию) для UTF-8 без BOM или "utf-8-bom" для UTF-8 с BOM. Изменяйте этот параметр только если ваш проект явно требует BOM."utf-8"

output

ПараметрТипОписаниеПо умолчаниюВозможные значения
output.formatстрокаФормат вывода CLI."text""text", "json"

ui

ПараметрТипОписаниеПо умолчанию
ui.themeстрокаЦветовая тема интерфейса. Доступные варианты см. в разделе Темы.undefined
ui.customThemesобъектОпределения пользовательских тем.{}
ui.hideWindowTitleлогическоеСкрыть строку заголовка окна.false
ui.hideTipsлогическоеСкрыть справочные подсказки в интерфейсе.false
ui.hideBannerлогическоеСкрыть баннер приложения.false
ui.hideFooterлогическоеСкрыть нижний колонтитул интерфейса.false
ui.showMemoryUsageлогическоеОтображать информацию об использовании памяти в интерфейсе.false
ui.showLineNumbersлогическоеОтображать номера строк в блоках кода в выводе CLI.true
ui.showCitationsлогическоеОтображать ссылки на источники для сгенерированного текста в чате.true
enableWelcomeBackлогическоеПоказывать диалог «Добро пожаловать обратно» при возврате к проекту с историей переписки. При включении Qwen Code автоматически определяет, возвращаетесь ли вы к проекту, для которого ранее был сгенерирован сводный отчёт (.qwen/PROJECT_SUMMARY.md), и показывает диалог, позволяющий продолжить предыдущий разговор или начать заново. Эта функция интегрируется с командой /summary и диалогом подтверждения выхода.true
ui.accessibility.enableLoadingPhrasesлогическоеВключить фразы загрузки (отключить для улучшения доступности).true
ui.accessibility.screenReaderлогическоеВключает режим экранных читалок, который адаптирует TUI для лучшей совместимости с экранными читалками.false
ui.customWittyPhrasesмассив строкСписок пользовательских фраз, отображаемых во время состояния загрузки. При указании CLI будет циклически перебирать эти фразы вместо стандартных.[]

ide

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

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

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

model

ПараметрТипОписаниеПо умолчанию
model.nameстрокаМодель Qwen, используемая для диалогов.undefined
model.maxSessionTurnsчислоМаксимальное количество ходов «пользователь/модель/инструмент» в одной сессии. Значение -1 означает неограниченное количество.-1
model.generationConfigобъектДополнительные параметры, передаваемые в базовый генератор контента. Поддерживает управление запросами: timeout, maxRetries, enableCacheControl, contextWindowSize (переопределение размера окна контекста модели), modalities (переопределение автоматически определённых типов входных данных), customHeaders (пользовательские HTTP-заголовки для API-запросов), extra_body (дополнительные параметры тела запроса — только для API, совместимых с OpenAI), а также настройки выборки в samplingParams (например, temperature, top_p, max_tokens). Оставьте пустым, чтобы использовать значения по умолчанию от провайдера.undefined
model.chatCompression.contextPercentageThresholdчислоПорог сжатия истории чата в процентах от общего лимита токенов модели. Это значение от 0 до 1, применяемое как при автоматическом сжатии, так и при ручной команде /compress. Например, значение 0.6 активирует сжатие, когда объём истории чата превышает 60 % лимита токенов. Установите 0, чтобы полностью отключить сжатие.0.7
model.skipNextSpeakerCheckлогическийПропускает следующую проверку говорящего.false
model.skipLoopDetectionлогическийОтключает проверку зацикливания. Эта проверка предотвращает бесконечные циклы в ответах ИИ, но может вызывать ложные срабатывания, прерывающие корректные рабочие процессы. Включите этот параметр, если часто сталкиваетесь с ложными срабатываниями.false
model.skipStartupContextлогическийПропускает отправку стартового контекста рабочей области (резюме среды и подтверждение) в начале каждой сессии. Включите этот параметр, если предпочитаете задавать контекст вручную или хотите сэкономить токены при старте.false
model.enableOpenAILoggingлогическийВключает логирование вызовов OpenAI API для отладки и анализа. При включении запросы и ответы API записываются в JSON-файлы.false
model.openAILoggingDirстрокаПользовательский путь к каталогу для логов OpenAI API. Если не указан, используется значение по умолчанию — logs/openai в текущем рабочем каталоге. Поддерживает абсолютные пути, относительные пути (разрешаются относительно текущего рабочего каталога) и расширение ~ (каталог пользователя).undefined

Пример model.generationConfig:

{ "model": { "generationConfig": { "timeout": 60000, "contextWindowSize": 128000, "modalities": { "image": true }, "enableCacheControl": true, "customHeaders": { "X-Client-Request-ID": "req-123" }, "extra_body": { "enable_thinking": true }, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }

contextWindowSize:

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

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

контекст

ПараметрТипОписаниеПо умолчанию
context.fileNameстрока или массив строкИмя(я) файла(ов) контекста.undefined
context.importFormatстрокаФормат, используемый при импорте памяти.undefined
context.includeDirectoriesмассивДополнительные каталоги, включаемые в контекст рабочей области. Указывает массив дополнительных абсолютных или относительных путей, которые будут включены в контекст рабочей области. Отсутствующие каталоги по умолчанию будут пропущены с предупреждением. В путях можно использовать ~ для обозначения домашнего каталога пользователя. Этот параметр можно комбинировать с флагом командной строки --include-directories.[]
context.loadFromIncludeDirectoriesлогическое значениеУправляет поведением команды /memory refresh. При значении true файлы QWEN.md загружаются из всех добавленных каталогов. При значении false файлы QWEN.md загружаются только из текущего каталога.false
context.fileFiltering.respectGitIgnoreлогическое значениеУчитывать файлы .gitignore при поиске.true
context.fileFiltering.respectQwenIgnoreлогическое значениеУчитывать файлы .qwenignore при поиске.true
context.fileFiltering.enableRecursiveFileSearchлогическое значениеВключить рекурсивный поиск файлов по имени в текущем дереве при автозавершении префиксов @ в запросе.true
context.fileFiltering.enableFuzzySearchлогическое значениеПри значении true включает возможности нечёткого поиска при поиске файлов. Установите значение false, чтобы повысить производительность в проектах с большим количеством файлов.true

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

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

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

Инструменты

ПараметрТипОписаниеПо умолчаниюПримечания
tools.sandboxлогическое или строкаСреда выполнения в песочнице (может быть логическим значением или строкой пути).undefined
tools.shell.enableInteractiveShellлогическоеИспользовать node-pty для интерактивного оболочечного интерфейса. Резервный механизм на основе child_process по-прежнему применяется.false
tools.coreмассив строкПозволяет ограничить набор встроенных инструментов с помощью белого списка. Также можно задавать ограничения, специфичные для отдельных команд, для инструментов, поддерживающих такую функциональность (например, run_shell_command). Например, значение "tools.core": ["run_shell_command(ls -l)"] разрешит выполнение только команды ls -l.undefined
tools.excludeмассив строкИмена инструментов, исключаемых из автоматического обнаружения. Также можно задавать ограничения, специфичные для отдельных команд, для инструментов, поддерживающих такую функциональность (например, run_shell_command). Например, значение "tools.exclude": ["run_shell_command(rm -rf)"] заблокирует выполнение команды rm -rf. Примечание по безопасности: Ограничения, специфичные для команд, указанные в tools.exclude для run_shell_command, основаны на простом строковом сопоставлении и могут быть легко обойдены. Эта функция не является механизмом безопасности, и полагаться на неё при выполнении ненадёжного кода нельзя. Рекомендуется использовать tools.core, чтобы явно указать команды, которые разрешено выполнять.undefined
tools.allowedмассив строкСписок имён инструментов, которые пропускают диалог подтверждения. Это полезно для часто используемых и доверенных инструментов. Например, ["run_shell_command(git)", "run_shell_command(npm test)"] пропустит диалог подтверждения при выполнении любых команд git и npm test.undefined
tools.approvalModeстрокаЗадаёт режим подтверждения по умолчанию для использования инструментов.defaultВозможные значения: plan (только анализ, без изменения файлов или выполнения команд), default (требуется подтверждение перед редактированием файлов или выполнением оболочечных команд), auto-edit (автоматически подтверждать редактирование файлов), yolo (автоматически подтверждать все вызовы инструментов)
tools.discoveryCommandстрокаКоманда для обнаружения инструментов.undefined
tools.callCommandстрокаЗадаёт пользовательскую оболочечную команду для вызова конкретного инструмента, обнаруженного с помощью tools.discoveryCommand. Оболочечная команда должна удовлетворять следующим критериям: первым аргументом командной строки должна быть точная name функции (как указано в объявлении функции ); аргументы функции должны читаться как JSON из stdin, аналогично functionCall.args; результат функции должен выводиться как JSON в stdout, аналогично functionResponse.response.content.undefined
tools.useRipgrepлогическоеИспользовать ripgrep для поиска содержимого файлов вместо резервной реализации. Обеспечивает более высокую производительность поиска.true
tools.useBuiltinRipgrepлогическоеИспользовать встроенную бинарную версию ripgrep. При значении false будет использоваться системная команда rg. Этот параметр действует только при значении tools.useRipgrep равном true.true
tools.truncateToolOutputThresholdчислоОбрезать вывод инструмента, если он превышает указанное количество символов. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles.25000Требует перезапуска: Да
tools.truncateToolOutputLinesчислоМаксимальное количество строк или записей, сохраняемых при обрезке вывода инструмента. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles.1000Требует перезапуска: Да

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.

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

Конфигурация сервера LSP выполняется через файлы .lsp.json в корневом каталоге проекта, а не через settings.json. Подробные сведения о конфигурации и примеры приведены в документации по LSP.

Безопасность

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

расширенные параметры

ПараметрТипОписаниеЗначение по умолчанию
advanced.autoConfigureMemorybooleanАвтоматическая настройка лимитов памяти Node.js.false
advanced.dnsResolutionOrderстрокаПорядок разрешения DNS-имён.undefined
advanced.excludedEnvVarsмассив строкПеременные окружения, исключаемые из контекста проекта. Указывает переменные окружения, которые не должны загружаться из файлов .env проекта. Это предотвращает влияние переменных окружения, специфичных для проекта (например, DEBUG=true), на поведение CLI. Переменные из файлов .qwen/.env никогда не исключаются.["DEBUG","DEBUG_MODE"]
advanced.bugCommandобъектКонфигурация команды отправки отчётов об ошибках. Переопределяет URL команды /bug по умолчанию. Свойства: urlTemplate (строка) — URL-адрес, в котором могут использоваться заполнители {title} и {info}. Пример: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined
advanced.tavilyApiKeyстрокаКлюч API для веб-поискового сервиса Tavily. Используется для включения функциональности инструмента web_search.undefined
Note

Примечание о параметре advanced.tavilyApiKey: Это устаревший формат конфигурации. Для пользователей Qwen с OAuth провайдер DashScope автоматически доступен без какой-либо дополнительной настройки. Для других типов аутентификации настройте провайдеры Tavily или Google с помощью нового формата конфигурации webSearch.

mcpServers

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

СвойствоТипОписаниеНеобязательно
mcpServers.<SERVER_NAME>.commandстрокаКоманда для запуска сервера MCP через стандартный ввод-вывод.Да
mcpServers.<SERVER_NAME>.argsмассив строкАргументы, передаваемые команде.Да
mcpServers.<SERVER_NAME>.envобъектПеременные окружения, устанавливаемые для процесса сервера.Да
mcpServers.<SERVER_NAME>.cwdстрокаРабочая директория, в которой будет запущен сервер.Да
mcpServers.<SERVER_NAME>.urlстрокаURL сервера MCP, использующего Server-Sent Events (SSE) для взаимодействия.Да
mcpServers.<SERVER_NAME>.httpUrlстрокаURL сервера MCP, использующего потоковую HTTP-передачу для взаимодействия.Да
mcpServers.<SERVER_NAME>.headersобъектКарта HTTP-заголовков, отправляемых вместе с запросами к url или httpUrl.Да
mcpServers.<SERVER_NAME>.timeoutчислоТаймаут в миллисекундах для запросов к этому серверу MCP.Да
mcpServers.<SERVER_NAME>.trustлогическоеДоверять этому серверу и пропускать все подтверждения вызовов инструментов.Да
mcpServers.<SERVER_NAME>.descriptionстрокаКраткое описание сервера, которое может использоваться для отображения.Да
mcpServers.<SERVER_NAME>.includeToolsмассив строкСписок имён инструментов, которые следует включить из этого сервера MCP. При указании будут доступны только перечисленные здесь инструменты (поведение «белого списка»). Если не указано, по умолчанию доступны все инструменты с сервера.Да
mcpServers.<SERVER_NAME>.excludeToolsмассив строкСписок имён инструментов, которые следует исключить из этого сервера MCP. Инструменты из этого списка недоступны модели, даже если они предоставляются сервером. Примечание: excludeTools имеет приоритет над includeTools: если инструмент указан в обоих списках, он будет исключён.Да

телеметрия

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

ПараметрТипОписаниеПо умолчанию
telemetry.enabledbooleanВключена ли телеметрия.
telemetry.targetstringНазначение для собираемой телеметрии. Поддерживаемые значения: local и gcp.
telemetry.otlpEndpointstringКонечная точка экспортера OTLP.
telemetry.otlpProtocolstringПротокол экспортера OTLP (grpc или http).
telemetry.logPromptsbooleanВключать ли содержимое пользовательских запросов в журналы.
telemetry.outfilestringФайл, в который записывается телеметрия при значении target равном local.
telemetry.useCollectorbooleanИспользовать ли внешний коллектор OTLP.

Пример файла settings.json

Ниже приведён пример файла settings.json с вложенной структурой, появившейся начиная с версии 0.3.0:

{ "general": { "vimMode": true, "preferredEditor": "code" }, "ui": { "theme": "GitHub", "hideTips": false, "customWittyPhrases": [ "Вы забываете тысячу вещей каждый день. Убедитесь, что эта — одна из них", "Подключение к ИИО" ] }, "tools": { "approvalMode": "yolo", "sandbox": "docker", "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 }, "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.excludedEnvVars в файле settings.json.

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

ПеременнаяОписаниеПримечания
QWEN_TELEMETRY_ENABLEDУстановите значение true или 1, чтобы включить телеметрию. Любое другое значение считается отключением.Переопределяет настройку telemetry.enabled.
QWEN_TELEMETRY_TARGETЗадаёт цель телеметрии (local или gcp).Переопределяет настройку 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_OUTFILEЗадаёт путь к файлу, в который будет записываться телеметрия при цели local.Переопределяет настройку telemetry.outfile.
QWEN_TELEMETRY_USE_COLLECTORУстановите значение true или 1, чтобы включить или отключить использование внешнего сборщика OTLP. Любое другое значение считается отключением.Переопределяет настройку telemetry.useCollector.
QWEN_SANDBOXАльтернатива настройке sandbox в файле settings.json.Допустимые значения: true, false, docker, podman или строка с пользовательской командой.
SEATBELT_PROFILE(только для macOS) Переключает профиль Seatbelt (sandbox-exec) в macOS.permissive-open: (по умолчанию) Ограничивает запись только в папку проекта (и несколько других папок — см. packages/cli/src/utils/sandbox-macos-permissive-open.sb), но разрешает другие операции. strict: Использует строгий профиль, который по умолчанию запрещает все операции. <profile_name>: Использует пользовательский профиль. Чтобы определить пользовательский профиль, создайте файл с именем sandbox-macos-<profile_name>.sb в каталоге .qwen/ вашего проекта (например, my-project/.qwen/sandbox-macos-custom.sb).
DEBUG или DEBUG_MODE(часто используется базовыми библиотеками или самим CLI) Установите значение true или 1, чтобы включить подробное отладочное логирование, полезное при устранении неполадок.Примечание: Эти переменные по умолчанию автоматически исключаются из файлов .env проекта, чтобы предотвратить влияние на поведение CLI. Если вам нужно задать их именно для Qwen Code, используйте файлы .qwen/.env.
NO_COLORУстановите любое значение, чтобы отключить цветной вывод в CLI.
CLI_TITLEУстановите строку, чтобы настроить заголовок CLI.
CODE_ASSIST_ENDPOINTЗадаёт конечную точку сервера ассистента по коду.Полезно при разработке и тестировании.
TAVILY_API_KEYВаш API-ключ для веб-поиска Tavily.Используется для включения функциональности инструмента web_search. Пример: export TAVILY_API_KEY="tvly-your-api-key-here"

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

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

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

АргументПсевдонимОписаниеВозможные значенияПримечания
--model-mУказывает модель Qwen, используемую в текущей сессии.Имя моделиПример: npm start -- --model qwen3-coder-plus
--prompt-pПередаёт промпт напрямую в команду. Запускает Qwen Code в неинтерактивном режиме.Текст промптаДля примеров скриптов используйте флаг --output-format json, чтобы получить структурированный вывод.
--prompt-interactive-iЗапускает интерактивную сессию, используя указанный промпт как начальный ввод.Текст промптаПромпт обрабатывается внутри интерактивной сессии, а не до её начала. Нельзя использовать при передаче ввода через stdin. Пример: qwen -i "объясни этот код"
--output-format-oЗадаёт формат вывода CLI в неинтерактивном режиме.text, json, stream-jsontext: (по умолчанию) стандартный человекочитаемый вывод. json: машинно-читаемый JSON-вывод, выдаваемый по завершении выполнения. stream-json: потоковые JSON-сообщения, выдаваемые по мере их генерации во время выполнения. Для структурированного вывода и скриптового использования применяйте флаг --output-format json или --output-format stream-json. Подробнее см. раздел Режим без интерфейса.
--input-formatЗадаёт формат данных, считываемых из стандартного ввода.text, stream-jsontext: (по умолчанию) стандартный текстовый ввод из stdin или аргументов командной строки. stream-json: протокол JSON-сообщений через stdin для двусторонней коммуникации. Требование: --input-format stream-json требует установки --output-format stream-json. При использовании stream-json stdin зарезервирован для сообщений протокола. Подробнее см. раздел Режим без интерфейса.
--include-partial-messagesВключает частичные сообщения ассистента при использовании формата вывода stream-json. При включении выдаются события потока (message_start, content_block_delta и т.д.) по мере их возникновения.По умолчанию: false. Требование: требует установки --output-format stream-json. Подробнее о событиях потока см. раздел Режим без интерфейса.
--sandbox-sВключает режим песочницы для текущей сессии.
--sandbox-imageЗадаёт URI образа песочницы.
--debug-dВключает режим отладки для текущей сессии, обеспечивая более подробный вывод.
--all-files-aЕсли установлен, рекурсивно включает все файлы в текущем каталоге в качестве контекста для промпта.
--help-hОтображает справочную информацию об аргументах командной строки.
--show-memory-usageОтображает текущее использование памяти.
--yoloВключает режим YOLO, который автоматически подтверждает все вызовы инструментов.
--approval-modeЗадаёт режим подтверждения вызовов инструментов.plan, default, auto-edit, yoloПоддерживаемые режимы: plan: только анализ — файлы не изменяются и команды не выполняются. default: требуется подтверждение при редактировании файлов или выполнении команд оболочки (поведение по умолчанию). auto-edit: автоматически подтверждаются инструменты редактирования (edit, write_file), остальные запрашиваются у пользователя. yolo: автоматически подтверждаются все вызовы инструментов (эквивалентно --yolo). Не может использоваться совместно с --yolo. Для нового унифицированного подхода используйте --approval-mode=yolo вместо --yolo. Пример: qwen --approval-mode auto-edit
Подробнее см. раздел Режим подтверждения.
--allowed-toolsСписок имён инструментов, разделённый запятыми, которые будут пропускать диалог подтверждения.Имена инструментовПример: qwen --allowed-tools "Shell(git status)"
--telemetryВключает телеметрию.
--telemetry-targetЗадаёт цель телеметрии.Подробнее см. раздел телеметрия.
--telemetry-otlp-endpointЗадаёт конечную точку OTLP для телеметрии.Подробнее см. раздел телеметрия.
--telemetry-otlp-protocolЗадаёт протокол OTLP для телеметрии (grpc или http).По умолчанию: grpc. Подробнее см. раздел телеметрия.
--telemetry-log-promptsВключает логирование промптов для телеметрии.Подробнее см. раздел телеметрия.
--checkpointingВключает контрольные точки.
--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Включает логирование вызовов OpenAI API для отладки и анализа.Этот флаг переопределяет настройку enableOpenAILogging в файле settings.json.
--openai-logging-dirЗадаёт пользовательский путь к каталогу для логов OpenAI API.Путь к каталогуЭтот флаг переопределяет настройку openAILoggingDir в файле settings.json. Поддерживает абсолютные пути, относительные пути и раскрытие ~. Пример: qwen --openai-logging-dir "~/qwen-logs" --openai-logging
--tavily-api-keyЗадаёт ключ API Tavily для функционала веб-поиска в текущей сессии.Ключ APIПример: qwen --tavily-api-key tvly-your-api-key-here

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

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

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

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

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

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

О зависимостях:

  • Избегайте добавления новых внешних зависимостей, если это не абсолютно необходимо.
  • Если новая зависимость всё же требуется, укажите причину её введения.
В этом примере показано, как можно предоставить общие сведения о проекте, конкретные соглашения по написанию кода и даже примечания к отдельным файлам или компонентам. Чем более релевантными и точными будут ваши файлы контекста, тем лучше ИИ сможет вам помочь. Для установления соглашений и контекста настоятельно рекомендуется использовать файлы контекста, специфичные для проекта. - **Иерархическая загрузка и приоритет:** CLI реализует иерархическую систему памяти, загружая файлы контекста (например, `QWEN.md`) из нескольких расположений. Содержимое файлов, перечисленных ниже в этом списке (более специфичных), как правило, переопределяет или дополняет содержимое файлов, указанных выше (более общих). Точный порядок объединения и итоговый контекст можно проверить с помощью команды `/memory show`. Типичный порядок загрузки: 1. **Глобальный файл контекста:** - Расположение: `~/.qwen/<имя-настроенного-файла-контекста>` (например, `~/.qwen/QWEN.md` в домашнем каталоге пользователя). - Область действия: содержит инструкции по умолчанию для всех ваших проектов. 2. **Файлы контекста корня проекта и его родительских каталогов:** - Расположение: CLI ищет настроенный файл контекста в текущем рабочем каталоге, а затем — в каждом родительском каталоге вплоть до корня проекта (определяемого наличием папки `.git`) или до домашнего каталога пользователя. - Область действия: содержит контекст, относящийся ко всему проекту или его значительной части. - **Объединение и индикация в интерфейсе:** Содержимое всех найденных файлов контекста объединяется (с разделителями, указывающими их происхождение и путь) и передаётся как часть системного промпта. В нижнем колонтитуле CLI отображается количество загруженных файлов контекста, что даёт быструю визуальную подсказку об активном инструктивном контексте. - **Импорт содержимого:** Вы можете модульно организовать свои файлы контекста, импортируя другие Markdown-файлы с помощью синтаксиса `@путь/к/файлу.md`. Подробнее см. в [документации по процессору импорта памяти](../configuration/memory). - **Команды управления памятью:** - Используйте `/memory refresh`, чтобы принудительно повторно просканировать и перезагрузить все файлы контекста из всех настроенных расположений. Это обновляет инструктивный контекст ИИ. - Используйте `/memory show`, чтобы отобразить объединённый инструктивный контекст, загруженный в данный момент, что позволяет проверить используемую иерархию и содержимое. - Полные сведения о команде `/memory` и её подкомандах (`show` и `refresh`) см. в [документации по командам](../features/commands). Понимание и использование этих уровней конфигурации, а также иерархической природы файлов контекста позволяют эффективно управлять памятью ИИ и адаптировать ответы Qwen Code под ваши конкретные потребности и проекты. ## Песочница Qwen Code может выполнять потенциально небезопасные операции (например, команды оболочки и модификации файлов) в изолированной среде песочницы для защиты вашей системы. [Песочница](../features/sandbox) отключена по умолчанию, но её можно включить несколькими способами: - С помощью флага `--sandbox` или `-s`. - Установив переменную окружения `QWEN_SANDBOX`. - Песочница включается автоматически при использовании флагов `--yolo` или `--approval-mode=yolo`. По умолчанию используется предварительно собранное Docker-образ `qwen-code-sandbox`. Для проектно-специфических требований к песочнице вы можете создать пользовательский `Dockerfile` по пути `.qwen/sandbox.Dockerfile` в корневом каталоге вашего проекта. Этот `Dockerfile` может быть основан на базовом образе песочницы:

FROM qwen-code-sandbox

Добавьте здесь ваши пользовательские зависимости или конфигурации

Например:

RUN apt-get update && apt-get install -y some-package

# КОПИРОВАТЬ ./my-config /app/my-config

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

BUILD_SANDBOX=1 qwen -s

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

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

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

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

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

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

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

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

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

При включённом сборе статистики события отправляются на конечную точку сбора RUM Alibaba Cloud.

Last updated on