Конфигурация Qwen Code
Аутентификация / API-ключи: Аутентификация (Qwen OAuth и совместимый с OpenAI 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
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
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
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Включить сбор статистики использования. | 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, enableCacheControl, contextWindowSize (переопределяет размер окна контекста модели), 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,
"enableCacheControl": true,
"customHeaders": {
"X-Request-ID": "req-123",
"X-User-ID": "user-456"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}contextWindowSize:
Переопределяет размер окна контекста по умолчанию для выбранной модели. Qwen Code определяет окно контекста, используя встроенные значения по умолчанию на основе сопоставления имен моделей, с постоянным значением по умолчанию. Используйте этот параметр, когда эффективный лимит контекста провайдера отличается от значения по умолчанию Qwen Code. Это значение определяет предполагаемую максимальную емкость контекста модели, а не лимит токенов на запрос.
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
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"
},
"extra_body": {
"enable_thinking": true
},
"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 выполняются перед другими слоями.
| Слой (самый высокий → самый низкий) | authType | model | apiKey | baseUrl | apiKeyEnvKey | proxy |
|---|---|---|---|---|---|---|
| Программные переопределения | /auth | /auth input | /auth input | /auth input | — | — |
| Выбор поставщика моделей | — | modelProvider.id | env[modelProvider.envKey] | modelProvider.baseUrl | modelProvider.envKey | — |
| Аргументы CLI | --auth-type | --model | --openaiApiKey (или эквиваленты для конкретного провайдера) | --openaiBaseUrl (или эквиваленты для конкретного провайдера) | — | — |
| Переменные окружения | — | Сопоставление для конкретного провайдера (например, OPENAI_MODEL) | Сопоставление для конкретного провайдера (например, OPENAI_API_KEY) | Сопоставление для конкретного провайдера (например, OPENAI_BASE_URL) | — | — |
Настройки (settings.json) | security.auth.selectedType | model.name | security.auth.apiKey | security.auth.baseUrl | — | — |
| По умолчанию / вычисленные | Возврат к AuthType.QWEN_OAUTH | Встроенное значение по умолчанию (OpenAI ⇒ qwen3-coder-plus) | — | — | — | Config.getProxy(), если настроено |
*При наличии флаги CLI для аутентификации переопределяют настройки. В противном случае, security.auth.selectedType или неявное значение по умолчанию определяет тип аутентификации. Qwen OAuth и OpenAI — единственные типы аутентификации, которые отображаются без дополнительной настройки.
Значения, полученные из поставщика моделей, применяются атомарно: как только модель провайдера становится активной, каждое поле, которое она определяет, защищено от более низких слоев до тех пор, пока вы вручную не очистите учетные данные через /auth. Окончательный generationConfig представляет собой проекцию по всем слоям — более низкие слои заполняют только пробелы, оставленные более высокими, а слой провайдера остается непроницаемым.
Стратегия объединения для modelProviders — ЗАМЕНА: весь раздел modelProviders из настроек проекта заменит соответствующий раздел в пользовательских настройках, а не будет объединяться с ним.
Слойность конфигурации генерации
Приоритетность по полям для generationConfig:
- Программные переопределения (например, изменения во время выполнения
/model,/auth) modelProviders[authType][].generationConfigsettings.model.generationConfig- Значения по умолчанию для генератора контента (
getDefaultGenerationConfigдля OpenAI,getParameterValueдля Gemini и т.д.)
samplingParams, customHeaders и extra_body обрабатываются атомарно; значения провайдера заменяют весь объект. Если 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.enableFuzzySearch | логический | Когда установлено значение true, включает возможность нечеткого поиска при поиске файлов. Установите значение false, чтобы улучшить производительность в проектах с большим количеством файлов. | true |
Устранение проблем с производительностью поиска файлов
Если у вас возникают проблемы с производительностью при поиске файлов (например, при автозаполнении с помощью @), особенно в проектах с очень большим количеством файлов, вот несколько рекомендаций, которые вы можете попробовать в порядке предпочтения:
- Используйте
.qwenignore: Создайте файл.qwenignoreв корне вашего проекта, чтобы исключить каталоги, содержащие большое количество файлов, на которые вам не нужно ссылаться (например, артефакты сборки, логи,node_modules). Снижение общего количества просматриваемых файлов — наиболее эффективный способ улучшить производительность. - Отключите нечеткий поиск: Если игнорирование файлов не помогает, вы можете отключить нечеткий поиск, установив для параметра
enableFuzzySearchзначениеfalseв вашем файлеsettings.json. Это позволит использовать более простой, нечеткий алгоритм сопоставления, который может работать быстрее. - Отключите рекурсивный поиск файлов: В крайнем случае вы можете полностью отключить рекурсивный поиск файлов, установив для параметра
enableRecursiveFileSearchзначениеfalse. Это будет самым быстрым вариантом, так как он избегает рекурсивного обхода вашего проекта. Однако это означает, что вам придется вводить полный путь к файлам при использовании автозаполнения с помощью@.
tools
| Параметр | Тип | Описание | По умолчанию | Примечания |
|---|---|---|---|---|
tools.sandbox | boolean или строка | Среда выполнения в песочнице (может быть логическим значением или строкой пути). | undefined | |
tools.shell.enableInteractiveShell | boolean | Использовать 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.useRipgrep | boolean | Использовать ripgrep для поиска по содержимому файлов вместо резервной реализации. Обеспечивает более быструю работу поиска. | true | |
tools.useBuiltinRipgrep | boolean | Использовать встроенный бинарный файл ripgrep. Когда установлено значение false, будет использоваться системная команда rg. Этот параметр действует только тогда, когда tools.useRipgrep равно true. | true | |
tools.enableToolOutputTruncation | boolean | Включить усечение больших выходных данных инструментов. | 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
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Автоматически настраивать лимиты памяти Node.js. | false |
advanced.dnsResolutionOrder | string | Порядок разрешения DNS. | undefined |
advanced.excludedEnvVars | array of strings | Переменные окружения, которые следует исключить из контекста проекта. Указывает переменные окружения, которые не должны загружаться из файлов .env проекта. Это предотвращает конфликты специфичных для проекта переменных окружения (например, DEBUG=true) с поведением CLI. Переменные из файлов .qwen/.env никогда не исключаются. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | object | Конфигурация команды отправки отчета об ошибке. Переопределяет URL по умолчанию для команды /bug. Свойства: urlTemplate (string): URL, который может содержать плейсхолдеры {title} и {info}. Пример: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
advanced.tavilyApiKey | string | Ключ 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 с вложенной структурой, новой с версии v0.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, см. Аутентификация.
Исключение переменных окружения: Некоторые переменные окружения (например, 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-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 (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`
- Этот файл обрабатывает все исходящие запросы к 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 может выполнять потенциально небезопасные операции (например, команды оболочки и изменения файлов) в изолированной среде песочницы для защиты вашей системы.
[Песочница](../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
COPY ./my-config /app/my-config
Когда существует файл `.qwen/sandbox.Dockerfile`, вы можете использовать переменную окружения `BUILD_SANDBOX` при запуске Qwen Code для автоматического создания пользовательского образа песочницы:
BUILD_SANDBOX=1 qwen -s
## Статистика использования
Чтобы помочь нам улучшить Qwen Code, мы собираем анонимную статистику использования. Эти данные помогают нам понять, как используется CLI, выявлять распространенные проблемы и определять приоритеты для новых функций.
**Что мы собираем:**
- **Вызовы инструментов:** Мы регистрируем названия вызываемых инструментов, успешность их выполнения или сбои, а также время выполнения. Мы не собираем аргументы, передаваемые в инструменты, или какие-либо данные, возвращаемые ими.
- **Запросы к API:** Мы регистрируем модель, использованную для каждого запроса, продолжительность запроса и его успешность. Мы не собираем содержимое подсказок или ответов.
- **Информация о сессии:** Мы собираем информацию о конфигурации CLI, например, активированные инструменты и режим одобрения.
**Что мы НЕ собираем:**
- **Персонально идентифицируемую информацию (PII):** Мы не собираем никакой личной информации, такой как ваше имя, адрес электронной почты или ключи API.
- **Содержимое подсказок и ответов:** Мы не регистрируем содержимое ваших подсказок или ответы модели.
- **Содержимое файлов:** Мы не регистрируем содержимое любых файлов, которые читаются или записываются CLI.
**Как отказаться от участия:**
Вы можете отказаться от сбора статистики использования в любое время, установив свойство `usageStatisticsEnabled` в значение `false` в категории `privacy` в вашем файле `settings.json`:
{ “privacy”: { “usageStatisticsEnabled”: false } }
> [!note]
>
> Когда статистика использования включена, события отправляются на конечную точку сбора данных Alibaba Cloud RUM.