Конфигурация Qwen Code
Аутентификация / API-ключи: Сведения об аутентификации (Qwen OAuth, план Alibaba Cloud Coding или API-ключ) и связанные с ней переменные окружения (например, OPENAI_API_KEY) приведены в разделе Аутентификация.
Примечание о новом формате конфигурации: Формат файла settings.json обновлён до нового, более структурированного вида. Старый формат будет автоматически преобразован.
Qwen Code предоставляет несколько способов настройки своего поведения, включая переменные окружения, аргументы командной строки и файлы настроек. В этом документе описаны различные методы конфигурации и доступные параметры.
Слои конфигурации
Конфигурация применяется в следующем порядке приоритета (значения с меньшими номерами переопределяются значениями с большими номерами):
| Уровень | Источник конфигурации | Описание |
|---|---|---|
| 1 | Значения по умолчанию | Жёстко закодированные значения по умолчанию внутри приложения |
| 2 | Системный файл по умолчанию | Системные настройки по умолчанию, которые могут быть переопределены другими файлами настроек |
| 3 | Файл пользовательских настроек | Глобальные настройки для текущего пользователя |
| 4 | Файл настроек проекта | Настройки, специфичные для данного проекта |
| 5 | Системный файл настроек | Системные настройки, которые переопределяют все остальные файлы настроек |
| 6 | Переменные окружения | Системные или сессионные переменные, потенциально загружаемые из файлов .env |
| 7 | Аргументы командной строки | Значения, переданные при запуске CLI |
Файлы настроек
Qwen Code использует файлы настроек в формате JSON для постоянной конфигурации. Существует четыре возможных расположения таких файлов:
| Тип файла | Расположение | Область действия |
|---|---|---|
| Системный файл настроек по умолчанию | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /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 пользователей. |
Примечание об использовании переменных окружения в настройках: Строковые значения в ваших файлах settings.json могут ссылаться на переменные окружения с использованием синтаксиса $VAR_NAME или ${VAR_NAME}. Эти переменные будут автоматически разрешены при загрузке настроек. Например, если у вас определена переменная окружения MY_API_TOKEN, вы можете использовать её в settings.json следующим образом: "apiKey": "$MY_API_TOKEN".
Каталог .qwen в вашем проекте
Помимо файла настроек проекта, каталог .qwen проекта может содержать другие файлы, специфичные для проекта и связанные с работой Qwen Code, например:
- Пользовательские профили песочницы (например,
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Навыки агента в подкаталоге
.qwen/skills/(каждый навык — это каталог, содержащий файлSKILL.md).
Миграция конфигурации
Qwen Code автоматически переносит устаревшие параметры конфигурации в новый формат. Перед миграцией резервные копии старых файлов настроек сохраняются. Следующие параметры были переименованы: вместо отрицательных (disable*) теперь используются положительные (enable*) имена:
| Старый параметр | Новый параметр | Примечания |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Объединены в один параметр |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Инверсия логических значений: При миграции логические значения инвертируются (например, disableAutoUpdate: true становится enableAutoUpdate: false).
Политика объединения для параметров disableAutoUpdate и disableUpdateNag
Если оба устаревших параметра присутствуют и имеют разные значения, миграция выполняется по следующему правилу: если хотя бы один из параметров — disableAutoUpdate или disableUpdateNag — имеет значение true, то enableAutoUpdate становится false:
disableAutoUpdate | disableUpdateNag | Мигрированное значение enableAutoUpdate |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Доступные параметры в файле 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.enabled | boolean | Включить режим интеграции с IDE. | false |
ide.hasSeenNudge | boolean | Показывалось ли пользователю напоминание об интеграции с IDE. | false |
конфиденциальность
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Включить сбор статистики использования. | 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 |
Устранение проблем с производительностью поиска файлов
Если вы сталкиваетесь с проблемами производительности при поиске файлов (например, при использовании автозавершения @), особенно в проектах с очень большим количеством файлов, попробуйте следующие решения в порядке их рекомендованности:
- Используйте файл
.qwenignore: Создайте файл.qwenignoreв корне проекта, чтобы исключить каталоги, содержащие большое количество файлов, на которые вы не ссылаетесь (например, артефакты сборки, логи,node_modules). Сокращение общего числа обрабатываемых файлов — наиболее эффективный способ повышения производительности. - Отключите нечёткий поиск: Если игнорирование файлов недостаточно, отключите нечёткий поиск, установив параметр
enableFuzzySearchв значениеfalseв файлеsettings.json. В этом случае будет использоваться более простой алгоритм точного соответствия, который работает быстрее. - Отключите рекурсивный поиск файлов: В крайнем случае можно полностью отключить рекурсивный поиск файлов, установив параметр
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 |
Примечание по безопасности серверов MCP: Эти параметры используют простое сравнение строк имён серверов MCP, которое может быть изменено. Если вы системный администратор и хотите предотвратить обход этих настроек пользователями, настройте параметр mcpServers на уровне системных настроек так, чтобы пользователи не могли самостоятельно настраивать какие-либо серверы MCP. Данный механизм не следует рассматривать как надёжную меру безопасности.
LSP
[!warning] Экспериментальная функция: Поддержка LSP в настоящее время находится на стадии эксперимента и отключена по умолчанию. Включите её с помощью флага командной строки
--experimental-lsp.
Протокол сервера языка (LSP) предоставляет функции интеллектуальной поддержки кода, такие как переход к определению, поиск ссылок и диагностика.
Конфигурация сервера LSP выполняется через файлы .lsp.json в корневом каталоге проекта, а не через settings.json. Подробные сведения о конфигурации и примеры приведены в документации по LSP.
Безопасность
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
security.folderTrust.enabled | boolean | Параметр, отслеживающий, включено ли доверие к папке. | false |
security.auth.selectedType | string | Текущий выбранный тип аутентификации. | undefined |
security.auth.enforcedType | string | Требуемый тип аутентификации (полезно для корпоративных сред). | undefined |
security.auth.useExternal | boolean | Использовать внешний поток аутентификации. | undefined |
расширенные параметры
| Параметр | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Автоматическая настройка лимитов памяти 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 |
Примечание о параметре 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.enabled | boolean | Включена ли телеметрия. | |
telemetry.target | string | Назначение для собираемой телеметрии. Поддерживаемые значения: local и gcp. | |
telemetry.otlpEndpoint | string | Конечная точка экспортера OTLP. | |
telemetry.otlpProtocol | string | Протокол экспортера OTLP (grpc или http). | |
telemetry.logPrompts | boolean | Включать ли содержимое пользовательских запросов в журналы. | |
telemetry.outfile | string | Файл, в который записывается телеметрия при значении target равном local. | |
telemetry.useCollector | boolean | Использовать ли внешний коллектор 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 см. в разделе Аутентификация.
Исключение переменных окружения: Некоторые переменные окружения (например, 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-json | text: (по умолчанию) стандартный человекочитаемый вывод. json: машинно-читаемый JSON-вывод, выдаваемый по завершении выполнения. stream-json: потоковые JSON-сообщения, выдаваемые по мере их генерации во время выполнения. Для структурированного вывода и скриптового использования применяйте флаг --output-format json или --output-format stream-json. Подробнее см. раздел Режим без интерфейса. |
--input-format | Задаёт формат данных, считываемых из стандартного ввода. | text, stream-json | text: (по умолчанию) стандартный текстовый ввод из 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
}
}При включённом сборе статистики события отправляются на конечную точку сбора RUM Alibaba Cloud.