Skip to Content
CLIКонфигурация

Настройка Qwen Code

Примечание о новом формате конфигурации

Формат файла settings.json был обновлен до новой, более организованной структуры. Старый формат будет автоматически перенесен.

Подробности о предыдущем формате см. в документации по конфигурации v1.

Qwen Code предлагает несколько способов настройки своего поведения, включая переменные окружения, аргументы командной строки и файлы настроек. В этом документе описаны различные методы конфигурации и доступные параметры.

Уровни конфигурации

Конфигурация применяется в следующем порядке приоритета (более низкие номера переопределяются более высокими):

  1. Значения по умолчанию: Жестко закодированные значения по умолчанию внутри приложения.
  2. Файл системных настроек по умолчанию: Системные настройки по умолчанию, которые могут быть переопределены другими файлами настроек.
  3. Файл пользовательских настроек: Глобальные настройки для текущего пользователя.
  4. Файл настроек проекта: Настройки, специфичные для проекта.
  5. Файл системных настроек: Системные настройки, которые переопределяют все остальные файлы настроек.
  6. Переменные окружения: Системные или сессионные переменные, потенциально загруженные из .env файлов.
  7. Аргументы командной строки: Значения, переданные при запуске 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, такие как:

Доступные настройки в 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, чтобы полностью отключить сжатие.
    • По умолчанию: 0.7
  • model.generationConfig (object):

    • Описание: Расширенные настройки, передаваемые генератору контента. Поддерживает параметры запроса, такие как timeout, maxRetries и disableCacheControl, а также тонкие настройки в samplingParams (например, temperature, top_p, max_tokens). Оставьте пустым, чтобы использовать значения по умолчанию провайдера.

    • По умолчанию: undefined

    • Пример:

      { "model": { "generationConfig": { "timeout": 60000, "disableCacheControl": false, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }
  • 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
    • Примеры:
      • "~/qwen-logs" — Логи сохраняются в директорию ~/qwen-logs
      • "./custom-logs" — Логи сохраняются в ./custom-logs относительно текущей директории
      • "/tmp/openai-logs" — Логи сохраняются по абсолютному пути /tmp/openai-logs

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):

    • Описание: Песочница для выполнения (может быть boolean или строкой с путем).
    • По умолчанию: undefined
  • tools.shell.enableInteractiveShell (boolean):

    Использовать node-pty для интерактивного shell. В случае ошибки будет использован child_process. По умолчанию false.

  • tools.core (массив строк):

    • Описание: Может использоваться для ограничения набора встроенных инструментов с помощью allowlist. Список основных инструментов см. в разделе Встроенные инструменты. Логика соответствия такая же, как и у tools.allowed.
    • По умолчанию: undefined
  • tools.exclude (массив строк):

    • Описание: Имена инструментов, которые нужно исключить из поиска.
    • По умолчанию: undefined
  • tools.allowed (массив строк):

    • Описание: Список имен инструментов, для которых не будет отображаться диалог подтверждения. Полезно для часто используемых и доверенных инструментов. Например, ["run_shell_command(git)", "run_shell_command(npm test)"] пропустит диалог подтверждения при запуске любых команд git и npm test. Подробнее о префиксном сопоставлении, цепочках команд и т. д. см. в разделе Ограничения команд Shell Tool.
    • По умолчанию: undefined
  • tools.approvalMode (string):

    • Описание: Устанавливает режим подтверждения использования инструментов по умолчанию. Допустимые значения:
      • plan: Только анализ, без изменения файлов или выполнения команд.
      • default: Требовать подтверждение перед редактированием файлов или запуском shell-команд.
      • auto-edit: Автоматически одобрять редактирование файлов.
      • yolo: Автоматически одобрять все вызовы инструментов.
    • По умолчанию: default
  • tools.discoveryCommand (string):

    • Описание: Команда для обнаружения инструментов.
    • По умолчанию: undefined
  • tools.callCommand (string):

    • Описание: Определяет пользовательскую shell-команду для вызова конкретного инструмента, найденного с помощью 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
  • tools.enableToolOutputTruncation (boolean):

    • Описание: Включить усечение больших выводов инструментов.
    • По умолчанию: true
    • Требуется перезапуск: Да
  • tools.truncateToolOutputThreshold (number):

    • Описание: Усекать вывод инструмента, если он превышает указанное количество символов. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles.
    • По умолчанию: 25000
    • Требуется перезапуск: Да
  • tools.truncateToolOutputLines (number):

    • Описание: Максимальное количество строк или записей, сохраняемых при усечении вывода инструмента. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles.
    • По умолчанию: 1000
    • Требуется перезапуск: Да

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.
    • Примечание: Это устаревший формат конфигурации. Для пользователей Qwen OAuth провайдер DashScope доступен автоматически без дополнительной настройки. Для других типов аутентификации настройте провайдеры Tavily или Google с использованием нового формата конфигурации webSearch.
    • По умолчанию: undefined

mcpServers

Настраивает подключения к одному или нескольким серверам Model-Context Protocol (MCP) для обнаружения и использования пользовательских инструментов. Qwen Code пытается подключиться к каждому из указанных 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, "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"] } }

История команд Shell

CLI сохраняет историю выполненных вами shell-команд. Чтобы избежать конфликтов между разными проектами, эта история хранится в директории, специфичной для проекта, внутри домашней папки пользователя.

  • Расположение: ~/.qwen/tmp/<project_hash>/shell_history
    • <project_hash> — это уникальный идентификатор, сгенерированный на основе корневого пути вашего проекта.
    • История команд хранится в файле с именем shell_history.

Переменные окружения и файлы .env

Переменные окружения — это распространённый способ конфигурации приложений, особенно для чувствительных данных, таких как API ключи, или для настроек, которые могут отличаться в зависимости от среды выполнения. Подробнее о настройке аутентификации можно прочитать в документации по аутентификации, где описаны все доступные методы.

CLI автоматически загружает переменные окружения из файла .env. Порядок загрузки следующий:

  1. Файл .env в текущей рабочей директории.
  2. Если файл не найден, поиск продолжается в родительских директориях до тех пор, пока не будет найден файл .env, либо достигнут корень проекта (определяется наличием папки .git) или домашняя директория пользователя.
  3. Если файл всё ещё не найден, CLI попытается загрузить ~/.env (в домашней директории пользователя).

Исключение переменных окружения: Некоторые переменные окружения (например, DEBUG и DEBUG_MODE) по умолчанию исключаются из проектных .env файлов, чтобы не мешать работе CLI. Переменные из файлов .qwen/.env никогда не исключаются. Вы можете изменить это поведение с помощью параметра advanced.excludedEnvVars в вашем файле settings.json.

  • OPENAI_API_KEY:
  • OPENAI_BASE_URL:
  • 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.
  • 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.
  • TAVILY_API_KEY:
    • Ваш API ключ для сервиса веб-поиска Tavily.
    • Используется для включения функциональности инструмента web_search.
    • Примечание: Для пользователей Qwen OAuth провайдер DashScope доступен автоматически без дополнительной настройки. Для других типов аутентификации настройте провайдеры Tavily или Google, чтобы включить веб-поиск.
    • Пример: 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> (-o <format>):
    • Описание: Определяет формат вывода CLI в неинтерактивном режиме.
    • Значения:
      • text: (по умолчанию) Стандартный человекочитаемый вывод.
      • json: Машиночитаемый JSON-вывод, который генерируется по завершении выполнения.
      • stream-json: Потоковые JSON-сообщения, отправляемые по мере их возникновения во время выполнения.
    • Примечание: Для структурированного вывода и скриптов используйте флаг --output-format json или --output-format stream-json. Подробнее см. в разделе Headless Mode.
  • --input-format <format>:
    • Описание: Определяет формат входных данных из стандартного потока ввода (stdin).
    • Значения:
      • 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 <mode>:
    • Устанавливает режим подтверждения вызовов инструментов. Поддерживаемые режимы:
      • plan: Только анализ — без изменения файлов или выполнения команд.
      • default: Требовать подтверждение для редактирования файлов или выполнения команд (поведение по умолчанию).
      • auto-edit: Автоматически одобрять инструменты редактирования (edit, write_file), запрашивая подтверждение для остальных.
      • yolo: Автоматически одобрять все вызовы инструментов (эквивалент --yolo).
    • Нельзя использовать вместе с --yolo. Вместо этого используйте --approval-mode=yolo для нового унифицированного подхода.
    • Пример: qwen --approval-mode auto-edit
  • --allowed-tools <tool1,tool2,...>:
    • Список названий инструментов, разделённых запятыми, которые будут пропущены без запроса подтверждения.
    • Пример: 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 <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-logging-dir <directory>:
    • Устанавливает пользовательский путь к директории для логов OpenAI API. Этот флаг переопределяет настройку openAILoggingDir в settings.json. Поддерживаются абсолютные пути, относительные пути и раскрытие ~.
    • Пример: qwen --openai-logging-dir "~/qwen-logs" --openai-logging
  • --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-запросов. ```markdown ## Зависимости: - Избегайте добавления новых внешних зависимостей без крайней необходимости. - Если новая зависимость необходима, пожалуйста, укажите причину. Этот пример демонстрирует, как можно предоставить общий контекст проекта, конкретные соглашения по кодированию и даже заметки о конкретных файлах или компонентах. Чем более релевантны и точны ваши файлы контекста, тем лучше ИИ сможет вам помочь. Файлы контекста, специфичные для проекта, настоятельно рекомендуются для установления соглашений и контекста. - **Иерархическая загрузка и приоритетность:** 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`. Подробнее см. в [документации Memory Import Processor](../core/memport.md). - **Команды управления памятью:** - Используйте `/memory refresh`, чтобы принудительно пересканировать и перезагрузить все файлы контекста из всех настроенных мест. Это обновит инструкционный контекст ИИ. - Используйте `/memory show`, чтобы отобразить объединённый инструкционный контекст, который сейчас загружен, что позволит вам проверить иерархию и содержание, используемое ИИ. - Полная информация о команде `/memory` и её подкомандах (`show` и `refresh`) доступна в [документации Commands](./commands.md#memory). Понимая и используя эти уровни конфигурации и иерархическую природу файлов контекста, вы сможете эффективно управлять памятью ИИ и адаптировать ответы Qwen Code под свои конкретные нужды и проекты.

Sandboxing

Qwen Code может выполнять потенциально небезопасные операции (например, shell-команды и изменения файлов) в sandbox-окружении для защиты вашей системы.

По умолчанию sandboxing отключен, но вы можете включить его несколькими способами:

  • Используя флаг --sandbox или -s.
  • Установив переменную окружения GEMFI_SANDBOX.
  • Sandbox включается по умолчанию при использовании --yolo или --approval-mode=yolo.

По умолчанию используется предварительно собранный Docker-образ qwen-code-sandbox.

Если вам нужно настроить sandbox под конкретный проект, вы можете создать собственный Dockerfile по пути .qwen/sandbox.Dockerfile в корневой директории вашего проекта. Этот Dockerfile может быть основан на базовом sandbox-образе:

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 для автоматической сборки кастомного 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.

Last updated on