Конфигурация Qwen Code
Примечание о новом формате конфигурации
Формат файла settings.json был обновлен до новой, более организованной структуры. Старый формат будет автоматически перенесен.
Подробности о предыдущем формате см. в документации по конфигурации v1.
Qwen Code предлагает несколько способов настройки своего поведения, включая переменные окружения, аргументы командной строки и файлы настроек. В этом документе описаны различные методы конфигурации и доступные параметры.
Уровни конфигурации
Конфигурация применяется в следующем порядке приоритета (более низкие номера переопределяются более высокими):
- Значения по умолчанию: Жестко закодированные значения по умолчанию внутри приложения.
- Файл системных настроек по умолчанию: Системные настройки по умолчанию, которые могут быть переопределены другими файлами настроек.
- Файл пользовательских настроек: Глобальные настройки для текущего пользователя.
- Файл настроек проекта: Настройки, специфичные для проекта.
- Файл системных настроек: Системные настройки, которые переопределяют все остальные файлы настроек.
- Переменные окружения: Системные или сессионные переменные, потенциально загруженные из
.envфайлов. - Аргументы командной строки: Значения, переданные при запуске CLI.
Файлы настроек
Qwen Code использует JSON-файлы настроек для постоянного хранения конфигурации. Эти файлы могут находиться в четырех местах:
-
Файл системных значений по умолчанию:
- Расположение:
/etc/qwen-code/system-defaults.json(Linux),C:\ProgramData\qwen-code\system-defaults.json(Windows) или/Library/Application Support/QwenCode/system-defaults.json(macOS). Путь можно переопределить с помощью переменной окруженияQWEN_CODE_SYSTEM_DEFAULTS_PATH. - Область применения: Предоставляет базовый уровень системных настроек по умолчанию. Эти настройки имеют самый низкий приоритет и предназначены для переопределения пользовательскими, проектными или системными настройками.
- Расположение:
-
Файл пользовательских настроек:
- Расположение:
~/.qwen/settings.json(где~— ваша домашняя директория). - Область применения: Применяется ко всем сессиям Qwen Code текущего пользователя.
- Расположение:
-
Файл настроек проекта:
- Расположение:
.qwen/settings.jsonв корневой директории вашего проекта. - Область применения: Применяется только при запуске Qwen Code из этого конкретного проекта. Настройки проекта переопределяют пользовательские настройки.
- Расположение:
-
Файл системных настроек:
- Расположение:
/etc/qwen-code/settings.json(Linux),C:\ProgramData\qwen-code\settings.json(Windows) или/Library/Application Support/QwenCode/settings.json(macOS). Путь можно переопределить с помощью переменной окружения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).
Доступные настройки в settings.json
Настройки организованы по категориям. Все настройки должны быть размещены внутри соответствующего объекта категории верхнего уровня в вашем файле settings.json.
general
-
general.preferredEditor(string):- Описание: Предпочтительный редактор для открытия файлов.
- По умолчанию:
undefined
-
general.vimMode(boolean):- Описание: Включить Vim keybindings.
- По умолчанию:
false
-
general.disableAutoUpdate(boolean):- Описание: Отключить автоматические обновления.
- По умолчанию:
false
-
general.disableUpdateNag(boolean):- Описание: Отключить уведомления о доступных обновлениях.
- По умолчанию:
false
-
general.checkpointing.enabled(boolean):- Описание: Включить создание контрольных точек сессии для восстановления.
- По умолчанию:
false
output
output.format(string):- Описание: Формат вывода CLI.
- По умолчанию:
"text" - Возможные значения:
"text","json"
ui
-
ui.theme(string):- Описание: Цветовая тема интерфейса. Доступные варианты смотрите в разделе Themes.
- Значение по умолчанию:
undefined
-
ui.customThemes(object):- Описание: Пользовательские настройки тем.
- Значение по умолчанию:
{}
-
ui.hideWindowTitle(boolean):- Описание: Скрыть строку заголовка окна.
- Значение по умолчанию:
false
-
ui.hideTips(boolean):- Описание: Скрыть полезные подсказки в интерфейсе.
- Значение по умолчанию:
false
-
ui.hideBanner(boolean):- Описание: Скрыть баннер приложения.
- Значение по умолчанию:
false
-
ui.hideFooter(boolean):- Описание: Скрыть футер интерфейса.
- Значение по умолчанию:
false
-
ui.showMemoryUsage(boolean):- Описание: Отображать информацию об использовании памяти в интерфейсе.
- Значение по умолчанию:
false
-
ui.showLineNumbers(boolean):- Описание: Показывать номера строк в чате.
- Значение по умолчанию:
false
-
ui.showCitations(boolean):- Описание: Показывать ссылки на источники для сгенерированного текста в чате.
- Значение по умолчанию:
true
-
enableWelcomeBack(boolean):- Описание: Показывать диалог приветствия при возвращении к проекту с историей разговора.
- Значение по умолчанию:
true
-
ui.accessibility.disableLoadingPhrases(boolean):- Описание: Отключить фразы загрузки для улучшения доступности.
- Значение по умолчанию:
false
-
ui.customWittyPhrases(array of strings):- Описание: Список пользовательских фраз, отображаемых во время загрузки. Если указано, CLI будет циклически отображать эти фразы вместо стандартных.
- Значение по умолчанию:
[]
ide
-
ide.enabled(boolean):- Описание: Включить режим интеграции с IDE.
- По умолчанию:
false
-
ide.hasSeenNudge(boolean):- Описание: Пользователь видел уведомление об интеграции с IDE.
- По умолчанию:
false
privacy
privacy.usageStatisticsEnabled(boolean):- Описание: Включить сбор статистики использования.
- По умолчанию:
true
model
-
model.name(string):- Описание: Модель Qwen, которая будет использоваться для диалогов.
- Значение по умолчанию:
undefined
-
model.maxSessionTurns(number):- Описание: Максимальное количество шагов (пользователь/модель/инструмент) в сессии. Значение
-1означает неограниченное количество. - Значение по умолчанию:
-1
- Описание: Максимальное количество шагов (пользователь/модель/инструмент) в сессии. Значение
-
model.summarizeToolOutput(object):- Описание: Включает или отключает суммаризацию вывода инструментов. Вы можете указать лимит токенов для суммаризации через параметр
tokenBudget. Примечание: на данный момент поддерживается только инструментrun_shell_command. Например:{"run_shell_command": {"tokenBudget": 2000}} - Значение по умолчанию:
undefined
- Описание: Включает или отключает суммаризацию вывода инструментов. Вы можете указать лимит токенов для суммаризации через параметр
-
model.chatCompression.contextPercentageThreshold(number):- Описание: Устанавливает порог сжатия истории чата в процентах от общего лимита токенов модели. Это значение от 0 до 1 применяется как для автоматического сжатия, так и для ручной команды
/compress. Например, значение0.6активирует сжатие, когда история чата превышает 60% от лимита токенов. - Значение по умолчанию:
0.7
- Описание: Устанавливает порог сжатия истории чата в процентах от общего лимита токенов модели. Это значение от 0 до 1 применяется как для автоматического сжатия, так и для ручной команды
-
model.skipNextSpeakerCheck(boolean):- Описание: Пропустить проверку следующего участника разговора.
- Значение по умолчанию:
false
-
model.skipLoopDetection(boolean):- Описание: Отключает проверку на зацикливания. Обнаружение зацикливаний предотвращает бесконечные циклы в ответах ИИ, но может вызывать ложные срабатывания, которые прерывают нормальную работу. Включите эту опцию, если сталкиваетесь с частыми ложными срабатываниями.
- Значение по умолчанию:
false
context
-
context.fileName(string или массив строк):- Описание: Имя файла(ов) контекста.
- По умолчанию:
undefined
-
context.importFormat(string):- Описание: Формат, используемый при импорте памяти.
- По умолчанию:
undefined
-
context.discoveryMaxDirs(number):- Описание: Максимальное количество директорий для поиска памяти.
- По умолчанию:
200
-
context.includeDirectories(array):- Описание: Дополнительные директории, которые нужно включить в контекст рабочей области. Отсутствующие директории будут пропущены с предупреждением.
- По умолчанию:
[]
-
context.loadFromIncludeDirectories(boolean):- Описание: Управляет поведением команды
/memory refresh. Если установлено значениеtrue, файлыQWEN.mdдолжны загружаться из всех добавленных директорий. Если установлено значениеfalse,QWEN.mdдолжен загружаться только из текущей директории. - По умолчанию:
false
- Описание: Управляет поведением команды
-
context.fileFiltering.respectGitIgnore(boolean):- Описание: Учитывать файлы .gitignore при поиске.
- По умолчанию:
true
-
context.fileFiltering.respectQwenIgnore(boolean):- Описание: Учитывать файлы .qwenignore при поиске.
- По умолчанию:
true
-
context.fileFiltering.enableRecursiveFileSearch(boolean):- Описание: Включить рекурсивный поиск файлов по именам в текущем дереве при автодополнении префиксов
@в prompt. - По умолчанию:
true
- Описание: Включить рекурсивный поиск файлов по именам в текущем дереве при автодополнении префиксов
tools
-
tools.sandbox(boolean или string):- Описание: Sandbox execution environment (может быть boolean или строкой с путем).
- По умолчанию:
undefined
-
tools.shell.enableInteractiveShell(boolean):Использовать
node-ptyдля интерактивного shell. Резервный вариантchild_processвсё ещё применяется. По умолчаниюfalse. -
tools.core(массив строк):- Описание: Может использоваться для ограничения набора встроенных инструментов с помощью allowlist. Список основных инструментов см. в разделе Built-in Tools. Логика сопоставления такая же, как у
tools.allowed. - По умолчанию:
undefined
- Описание: Может использоваться для ограничения набора встроенных инструментов с помощью allowlist. Список основных инструментов см. в разделе Built-in Tools. Логика сопоставления такая же, как у
-
tools.exclude(массив строк):- Описание: Имена инструментов, которые нужно исключить из поиска.
- По умолчанию:
undefined
-
tools.allowed(массив строк):- Описание: Список имен инструментов, для которых будет пропущен диалог подтверждения. Полезно для инструментов, которым вы доверяете и используете часто. Например,
["run_shell_command(git)", "run_shell_command(npm test)"]пропустит диалог подтверждения при запуске любых командgitиnpm test. Подробнее о префиксном сопоставлении, цепочках команд и т. д. см. в разделе Shell Tool command restrictions. - По умолчанию:
undefined
- Описание: Список имен инструментов, для которых будет пропущен диалог подтверждения. Полезно для инструментов, которым вы доверяете и используете часто. Например,
-
tools.approvalMode(string):- Описание: Устанавливает режим подтверждения по умолчанию для использования инструментов. Допустимые значения:
plan: Только анализ, без изменения файлов или выполнения команд.default: Требовать подтверждение перед редактированием файлов или запуском shell-команд.auto-edit: Автоматически одобрять редактирование файлов.yolo: Автоматически одобрять все вызовы инструментов.
- По умолчанию:
default
- Описание: Устанавливает режим подтверждения по умолчанию для использования инструментов. Допустимые значения:
-
tools.discoveryCommand(string):- Описание: Команда для запуска поиска инструментов.
- По умолчанию:
undefined
-
tools.callCommand(string):- Описание: Определяет пользовательскую shell-команду для вызова конкретного инструмента, найденного с помощью
tools.discoveryCommand. Команда должна соответствовать следующим требованиям:- Принимать имя функции (в точности как в function declaration ) в качестве первого аргумента командной строки.
- Читать аргументы функции в формате JSON из
stdin, аналогичноfunctionCall.args. - Возвращать результат функции в формате JSON через
stdout, аналогичноfunctionResponse.response.content.
- По умолчанию:
undefined
- Описание: Определяет пользовательскую shell-команду для вызова конкретного инструмента, найденного с помощью
mcp
-
mcp.serverCommand(string):- Описание: Команда для запуска MCP сервера.
- По умолчанию:
undefined
-
mcp.allowed(массив строк):- Описание: Список разрешенных MCP серверов.
- По умолчанию:
undefined
-
mcp.excluded(массив строк):- Описание: Список запрещенных MCP серверов.
- По умолчанию:
undefined
security
-
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(массив строк):- Описание: Переменные окружения, которые нужно исключить из контекста проекта.
- Значение по умолчанию:
["DEBUG","DEBUG_MODE"]
-
advanced.bugCommand(объект):- Описание: Конфигурация команды для отправки баг-репортов.
- Значение по умолчанию:
undefined
-
advanced.tavilyApiKey(string):- Описание: API ключ для сервиса веб-поиска Tavily. Необходим для включения функциональности инструмента
web_search. Если не указан, инструмент веб-поиска будет отключен и пропущен. - Значение по умолчанию:
undefined
- Описание: API ключ для сервиса веб-поиска Tavily. Необходим для включения функциональности инструмента
mcpServers
Настраивает подключения к одному или нескольким серверам Model-Context Protocol (MCP) для обнаружения и использования пользовательских инструментов. Qwen Code пытается подключиться к каждому из указанных MCP-серверов, чтобы получить список доступных инструментов. Если несколько MCP-серверов предоставляют инструмент с одинаковым названием, такие названия будут дополнены префиксом в виде псевдонима сервера, заданного в конфигурации (например, serverAlias__actualToolName), чтобы избежать конфликта. Обратите внимание, что система может удалять некоторые свойства схемы из определений инструментов MCP для обеспечения совместимости. Необходимо указать хотя бы одно из следующих полей: command, url или httpUrl. Если указано несколько, приоритет имеет следующий порядок: httpUrl, затем url, затем command.
mcpServers.<SERVER_NAME>(объект): Параметры сервера с заданным именем.command(строка, необязательно): Команда для запуска MCP-сервера через стандартный ввод/вывод.args(массив строк, необязательно): Аргументы командной строки, передаваемые команде.env(объект, необязательно): Переменные окружения, которые нужно установить для процесса сервера.cwd(строка, необязательно): Рабочая директория, в которой будет запущен сервер.url(строка, необязательно): URL MCP-сервера, использующего Server-Sent Events (SSE) для связи.httpUrl(строка, необязательно): URL MCP-сервера, использующего потоковое HTTP-соединение.headers(объект, необязательно): Набор HTTP-заголовков, отправляемых вместе с запросами наurlилиhttpUrl.timeout(число, необязательно): Таймаут в миллисекундах для запросов к этому MCP-серверу.trust(булево значение, необязательно): Доверять этому серверу и пропустить все подтверждения вызова инструментов.description(строка, необязательно): Краткое описание сервера, которое может использоваться для отображения.includeTools(массив строк, необязательно): Список названий инструментов, которые следует включить с этого MCP-сервера. При указании этого параметра только перечисленные здесь инструменты будут доступны с данного сервера (режим allowlist). Если не указано — по умолчанию активируются все инструменты сервера.excludeTools(массив строк, необязательно): Список названий инструментов, которые необходимо исключить с этого MCP-сервера. Указанные здесь инструменты не будут доступны модели, даже если они предоставлены сервером. Примечание:excludeToolsимеет более высокий приоритет по сравнению сincludeTools— если инструмент присутствует в обоих списках, он будет исключен.
telemetry
Настраивает сбор логов и метрик для Qwen Code. Подробнее см. Telemetry.
- Свойства:
enabled(boolean): Включена ли телеметрия.target(string): Назначение для собранной телеметрии. Поддерживаемые значения:localиgcp.otlpEndpoint(string): Endpoint для OTLP Exporter.otlpProtocol(string): Протокол для OTLP Exporter (grpcилиhttp).logPrompts(boolean): Включать ли содержимое пользовательских prompt’ов в логи.outfile(string): Файл для записи телеметрии, когдаtargetравенlocal.useCollector(boolean): Использовать ли внешний OTLP collector.
Пример settings.json
Вот пример файла settings.json с вложенной структурой, новой начиная с версии v0.3.0:
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideBanner": true,
"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,
"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"]
}
}История Shell
CLI сохраняет историю выполненных вами shell-команд. Чтобы избежать конфликтов между разными проектами, эта история хранится в директории, специфичной для проекта, внутри домашней папки пользователя.
- Расположение:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>— это уникальный идентификатор, сгенерированный на основе корневого пути вашего проекта.- История хранится в файле с именем
shell_history.
Переменные окружения и файлы .env
Переменные окружения — это распространённый способ конфигурации приложений, особенно для чувствительных данных, таких как API ключи, или для настроек, которые могут отличаться в зависимости от среды выполнения. Подробнее о настройке аутентификации можно прочитать в документации по аутентификации, где описаны все доступные методы.
CLI автоматически загружает переменные окружения из файла .env. Порядок загрузки следующий:
- Файл
.envв текущей рабочей директории. - Если файл не найден, CLI будет искать его в родительских директориях до тех пор, пока не найдёт
.env, либо не достигнет корня проекта (определяется наличием папки.git) или домашней директории пользователя. - Если файл всё ещё не найден, CLI попытается загрузить
~/.env(в домашней директории пользователя).
Исключение переменных окружения: Некоторые переменные (например, DEBUG и DEBUG_MODE) по умолчанию исключаются из проектных .env файлов, чтобы не мешать работе CLI. Переменные из файлов .qwen/.env никогда не исключаются. Вы можете изменить это поведение с помощью настройки advanced.excludedEnvVars в вашем файле settings.json.
OPENAI_API_KEY:- Один из доступных методов аутентификации.
- Установите в вашем shell профиле (например,
~/.bashrc,~/.zshrc) или в.envфайле.
OPENAI_BASE_URL:- Один из доступных методов аутентификации.
- Установите в вашем shell профиле (например,
~/.bashrc,~/.zshrc) или в.envфайле.
OPENAI_MODEL:- Задаёт модель OPENAI по умолчанию.
- Переопределяет значение по умолчанию, заданное в коде.
- Пример:
export OPENAI_MODEL="qwen3-coder-plus"
GEMINI_TELEMETRY_ENABLED:- Установите в
trueили1, чтобы включить телеметрию. Любое другое значение отключает её. - Переопределяет настройку
telemetry.enabled.
- Установите в
GEMINI_TELEMETRY_TARGET:- Устанавливает цель телеметрии (
localилиgcp). - Переопределяет настройку
telemetry.target.
- Устанавливает цель телеметрии (
GEMINI_TELEMETRY_OTLP_ENDPOINT:- Устанавливает OTLP endpoint для телеметрии.
- Переопределяет настройку
telemetry.otlpEndpoint.
GEMINI_TELEMETRY_OTLP_PROTOCOL:- Устанавливает OTLP протокол (
grpcилиhttp). - Переопределяет настройку
telemetry.otlpProtocol.
- Устанавливает OTLP протокол (
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).
- Переключает профиль Seatbelt (
DEBUGилиDEBUG_MODE(часто используются библиотеками или самим CLI):- Установите в
trueили1, чтобы включить подробный вывод для отладки. Полезно при решении проблем. - Примечание: Эти переменные по умолчанию исключаются из проектных
.envфайлов, чтобы не мешать работе CLI. Если вам нужно установить их специально для Qwen Code, используйте файлы.qwen/.env.
- Установите в
NO_COLOR:- Установите любое значение, чтобы отключить цветной вывод в CLI.
CLI_TITLE:- Установите строку, чтобы изменить заголовок CLI.
TAVILY_API_KEY:- Ваш API ключ для сервиса веб-поиска Tavily.
- Необходим для работы инструмента
web_search. - Если не указан, инструмент веб-поиска будет отключён.
- Пример:
export TAVILY_API_KEY="tvly-your-api-key-here"
Аргументы командной строки
Аргументы, переданные напрямую при запуске CLI, могут переопределять другие настройки для текущей сессии.
--model <model_name>(-m <model_name>):- Указывает модель Qwen, которая будет использоваться в этой сессии.
- Пример:
npm start -- --model qwen3-coder-plus
--prompt <your_prompt>(-p <your_prompt>):- Используется для передачи промпта напрямую в команду. Это запускает Qwen Code в неинтерактивном режиме.
- Для примеров скриптов используйте флаг
--output-format json, чтобы получить структурированный вывод.
--prompt-interactive <your_prompt>(-i <your_prompt>):- Запускает интерактивную сессию с указанным промптом в качестве начального ввода.
- Промпт обрабатывается внутри интерактивной сессии, а не до её начала.
- Не может использоваться при передаче входных данных через stdin.
- Пример:
qwen -i "explain this code"
--output-format <format>:- Описание: Определяет формат вывода CLI в неинтерактивном режиме.
- Значения:
text: (по умолчанию) Стандартный человекочитаемый вывод.json: Машинночитаемый вывод в формате JSON.
- Примечание: Для структурированного вывода и скриптов используйте флаг
--output-format json.
--sandbox(-s):- Включает режим песочницы для этой сессии.
--sandbox-image:- Устанавливает URI образа песочницы.
--debug(-d):- Включает режим отладки для этой сессии, предоставляя более подробный вывод.
--all-files(-a):- Если установлено, рекурсивно включает все файлы в текущей директории как контекст для промпта.
--help(или-h):- Отображает справочную информацию по аргументам командной строки.
--show-memory-usage:- Отображает текущее использование памяти.
--yolo:- Включает режим YOLO, который автоматически одобряет все вызовы инструментов.
--approval-mode <mode>:- Устанавливает режим подтверждения для вызовов инструментов. Поддерживаемые режимы:
plan: Только анализ — не изменяет файлы и не выполняет команды.default: Требует подтверждения для редактирования файлов или выполнения команд (поведение по умолчанию).auto-edit: Автоматически одобряет инструменты редактирования (edit, write_file), запрашивая подтверждение для других.yolo: Автоматически одобряет все вызовы инструментов (эквивалент--yolo).
- Нельзя использовать вместе с
--yolo. Используйте--approval-mode=yoloвместо--yoloдля нового унифицированного подхода. - Пример:
qwen --approval-mode auto-edit
- Устанавливает режим подтверждения для вызовов инструментов. Поддерживаемые режимы:
--allowed-tools <tool1,tool2,...>:- Список названий инструментов, разделённых запятыми, которые будут обходить диалог подтверждения.
- Пример:
qwen --allowed-tools "ShellTool(git status)"
--telemetry:- Включает телеметрию.
--telemetry-target:- Устанавливает цель телеметрии. Подробнее см. в разделе телеметрия.
--telemetry-otlp-endpoint:- Устанавливает OTLP endpoint для телеметрии. Подробнее см. в разделе телеметрия.
--telemetry-otlp-protocol:- Устанавливает OTLP протокол для телеметрии (
grpcилиhttp). По умолчанию используетсяgrpc. Подробнее см. в разделе телеметрия.
- Устанавливает OTLP протокол для телеметрии (
--telemetry-log-prompts:- Включает логирование промптов для телеметрии. Подробнее см. в разделе телеметрия.
--checkpointing:- Включает чекпоинтинг.
--extensions <extension_name ...>(-e <extension_name ...>):- Указывает список расширений, которые будут использоваться в сессии. Если не указано, используются все доступные расширения.
- Используйте специальное значение
qwen -e none, чтобы отключить все расширения. - Пример:
qwen -e my-extension -e my-other-extension
--list-extensions(-l):- Выводит список всех доступных расширений и завершает работу.
--proxy:- Устанавливает прокси для CLI.
- Пример:
--proxy http://localhost:7890.
--include-directories <dir1,dir2,...>:- Добавляет дополнительные директории в рабочее пространство для поддержки работы с несколькими каталогами.
- Можно указывать несколько раз или в виде значений, разделённых запятыми.
- Максимальное количество добавляемых директорий — 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 API для отладки и анализа. Этот флаг переопределяет настройку
--tavily-api-key <api_key>:- Устанавливает API ключ Tavily для функции веб-поиска в этой сессии.
- Пример:
qwen --tavily-api-key tvly-your-api-key-here
Файлы контекста (иерархический инструкционный контекст)
Хотя файлы контекста и не являются строгой конфигурацией поведения CLI, они играют ключевую роль в настройке инструкционного контекста (также называемого «памятью»). По умолчанию используется файл QWEN.md, но имя файла можно изменить с помощью настройки context.fileName. Эта мощная функция позволяет передавать ИИ проектные инструкции, руководства по стилю кода или любую другую важную информацию, благодаря чему ответы модели становятся более точными и соответствующими вашим ожиданиям. В CLI предусмотрены элементы интерфейса, например индикатор в нижнем колонтитуле, показывающий количество загруженных файлов контекста, чтобы вы всегда могли видеть текущий активный контекст.
- Назначение: Эти Markdown-файлы содержат инструкции, рекомендации или любой другой контекст, который вы хотите, чтобы модель Qwen учитывала во время взаимодействия. Система спроектирована так, чтобы управлять этим инструкционным контекстом иерархически.
Пример содержимого контекстного файла (например, QWEN.md)
Вот концептуальный пример того, что может содержать контекстный файл в корне проекта на TypeScript:
# Project: My Awesome TypeScript Library
## Общие инструкции:
- При генерации нового кода на 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/<configured-context-filename>` (например, `~/.qwen/QWEN.md` в вашем домашнем каталоге пользователя).
- Область применения: Предоставляет стандартные инструкции для всех ваших проектов.
2. **Контекстные файлы корня проекта и его родительских директорий:**
- Расположение: CLI ищет указанный контекстный файл в текущей рабочей директории, а затем в каждой родительской директории вплоть до корня проекта (определяемого наличием папки `.git`) или вашего домашнего каталога.
- Область применения: Предоставляет контекст, относящийся ко всему проекту или значительной его части.
3. **Контекстные файлы подкаталогов (локальные/контекстуальные):**
- Расположение: CLI также сканирует наличие указанного контекстного файла в подкаталогах _ниже_ текущей рабочей директории (с учетом стандартных игнор-паттернов, таких как `node_modules`, `.git` и т.д.). По умолчанию глубина поиска ограничена 200 каталогами, но может быть изменена с помощью настройки `context.discoveryMaxDirs` в вашем файле `settings.json`.
- Область применения: Позволяет задавать высоко специфичные инструкции, относящиеся к конкретному компоненту, модулю или разделу проекта.
- **Объединение и отображение в интерфейсе:** Содержимое всех найденных контекстных файлов объединяется (с разделителями, указывающими источник и путь) и передается как часть системного prompt'а. В нижнем колонтитуле CLI отображается количество загруженных контекстных файлов, что дает быструю визуальную подсказку об активном инструкционном контексте.
- **Импорт содержимого:** Вы можете модуляризировать свои контекстные файлы, импортируя другие Markdown-файлы с помощью синтаксиса `@path/to/file.md`. Подробнее см. в [документации по Memory Import Processor](../core/memport.md).
- **Команды управления памятью:**
- Используйте `/memory refresh`, чтобы принудительно пересканировать и перезагрузить все контекстные файлы из всех настроенных источников. Это обновит инструкционный контекст ИИ.
- Используйте `/memory show`, чтобы отобразить текущий объединенный инструкционный контекст, что позволит вам проверить иерархию и содержимое, используемое ИИ.
- Полная информация о команде `/memory` и её подкомандах (`show` и `refresh`) доступна в [документации по командам](./commands.md#memory).
Понимая и используя эти уровни конфигурации и иерархическую природу контекстных файлов, вы сможете эффективно управлять памятью ИИ и адаптировать ответы Qwen Code под ваши конкретные нужды и проекты.
## Sandboxing
Qwen Code может выполнять потенциально небезопасные операции (например, shell-команды и изменения файлов) в sandbox-окружении, чтобы защитить вашу систему.
По умолчанию sandboxing отключен, но вы можете включить его несколькими способами:
- Используя флаг `--sandbox` или `-s`.
- Установив переменную окружения `GEMINI_SANDBOX`.
- Sandbox включается по умолчанию при использовании `--yolo` или `--approval-mode=yolo`.
По умолчанию используется предварительно собранный Docker-образ `qwen-code-sandbox`.
Если вашему проекту требуется специфичная sandbox-конфигурация, вы можете создать собственный Dockerfile по пути `.qwen/sandbox.Dockerfile` в корневой директории проекта. Этот Dockerfile может быть основан на базовом sandbox-образе:
```dockerfile
FROM qwen-code-sandbox
# Добавьте сюда свои зависимости или настройки
# Например:
# RUN apt-get update && apt-get install -y some-packageCOPY ./my-config /app/my-config
Когда файл `.qwen/sandbox.Dockerfile` существует, вы можете использовать переменную окружения `BUILD_SANDBOX` при запуске Qwen Code для автоматической сборки кастомного sandbox-образа:
```bash
BUILD_SANDBOX=1 qwen -sСтатистика использования
Чтобы помочь нам улучшить Qwen Code, мы собираем анонимизированную статистику использования. Эти данные помогают нам понять, как используется CLI, выявить распространенные проблемы и определить приоритеты для новых функций.
Что мы собираем:
- Вызовы инструментов: Мы записываем названия вызванных инструментов, успешность их выполнения и время выполнения. Мы не собираем аргументы, переданные инструментам, или любые данные, возвращенные ими.
- API запросы: Мы записываем модель, использованную для каждого запроса, продолжительность запроса и его успешность. Мы не собираем содержимое промптов или ответов.
- Информация о сессии: Мы собираем информацию о конфигурации CLI, например, включенные инструменты и режим одобрения.
Что мы НЕ собираем:
- Персональные данные (PII): Мы не собираем никакой личной информации, такой как ваше имя, адрес электронной почты или API ключи.
- Содержание промптов и ответов: Мы не записываем содержание ваших промптов или ответов модели.
- Содержимое файлов: Мы не записываем содержимое файлов, которые читаются или записываются CLI.
Как отказаться от сбора:
Вы можете отказаться от сбора статистики использования в любое время, установив свойство usageStatisticsEnabled в значение false в категории privacy в вашем файле settings.json:
{
"privacy": {
"usageStatisticsEnabled": false
}
}Примечание: Когда сбор статистики использования включен, события отправляются на эндпоинт сбора данных Alibaba Cloud RUM.