Конфигурация 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).
Доступные настройки в settings.json
Настройки организованы по категориям. Все настройки должны быть размещены внутри соответствующего объекта категории верхнего уровня в вашем файле settings.json.
general
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
general.preferredEditor | string | Предпочтительный редактор для открытия файлов. | undefined |
general.vimMode | boolean | Включить привязки клавиш Vim. | 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 | Цветовая тема интерфейса. См. Темы для доступных вариантов. | 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 | Показывать номера строк в блоках кода в выводе CLI. | true |
ui.showCitations | boolean | Показывать цитаты для сгенерированного текста в чате. | true |
enableWelcomeBack | boolean | Показывать диалог приветствия при возвращении к проекту с историей разговора. Если включено, Qwen Code автоматически определит, возвращаетесь ли вы к проекту с ранее сгенерированным сводным описанием проекта (.qwen/PROJECT_SUMMARY.md), и покажет диалог, позволяющий продолжить предыдущий разговор или начать заново. Эта функция интегрируется с командой /summary и диалогом подтверждения выхода. | true |
ui.accessibility.disableLoadingPhrases | boolean | Отключить фразы загрузки для обеспечения доступности. | false |
ui.accessibility.screenReader | boolean | Включает режим экранного диктора, который настраивает TUI для лучшей совместимости с программами чтения с экрана. | 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.generationConfig | object | Расширенные переопределения, передаваемые базовому генератору контента. Поддерживает параметры управления запросами, такие как timeout, maxRetries и disableCacheControl, а также настройки тонкой настройки в разделе samplingParams (например, temperature, top_p, max_tokens). Оставьте пустым, чтобы использовать значения по умолчанию провайдера. | undefined |
model.chatCompression.contextPercentageThreshold | number | Устанавливает порог сжатия истории чата в процентах от общего лимита токенов модели. Это значение от 0 до 1 применяется как к автоматическому сжатию, так и к ручной команде /compress. Например, значение 0.6 активирует сжатие, когда история чата превышает 60% лимита токенов. Используйте 0, чтобы полностью отключить сжатие. | 0.7 |
model.skipNextSpeakerCheck | boolean | Пропуск проверки следующего говорящего. | false |
model.skipLoopDetection | boolean | Отключает проверку обнаружения циклов. Обнаружение циклов предотвращает бесконечные циклы в ответах ИИ, но может вызывать ложные срабатывания, нарушающие нормальную работу. Включите эту опцию, если сталкиваетесь с частыми ложными срабатываниями обнаружения циклов. | false |
model.skipStartupContext | boolean | Пропускает отправку стартового контекста рабочей области (сводка окружения и подтверждение) в начале каждой сессии. Включите, если предпочитаете предоставлять контекст вручную или хотите сэкономить токены при запуске. | false |
model.enableOpenAILogging | boolean | Включает логирование вызовов OpenAI API для отладки и анализа. При включении запросы и ответы API записываются в файлы JSON. | false |
model.openAILoggingDir | string | Пользовательский путь к каталогу журналов OpenAI API. Если не указан, по умолчанию используется logs/openai в текущем рабочем каталоге. Поддерживаются абсолютные пути, относительные пути (относительно текущего рабочего каталога) и расширение ~ (домашний каталог). | undefined |
Пример model.generationConfig:
{
"model": {
"generationConfig": {
"timeout": 60000,
"disableCacheControl": false,
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}Примеры model.openAILoggingDir:
"~/qwen-logs"- Логи сохраняются в каталог~/qwen-logs"./custom-logs"- Логи сохраняются в./custom-logsотносительно текущего каталога"/tmp/openai-logs"- Логи сохраняются по абсолютному пути/tmp/openai-logs
контекст
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
context.fileName | строка или массив строк | Имя файла(ов) контекста. | undefined |
context.importFormat | строка | Формат, используемый при импорте памяти. | undefined |
context.discoveryMaxDirs | число | Максимальное количество директорий для поиска памяти. | 200 |
context.includeDirectories | массив | Дополнительные директории, включаемые в контекст рабочей области. Указывает массив дополнительных абсолютных или относительных путей, которые будут включены в контекст рабочей области. Отсутствующие директории будут пропущены с предупреждением по умолчанию. В путях можно использовать ~ для обозначения домашней директории пользователя. Этот параметр можно комбинировать с флагом командной строки --include-directories. | [] |
context.loadFromIncludeDirectories | булево | Управляет поведением команды /memory refresh. Если установлено значение true, файлы QWEN.md должны загружаться из всех добавленных директорий. Если установлено значение false, QWEN.md должен загружаться только из текущей директории. | false |
context.fileFiltering.respectGitIgnore | булево | Учитывать файлы .gitignore при поиске. | true |
context.fileFiltering.respectQwenIgnore | булево | Учитывать файлы .qwenignore при поиске. | true |
context.fileFiltering.enableRecursiveFileSearch | булево | Разрешить рекурсивный поиск имен файлов в текущем дереве при автодополнении префиксов @ в запросе. | true |
context.fileFiltering.disableFuzzySearch | булево | Если true, отключает нечеткий поиск при поиске файлов, что может повысить производительность в проектах с большим количеством файлов. | false |
Устранение неполадок с производительностью поиска файлов
Если вы сталкиваетесь с проблемами производительности при поиске файлов (например, при использовании автодополнения с @), особенно в проектах с очень большим количеством файлов, попробуйте следующие решения в порядке рекомендации:
- Используйте
.qwenignore: Создайте файл.qwenignoreв корне вашего проекта, чтобы исключить каталоги, содержащие большое количество файлов, на которые вам не нужно ссылаться (например, сборочные артефакты, логи,node_modules). Снижение общего числа просканированных файлов — это самый эффективный способ улучшить производительность. - Отключите нечеткий поиск: Если игнорирование файлов не помогает, можно отключить нечеткий поиск, установив значение
disableFuzzySearchравнымtrueв вашем файлеsettings.json. Будет использоваться более простой алгоритм точного совпадения, который может работать быстрее. - Отключите рекурсивный поиск файлов: В крайнем случае можно полностью отключить рекурсивный поиск файлов, установив значение
enableRecursiveFileSearchравнымfalse. Это будет самым быстрым вариантом, так как избежит рекурсивного сканирования проекта. Однако это означает, что при использовании автодополнения с@вам придется вводить полный путь к файлам.
tools
| Параметр | Тип | Описание | По умолчанию | Примечания |
|---|---|---|---|---|
tools.sandbox | boolean или string | Песочница для выполнения (может быть булевым значением или строкой пути). | 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 | string | Устанавливает режим одобрения по умолчанию для использования инструментов. | default | Возможные значения: plan (только анализировать, не изменять файлы и не выполнять команды), default (требовать одобрение перед редактированием файлов или выполнением команд оболочки), auto-edit (автоматически одобрять редактирование файлов), yolo (автоматически одобрять все вызовы инструментов) |
tools.discoveryCommand | string | Команда для запуска поиска инструментов. | undefined | |
tools.callCommand | string | Определяет пользовательскую команду оболочки для вызова определённого инструмента, который был найден с помощью 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 | number | Усекать выходные данные инструмента, если они превышают указанное количество символов. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles. | 25000 | Требуется перезапуск: Да |
tools.truncateToolOutputLines | number | Максимальное количество строк или записей, сохраняемых при усечении выходных данных инструмента. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles. | 1000 | Требуется перезапуск: Да |
tools.autoAccept | boolean | Контролирует, будет ли CLI автоматически принимать и выполнять вызовы инструментов, считающиеся безопасными (например, операции только для чтения), без явного подтверждения пользователя. Если установлено значение true, CLI пропустит запрос подтверждения для инструментов, считающихся безопасными. | false |
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. Не следует полагаться на это как на надёжный механизм безопасности.
безопасность
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
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 (строка): 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 | string | Команда для запуска сервера MCP через стандартный ввод/вывод. | Да |
mcpServers.<SERVER_NAME>.args | array of strings | Аргументы, передаваемые команде. | Да |
mcpServers.<SERVER_NAME>.env | object | Переменные окружения, устанавливаемые для процесса сервера. | Да |
mcpServers.<SERVER_NAME>.cwd | string | Рабочая директория, в которой будет запущен сервер. | Да |
mcpServers.<SERVER_NAME>.url | string | URL сервера MCP, использующего Server-Sent Events (SSE) для связи. | Да |
mcpServers.<SERVER_NAME>.httpUrl | string | URL сервера MCP, использующего потоковое HTTP для связи. | Да |
mcpServers.<SERVER_NAME>.headers | object | Карта HTTP-заголовков, отправляемых вместе с запросами к url или httpUrl. | Да |
mcpServers.<SERVER_NAME>.timeout | number | Таймаут в миллисекундах для запросов к этому серверу MCP. | Да |
mcpServers.<SERVER_NAME>.trust | boolean | Доверять этому серверу и пропустить все подтверждения вызова инструментов. | Да |
mcpServers.<SERVER_NAME>.description | string | Краткое описание сервера, которое может использоваться для отображения. | Да |
mcpServers.<SERVER_NAME>.includeTools | array of strings | Список имен инструментов, которые следует включить с этого сервера MCP. Если указано, то только перечисленные здесь инструменты будут доступны с этого сервера (поведение allowlist). Если не указано, по умолчанию включаются все инструменты с сервера. | Да |
mcpServers.<SERVER_NAME>.excludeTools | array of strings | Список имен инструментов, которые следует исключить с этого сервера MCP. Перечисленные здесь инструменты не будут доступны модели, даже если они предоставлены сервером. Примечание: excludeTools имеет приоритет над includeTools — если инструмент есть в обоих списках, он будет исключен. | Да |
telemetry
Настраивает сбор логов и метрик для 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",
"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,
"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"]
}
}История командной строки
Интерфейс командной строки сохраняет историю выполненных вами команд оболочки. Чтобы избежать конфликтов между различными проектами, эта история хранится в специальном каталоге проекта внутри домашней папки пользователя.
- Расположение:
~/.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 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 через pipe. Пример: qwen -i "explain this code" |
--output-format | -o | Указывает формат вывода CLI в неинтерактивном режиме. | text, json, stream-json | text: (По умолчанию) Стандартный человекочитаемый вывод. json: Машиночитаемый JSON-вывод, выдаваемый по завершении выполнения. stream-json: Потоковые JSON-сообщения, выдаваемые по мере их возникновения во время выполнения. Для структурированного вывода и скриптов используйте флаг --output-format json или --output-format stream-json. Подробнее см. в разделе Headless Mode. |
--input-format | Указывает формат данных, принимаемых со стандартного ввода. | text, stream-json | text: (По умолчанию) Стандартный текстовый ввод из stdin или аргументов командной строки. stream-json: Протокол JSON-сообщений через stdin для двунаправленной связи. Требование: При использовании --input-format stream-json необходимо установить --output-format stream-json. При использовании stream-json stdin зарезервирован для протокольных сообщений. Подробнее см. в разделе Headless Mode. | |
--include-partial-messages | Включает частичные сообщения от ассистента при использовании формата вывода stream-json. Если включено, выдаются события потока (message_start, content_block_delta и т. д.) по мере их возникновения во время потоковой передачи. | По умолчанию: false. Требование: Необходимо установить --output-format stream-json. Подробнее о событиях потока см. в разделе Headless Mode. | ||
--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Подробнее см. в разделе Approval Mode. | |
--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 | Включает контрольные точки. | |||
--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/<configured-context-filename>` (например, `~/.qwen/QWEN.md` в вашем домашнем каталоге пользователя).
- Область применения: Предоставляет стандартные инструкции для всех ваших проектов.
2. **Файлы контекста корня проекта и его предков:**
- Расположение: CLI ищет настроенный файл контекста в текущем рабочем каталоге, а затем в каждом родительском каталоге до корня проекта (определяется по папке `.git`) или вашего домашнего каталога.
- Область применения: Предоставляет контекст, относящийся ко всему проекту или значительной его части.
3. **Файлы контекста подкаталогов (контекстуальные/локальные):**
- Расположение: CLI также сканирует наличие настроенного файла контекста в подкаталогах _ниже_ текущего рабочего каталога (с учетом распространенных шаблонов игнорирования, таких как `node_modules`, `.git` и т. д.). По умолчанию глубина этого поиска ограничена 200 каталогами, но может быть изменена с помощью параметра `context.discoveryMaxDirs` в вашем файле `settings.json`.
- Область применения: Позволяет задать очень специфичные инструкции, относящиеся к конкретному компоненту, модулю или разделу вашего проекта.
- **Объединение и отображение в интерфейсе:** Содержимое всех найденных файлов контекста объединяется (с разделителями, указывающими их происхождение и путь) и предоставляется как часть системного запроса. В нижнем колонтитуле CLI отображается количество загруженных файлов контекста, что дает вам быстрый визуальный сигнал об активном инструкционном контексте.
- **Импорт содержимого:** Вы можете модульно организовать свои файлы контекста, импортируя другие Markdown-файлы с помощью синтаксиса `@path/to/file.md`. Для получения дополнительной информации см. [Документацию по процессору импорта памяти](../configuration/memory).
- **Команды управления памятью:**
- Используйте `/memory refresh`, чтобы принудительно пересканировать и перезагрузить все файлы контекста из всех настроенных местоположений. Это обновляет инструкционный контекст ИИ.
- Используйте `/memory show`, чтобы отобразить объединённый инструкционный контекст, который в данный момент загружен, позволяя вам проверить иерархию и содержимое, используемое ИИ.
- Смотрите [Документацию по командам](../features/commands) для полной информации о команде `/memory` и её подкомандах (`show` и `refresh`).
Понимая и используя эти уровни конфигурации и иерархическую природу файлов контекста, вы сможете эффективно управлять памятью ИИ и адаптировать ответы 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
}
}Когда статистика использования включена, события отправляются на конечную точку сбора Alibaba Cloud RUM.