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

Настройка Qwen Code

Tip

Аутентификация / Ключи API: Аутентификация (Qwen OAuth и совместимый с OpenAI 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, например:

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

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

general

ПараметрТипОписаниеПо умолчанию
general.preferredEditorстрокаПредпочтительный редактор для открытия файлов.undefined
general.vimModebooleanВключить сочетания клавиш Vim.false
general.disableAutoUpdatebooleanОтключить автоматические обновления.false
general.disableUpdateNagbooleanОтключить уведомления о необходимости обновления.false
general.gitCoAuthorbooleanАвтоматически добавлять строку Co-authored-by в сообщения коммитов Git при создании коммитов через Qwen Code.true
general.checkpointing.enabledbooleanВключить контрольные точки сеанса для восстановления.false

output

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

ui

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

ide

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

privacy

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

model

ПараметрТипОписаниеПо умолчанию
model.nameстрокаМодель Qwen для использования в разговорах.undefined
model.maxSessionTurnsчислоМаксимальное количество ходов пользователя/модели/инструмента, сохраняемых в сессии. -1 означает неограниченно.-1
model.summarizeToolOutputобъектВключает или отключает суммаризацию вывода инструментов. Вы можете указать бюджет токенов для суммаризации с помощью параметра tokenBudget. Примечание: В настоящее время поддерживается только инструмент run_shell_command. Например, {"run_shell_command": {"tokenBudget": 2000}}undefined
model.generationConfigобъектРасширенные переопределения, передаваемые в основной генератор контента. Поддерживает контроль запросов, такие как timeout, maxRetries, disableCacheControl и customHeaders (пользовательские HTTP-заголовки для API-запросов), а также настройки параметров выборки под 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, "disableCacheControl": false, "customHeaders": { "X-Request-ID": "req-123", "X-User-ID": "user-456" }, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }

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

Примеры model.openAILoggingDir:

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

modelProviders

Используйте modelProviders, чтобы объявить отобранные списки моделей для каждого типа аутентификации, между которыми можно переключаться в /model. Ключи должны быть действительными типами аутентификации (openai, anthropic, gemini, vertex-ai и т.д.). Каждая запись требует id и должна включать envKey, с необязательными полями name, description, baseUrl и generationConfig. Учетные данные никогда не сохраняются в настройках; среда выполнения считывает их из process.env[envKey]. Модели Qwen OAuth остаются жестко закодированными и не могут быть переопределены.

Пример
{ "modelProviders": { "openai": [ { "id": "gpt-4o", "name": "GPT-4o", "envKey": "OPENAI_API_KEY", "baseUrl": "https://api.openai.com/v1", "generationConfig": { "timeout": 60000, "maxRetries": 3, "customHeaders": { "X-Model-Version": "v1.0", "X-Request-Priority": "high" }, "samplingParams": { "temperature": 0.2 } } } ], "anthropic": [ { "id": "claude-3-5-sonnet", "envKey": "ANTHROPIC_API_KEY", "baseUrl": "https://api.anthropic.com/v1" } ], "gemini": [ { "id": "gemini-2.0-flash", "name": "Gemini 2.0 Flash", "envKey": "GEMINI_API_KEY", "baseUrl": "https://generativelanguage.googleapis.com" } ], "vertex-ai": [ { "id": "gemini-1.5-pro-vertex", "envKey": "GOOGLE_API_KEY", "baseUrl": "https://generativelanguage.googleapis.com" } ] } }

[!note] Только команда /model предоставляет доступ к нестандартным типам аутентификации. Anthropic, Gemini, Vertex AI и т. д. должны быть определены через modelProviders. Команда /auth намеренно перечисляет только встроенные потоки Qwen OAuth и OpenAI.

Слои разрешения и атомарность

Эффективные значения auth/model/credential выбираются для каждого поля с использованием следующего приоритета (первый присутствующий побеждает). Вы можете комбинировать --auth-type с --model, чтобы напрямую указать на запись провайдера; эти флаги CLI выполняются до других слоев.

Слой (самый высокий → самый низкий)authTypemodelapiKeybaseUrlapiKeyEnvKeyproxy
Программные переопределения/auth /auth input/auth input/auth input
Выбор провайдера моделиmodelProvider.idenv[modelProvider.envKey]modelProvider.baseUrlmodelProvider.envKey
Аргументы CLI--auth-type--model--openaiApiKey (или эквиваленты для конкретного провайдера)--openaiBaseUrl (или эквиваленты для конкретного провайдера)
Переменные окруженияСопоставление для конкретного провайдера (например, OPENAI_MODEL)Сопоставление для конкретного провайдера (например, OPENAI_API_KEY)Сопоставление для конкретного провайдера (например, OPENAI_BASE_URL)
Настройки (settings.json)security.auth.selectedTypemodel.namesecurity.auth.apiKeysecurity.auth.baseUrl
По умолчанию / вычисленныеВозврат к AuthType.QWEN_OAUTHВстроенное значение по умолчанию (OpenAI ⇒ qwen3-coder-plus)Config.getProxy(), если настроено

*При наличии флаги аутентификации CLI переопределяют настройки. В противном случае, security.auth.selectedType или неявное значение по умолчанию определяют тип аутентификации. Qwen OAuth и OpenAI — единственные типы аутентификации, которые отображаются без дополнительной настройки.

Значения, полученные из провайдера моделей, применяются атомарно: как только модель провайдера становится активной, каждое поле, которое она определяет, защищено от более низких слоев до тех пор, пока вы вручную не очистите учетные данные через /auth. Окончательный generationConfig представляет собой проекцию по всем слоям — более низкие слои заполняют только пробелы, оставленные более высокими, а слой провайдера остается непроницаемым.

Стратегия объединения для modelProviders — ЗАМЕНА: весь раздел modelProviders из настроек проекта заменит соответствующий раздел в пользовательских настройках, а не будет объединяться с ним.

Слойность конфигурации генерации

Приоритетность по полям для generationConfig:

  1. Программные переопределения (например, изменения во время выполнения /model, /auth)
  2. modelProviders[authType][].generationConfig
  3. settings.model.generationConfig
  4. Значения по умолчанию для генератора контента (getDefaultGenerationConfig для OpenAI, getParameterValue для Gemini и т.д.)

samplingParams и customHeaders обрабатываются атомарно; значения провайдера заменяют весь объект. Если modelProviders[].generationConfig определяет эти поля, они используются напрямую; в противном случае используются значения из model.generationConfig. Объединение между уровнями конфигурации провайдера и глобальной конфигурации не происходит. Значения по умолчанию от генератора контента применяются последними, чтобы каждый провайдер сохранял свою настроенную базовую линию.

Постоянство выбора и рекомендации

[!important] По возможности определяйте modelProviders в пользовательской области ~/.qwen/settings.json и избегайте сохранения переопределений учетных данных в любой области. Хранение каталога поставщиков в пользовательских настройках предотвращает конфликты объединения/переопределения между проектной и пользовательской областями и гарантирует, что обновления /auth и /model всегда записываются обратно в согласованную область.

  • /model и /auth сохраняют model.name (где применимо) и security.auth.selectedType в ближайшую доступную для записи область, которая уже определяет modelProviders; в противном случае они возвращаются к пользовательской области. Это позволяет синхронизировать файлы рабочей области/пользователя с активным каталогом поставщиков.
  • Без modelProviders резолвер смешивает уровни CLI/env/settings, что нормально подходит для конфигураций с одним поставщиком, но неудобно при частом переключении. Определяйте каталоги поставщиков всякий раз, когда часто встречаются рабочие процессы с несколькими моделями, чтобы переключения оставались атомарными, с указанием источника и отладочными возможностями.

context

ПараметрТипОписаниеПо умолчанию
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.disableFuzzySearchлогическийКогда установлено значение true, отключает возможность нечеткого поиска при поиске файлов, что может улучшить производительность в проектах с большим количеством файлов.false

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

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

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

tools

ПараметрТипОписаниеПо умолчаниюПримечания
tools.sandboxboolean или строкаИзолированная среда выполнения (может быть логическим значением или строкой пути).undefined
tools.shell.enableInteractiveShellbooleanИспользовать 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. Команда оболочки должна соответствовать следующим критериям: она должна принимать имя функции (точно так же, как в объявлении функций ) в качестве первого аргумента командной строки. Она должна читать аргументы функции в формате JSON из stdin, аналогично functionCall.args. Она должна возвращать вывод функции в формате JSON в stdout, аналогично functionResponse.response.content.undefined
tools.useRipgrepbooleanИспользовать ripgrep для поиска по содержимому файлов вместо резервной реализации. Обеспечивает более быструю работу поиска.true
tools.useBuiltinRipgrepbooleanИспользовать встроенный бинарный файл ripgrep. Если установлено значение false, вместо этого будет использоваться системная команда rg. Этот параметр действует только тогда, когда tools.useRipgrep равно true.true
tools.enableToolOutputTruncationbooleanВключить усечение больших выходных данных инструментов.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. Это не следует использовать как надежный механизм безопасности.

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

ПараметрТипОписаниеПо умолчанию
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
advanced.tavilyApiKeystringКлюч API для веб-поискового сервиса Tavily. Используется для включения функциональности инструмента web_search.undefined
Note

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

experimental

ПараметрТипОписаниеПо умолчанию
experimental.skillsbooleanВключить экспериментальные навыки агентаfalse

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": [ "You forget a thousand things every day. Make sure this is one of 'em", "Connecting to AGI" ] }, "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", "summarizeToolOutput": { "run_shell_command": { "tokenBudget": 100 } } }, "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.

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

ПеременнаяОписаниеПримечания
GEMINI_TELEMETRY_ENABLEDУстановите в true или 1, чтобы включить телеметрию. Любое другое значение будет восприниматься как отключение.Переопределяет настройку telemetry.enabled.
GEMINI_TELEMETRY_TARGETУстанавливает цель телеметрии (local или gcp).Переопределяет настройку telemetry.target.
GEMINI_TELEMETRY_OTLP_ENDPOINTУстанавливает конечную точку OTLP для телеметрии.Переопределяет настройку telemetry.otlpEndpoint.
GEMINI_TELEMETRY_OTLP_PROTOCOLУстанавливает протокол OTLP (grpc или http).Переопределяет настройку telemetry.otlpProtocol.
GEMINI_TELEMETRY_LOG_PROMPTSУстановите в true или 1, чтобы включить или отключить логирование пользовательских запросов. Любое другое значение будет восприниматься как отключение.Переопределяет настройку telemetry.logPrompts.
GEMINI_TELEMETRY_OUTFILEУстанавливает путь к файлу, в который записывается телеметрия при использовании цели local.Переопределяет настройку telemetry.outfile.
GEMINI_TELEMETRY_USE_COLLECTORУстановите в true или 1, чтобы включить или отключить использование внешнего сборщика OTLP. Любое другое значение будет восприниматься как отключение.Переопределяет настройку telemetry.useCollector.
GEMINI_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/.env, если вам нужно установить их специально для Qwen Code.
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-skillsВключает экспериментальные Навыки агента (регистрирует инструмент skill и загружает навыки из .qwen/skills/ и ~/.qwen/skills/).Экспериментально.
--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` - Этот файл обрабатывает все исходящие API-запросы. - При добавлении новых функций вызова API убедитесь, что они включают надежную обработку ошибок и ведение журнала. - Используйте существующую утилиту `fetchWithRetry` для всех GET-запросов.

Что касается зависимостей:

  • Избегайте введения новых внешних зависимостей, если это не является абсолютно необходимым.
  • Если новая зависимость требуется, пожалуйста, укажите причину.
Этот пример демонстрирует, как вы можете предоставить общий контекст проекта, конкретные соглашения по кодированию и даже заметки о конкретных файлах или компонентах. Чем более релевантны и точны ваши файлы контекста, тем лучше ИИ сможет вам помочь. Настоятельно рекомендуется создавать специфичные для проекта файлы контекста, чтобы установить соглашения и контекст. - **Иерархическая загрузка и приоритетность:** 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 может выполнять потенциально небезопасные операции (например, команды оболочки и изменения файлов) в изолированной среде песочницы для защиты вашей системы. Песочница [Sandbox](../features/sandbox) по умолчанию отключена, но вы можете включить её несколькими способами: - С помощью флага `--sandbox` или `-s`. - Установив переменную окружения `GEMINI_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, вы можете использовать переменную окружения 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