Конфигурация Qwen Code
Аутентификация / API-ключи: Аутентификация (API Key, Alibaba Cloud Coding Plan) и связанные с ней переменные окружения (например, OPENAI_API_KEY) описаны в разделе Authentication.
Примечание о новом формате конфигурации: Формат файла 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). - Agent Skills в
.qwen/skills/(каждый навык — это директория, содержащаяSKILL.md).
Миграция конфигурации
Qwen Code автоматически переносит устаревшие настройки конфигурации в новый формат. Перед миграцией старые файлы настроек создаются резервные копии. Следующие настройки были переименованы из негативных (disable*) в позитивные (enable*):
| Устаревшая настройка | Новая настройка | Примечания |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Объединено в одну настройку |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Инверсия булевых значений: При миграции булевы значения инвертируются (например, disableAutoUpdate: true становится enableAutoUpdate: false).
Политика объединения для disableAutoUpdate и disableUpdateNag
Когда присутствуют обе устаревшие настройки с разными значениями, миграция следует этой политике: если любая из disableAutoUpdate или disableUpdateNag равна true, то enableAutoUpdate становится false:
disableAutoUpdate | disableUpdateNag | Перенесённая enableAutoUpdate |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Доступные настройки в settings.json
Настройки организованы по категориям. Большинство настроек следует размещать внутри соответствующего объекта категории верхнего уровня в вашем файле settings.json. Несколько настроек для обратной совместимости, таких как proxy, являются ключами верхнего уровня.
top-level
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
proxy | string | Proxy URL для HTTP-запросов CLI. Приоритет: --proxy > proxy в settings.json > переменные окружения HTTPS_PROXY / https_proxy / HTTP_PROXY / http_proxy. | undefined |
general
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
general.preferredEditor | string | Предпочитаемый редактор для открытия файлов. | undefined |
general.vimMode | boolean | Включить привязки клавиш Vim. | false |
general.enableAutoUpdate | boolean | Включить автоматическую проверку и установку обновлений при запуске. | true |
general.showSessionRecap | boolean | Автоматически показывать однострочную сводку «где вы остановились» при возвращении в терминал после перерыва. По умолчанию выключено. Используйте /recap для ручного вызова независимо от этой настройки. | false |
general.sessionRecapAwayThresholdMinutes | number | Количество минут, в течение которых терминал должен быть неактивен, чтобы при возврате фокуса сработала автосводка. Используется только при включённом showSessionRecap. | 5 |
general.gitCoAuthor | boolean | Автоматически добавлять трейлер Co-authored-by к сообщениям коммитов git, если коммиты создаются через Qwen Code. | true |
general.checkpointing.enabled | boolean | Включить создание контрольных точек сессии для восстановления. | false |
general.defaultFileEncoding | string | Кодировка по умолчанию для новых файлов. Используйте "utf-8" (по умолчанию) для UTF-8 без BOM или "utf-8-bom" для UTF-8 с BOM. Меняйте это значение только если ваш проект явно требует BOM. | "utf-8" |
output
| Настройка | Тип | Описание | Значение по умолчанию | Возможные значения |
|---|---|---|---|---|
output.format | string | Формат вывода CLI. | "text" | "text", "json" |
ui
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
ui.theme | string | Цветовая тема интерфейса. Доступные варианты см. в Themes. | undefined |
ui.customThemes | object | Определения пользовательских тем. | {} |
ui.statusLine | object | Конфигурация пользовательской строки состояния. Команда оболочки, вывод которой отображается в левой части футера. См. Status Line. | undefined |
ui.hideWindowTitle | boolean | Скрыть заголовок окна. | false |
ui.hideTips | boolean | Скрыть все подсказки (при запуске и после ответа) в интерфейсе. См. Contextual Tips. | false |
ui.hideBanner | boolean | Скрыть баннер приложения. | false |
ui.hideFooter | boolean | Скрыть футер из интерфейса. | false |
ui.showMemoryUsage | boolean | Отображать информацию об использовании памяти в интерфейсе. | false |
ui.showLineNumbers | boolean | Показывать номера строк в блоках кода в выводе CLI. | true |
ui.showCitations | boolean | Показывать ссылки на источники для сгенерированного текста в чате. | true |
ui.compactMode | boolean | Скрыть вывод инструментов и процесс мышления для более чистого вида. Переключается через Ctrl+O во время сессии или через диалог настроек. Запросы на подтверждение инструментов никогда не скрываются, даже в компактном режиме. Настройка сохраняется между сессиями. | false |
ui.shellOutputMaxLines | number | Максимальное количество строк вывода оболочки, отображаемых inline. Установите 0, чтобы отключить ограничение и показать полный вывод. Скрытые строки отображаются через индикатор +N lines. Ошибки, команды пользователя с префиксом !, подтверждающие инструменты и сфокусированные встроенные оболочки всегда показывают полный вывод. | 5 |
enableWelcomeBack | boolean | Показывать диалог приветствия при возвращении в проект с историей разговора. При включении Qwen Code автоматически определяет, возвращаетесь ли вы в проект с ранее сгенерированным резюме проекта (.qwen/PROJECT_SUMMARY.md), и показывает диалог, позволяющий продолжить предыдущий разговор или начать заново. Если вы выберете Start new chat session, этот выбор запоминается для текущего проекта до изменения резюме проекта. Эта функция интегрируется с командой /summary и диалогом подтверждения выхода. | true |
ui.accessibility.enableLoadingPhrases | boolean | Включить фразы загрузки (отключите для улучшения доступности). | true |
ui.accessibility.screenReader | boolean | Включает режим экранных дикторов, который адаптирует TUI для лучшей совместимости с программами чтения с экрана. | false |
ui.customWittyPhrases | array of strings | Список пользовательских фраз для отображения в состояниях загрузки. При указании CLI будет переключаться между этими фразами вместо стандартных. | [] |
ui.enableFollowupSuggestions | boolean | Включить последующие предложения, которые предсказывают, что вы хотите ввести дальше после ответа модели. Предложения появляются как «призрачный текст» и могут быть приняты клавишами Tab, Enter или стрелкой вправо. | true |
ui.enableCacheSharing | boolean | Использовать форкнутые запросы с учётом кэша для генерации предложений. Снижает затраты у провайдеров, поддерживающих кэширование префиксов (экспериментально). | true |
ui.enableSpeculation | boolean | Спекулятивно выполнять принятые предложения до отправки. Результаты появляются мгновенно при принятии (экспериментально). | false |
experimental.emitToolUseSummaries | boolean | Генерировать короткие метки на основе LLM, суммирующие каждый пакет вызовов инструментов. См. Tool-Use Summaries. Требует настройки fastModel; в противном случае молча пропускается. Может быть переопределено для сессии через QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 или =1. | true |
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.generationConfig | object | Расширенные переопределения, передаваемые базовому генератору контента. Поддерживает элементы управления запросами, такие как timeout, maxRetries, enableCacheControl, splitToolMedia (установите true для строго совместимых с OpenAI серверов, таких как LM Studio, которые отклоняют нетекстовый контент в сообщениях role: "tool" — разделяет медиа на последующее сообщение пользователя), contextWindowSize (переопределение размера контекстного окна модели), modalities (переопределение автоматически определённых входных модальностей), customHeaders (пользовательские HTTP-заголовки для API-запросов), extra_body (дополнительные параметры тела только для запросов к API, совместимым с OpenAI) и reasoning ({ effort: 'low' | 'medium' | 'high' | 'max', budget_tokens?: number } для управления интенсивностью мышления или false для отключения; 'max' — расширение DeepSeek — см. Reasoning / thinking configuration для поведения у разных провайдеров. Примечание: когда samplingParams установлен у провайдера, совместимого с OpenAI, конвейер передаёт эти ключи как есть, а отдельное поле reasoning верхнего уровня игнорируется — в этом случае поместите reasoning_effort внутрь samplingParams (или extra_body)), а также тонкие настройки в 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,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"customHeaders": {
"X-Client-Request-ID": "req-123"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}max_tokens (адаптивные выходные токены):
Когда samplingParams.max_tokens не установлен, Qwen Code использует адаптивную стратегию выходных токенов для оптимизации использования ресурсов GPU:
- Запросы начинаются с лимита по умолчанию 8K выходных токенов
- Если ответ обрезан (модель достигает лимита), Qwen Code автоматически повторяет попытку с 64K токенов
- Частичный вывод отбрасывается и заменяется полным ответом из повторной попытки
Это прозрачно для пользователей — вы можете кратко увидеть индикатор повторной попытки, если произойдёт масштабирование. Поскольку 99% ответов занимают менее 5K токенов, повторная попытка происходит редко (<1% запросов).
Чтобы переопределить это поведение, установите samplingParams.max_tokens в настройках или используйте переменную окружения QWEN_CODE_MAX_OUTPUT_TOKENS.
contextWindowSize:
Переопределяет размер контекстного окна по умолчанию для выбранной модели. Qwen Code определяет контекстное окно, используя встроенные значения по умолчанию на основе сопоставления имён моделей, с постоянным резервным значением. Используйте эту настройку, когда эффективный лимит контекста провайдера отличается от значения по умолчанию в Qwen Code. Это значение определяет предполагаемую максимальную ёмкость контекста модели, а не лимит токенов на запрос.
modalities:
Переопределяет автоматически определённые входные модальности для выбранной модели. Qwen Code автоматически определяет поддерживаемые модальности (изображение, PDF, аудио, видео) на основе сопоставления паттернов имён моделей. Используйте эту настройку, если автоопределение неверно — например, чтобы включить pdf для модели, которая поддерживает его, но не распознаётся. Формат: { "image": true, "pdf": true, "audio": true, "video": true }. Опустите ключ или установите false для неподдерживаемых типов.
customHeaders:
Позволяет добавлять пользовательские HTTP-заголовки ко всем API-запросам. Это полезно для трассировки запросов, мониторинга, маршрутизации через API-шлюз или когда разным моделям требуются разные заголовки. Если customHeaders определён в modelProviders[].generationConfig.customHeaders, он будет использован напрямую; в противном случае будут использованы заголовки из model.generationConfig.customHeaders. Слияние между двумя уровнями не происходит.
Поле extra_body позволяет добавлять пользовательские параметры в тело запроса, отправляемого в API. Это полезно для специфичных для провайдера опций, не покрытых стандартными полями конфигурации. Примечание: Это поле поддерживается только для провайдеров, совместимых с OpenAI (openai, qwen-oauth). Оно игнорируется для провайдеров Anthropic и Gemini. Если extra_body определён в modelProviders[].generationConfig.extra_body, он будет использован напрямую; в противном случае будут использованы значения из model.generationConfig.extra_body.
Примеры model.openAILoggingDir:
"~/qwen-logs"- Логи в директории~/qwen-logs"./custom-logs"- Логи в./custom-logsотносительно текущей директории"/tmp/openai-logs"- Логи по абсолютному пути/tmp/openai-logs
fastModel
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
fastModel | string | Модель, используемая для генерации предложений по промпту и спекулятивного выполнения. Оставьте пустым, чтобы использовать основную модель. Меньшая/быстрая модель (например, qwen3-coder-flash) снижает задержку и стоимость. Также можно установить через /model --fast. | "" |
context
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
context.fileName | string or array of strings | Имя файла(ов) контекста. | undefined |
context.importFormat | string | Формат, используемый при импорте памяти. | undefined |
context.includeDirectories | array | Дополнительные директории для включения в контекст рабочего пространства. Указывает массив дополнительных абсолютных или относительных путей. Отсутствующие директории будут пропущены с предупреждением. Пути могут использовать ~ для ссылки на домашнюю директорию пользователя. Эта настройка может комбинироваться с флагом командной строки --include-directories. | [] |
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 | Включает ли рекурсивный поиск имён файлов в текущем дереве при автодополнении префиксов @ в промпте. | true |
context.fileFiltering.enableFuzzySearch | boolean | При true включает возможности нечёткого поиска при поиске файлов. Установите false для повышения производительности в проектах с большим количеством файлов. | true |
context.clearContextOnIdle.toolResultsThresholdMinutes | number | Минуты неактивности перед очисткой старого содержимого результатов инструментов. Используйте -1 для отключения. | 60 |
context.clearContextOnIdle.toolResultsNumToKeep | number | Количество последних компактируемых результатов инструментов для сохранения при очистке. Минимум 1. | 5 |
Устранение проблем с производительностью поиска файлов
Если вы сталкиваетесь с проблемами производительности при поиске файлов (например, при автодополнении @), особенно в проектах с очень большим количеством файлов, попробуйте следующие шаги в порядке рекомендации:
- Используйте
.qwenignore: Создайте файл.qwenignoreв корне вашего проекта, чтобы исключить директории, содержащие большое количество файлов, которые не нужно индексировать (например, артефакты сборки, логи,node_modules). Сокращение общего количества сканируемых файлов — самый эффективный способ повысить производительность. - Отключите нечёткий поиск: Если игнорирования файлов недостаточно, вы можете отключить нечёткий поиск, установив
enableFuzzySearchвfalseв вашем файлеsettings.json. Это переключит на более простой алгоритм точного сопоставления, который может работать быстрее. - Отключите рекурсивный поиск файлов: В крайнем случае вы можете полностью отключить рекурсивный поиск, установив
enableRecursiveFileSearchвfalse. Это будет самым быстрым вариантом, так как избегает рекурсивного обхода проекта. Однако это означает, что вам придётся вводить полный путь к файлам при использовании автодополнения@.
tools
| Настройка | Тип | Описание | Значение по умолчанию | Примечания |
|---|---|---|---|---|
tools.sandbox | boolean or string | Среда выполнения песочницы (может быть булевым значением или строкой пути). | undefined | |
tools.sandboxImage | string | URI образа песочницы, используемый Docker/Podman, когда не установлены --sandbox-image и QWEN_SANDBOX_IMAGE. | undefined | |
tools.shell.enableInteractiveShell | boolean | Использовать node-pty для интерактивной работы с оболочкой. Резервный вариант child_process всё ещё применяется. | false | |
tools.core | array of strings | Устарело. Будет удалено в следующей версии. Вместо этого используйте permissions.allow + permissions.deny. Ограничивает встроенные инструменты белым списком. Все инструменты, не входящие в список, отключены. | undefined | |
tools.exclude | array of strings | Устарело. Вместо этого используйте permissions.deny. Имена инструментов для исключения из обнаружения. Автоматически переносится в формат permissions при первой загрузке. | undefined | |
tools.allowed | array of strings | Устарело. Вместо этого используйте permissions.allow. Имена инструментов, обходящие диалог подтверждения. Автоматически переносится в формат permissions при первой загрузке. | undefined | |
tools.approvalMode | string | Устанавливает режим подтверждения по умолчанию для использования инструментов. | default | Возможные значения: plan (только анализ, не изменять файлы и не выполнять команды), default (требовать подтверждения перед редактированием файлов или выполнением команд оболочки), auto-edit (автоматически одобрять редактирование файлов), yolo (автоматически одобрять все вызовы инструментов) |
tools.discoveryCommand | string | Команда для запуска обнаружения инструментов. | undefined | |
tools.callCommand | string | Определяет пользовательскую команду оболочки для вызова конкретного инструмента, обнаруженного через tools.discoveryCommand. Команда должна соответствовать следующим критериям: принимать имя функции name (точно как в function declaration ) в качестве первого аргумента командной строки. Читать аргументы функции в формате 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.truncateToolOutputThreshold | number | Обрезать вывод инструмента, если он превышает указанное количество символов. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles. | 25000 | Требуется перезапуск: Да |
tools.truncateToolOutputLines | number | Максимальное количество строк или записей, сохраняемых при обрезке вывода инструмента. Применяется к инструментам Shell, Grep, Glob, ReadFile и ReadManyFiles. | 1000 | Требуется перезапуск: Да |
Миграция с tools.core / tools.exclude / tools.allowed: Эти устаревшие настройки помечены как устаревшие и автоматически переносятся в новый формат permissions при первой загрузке. Рекомендуется настраивать permissions.allow / permissions.deny напрямую. Используйте /permissions для интерактивного управления правилами.
memory
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
memory.enableManagedAutoMemory | boolean | Включить фоновое извлечение воспоминаний из разговоров. | true |
memory.enableManagedAutoDream | boolean | Включить автоматическую консолидацию (дедупликацию и очистку) собранных воспоминаний. | false |
Подробности о работе автопамяти и использовании команд /memory, /remember и /dream см. в разделе Memory.
permissions
Система разрешений предоставляет детальный контроль над тем, какие инструменты могут выполняться, какие требуют подтверждения, а какие заблокированы.
Приоритет принятия решений (от высшего к низшему): deny > ask > allow > (по умолчанию/интерактивный режим)
Применяется первое совпавшее правило. Правила используют формат "ToolName" или "ToolName(specifier)".
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
permissions.allow | array of strings | Правила для автоматически одобренных вызовов инструментов (подтверждение не требуется). Объединяются по всем областям (пользователь + проект + система). | undefined |
permissions.ask | array of strings | Правила для вызовов инструментов, всегда требующих подтверждения пользователя. Имеет приоритет над allow. | undefined |
permissions.deny | array of strings | Правила для заблокированных вызовов инструментов. Наивысший приоритет — переопределяет как allow, так и ask. | undefined |
Псевдонимы имён инструментов (в правилах работают любые из них):
| Псевдоним | Канонический инструмент | Примечания |
|---|---|---|
Bash, Shell | run_shell_command | |
Read, ReadFile | read_file | Мета-категория — см. ниже |
Edit, EditFile | edit | Мета-категория — см. ниже |
Write, WriteFile | write_file | |
Grep, SearchFiles | grep_search | |
Glob, FindFiles | glob | |
ListFiles | list_directory | |
WebFetch | web_fetch | |
Agent | task | |
Skill | skill |
Мета-категории:
Некоторые имена правил автоматически охватывают несколько инструментов:
| Имя правила | Охватываемые инструменты |
|---|---|
Read | read_file, grep_search, glob, list_directory |
Edit | edit, write_file |
[!important]
Read(/path/**)соответствует всем четырём инструментам чтения (чтение файла, grep, glob и список директорий). Чтобы ограничить только чтение файлов, используйтеReadFile(/path/**)илиread_file(/path/**).
Примеры синтаксиса правил:
| Правило | Значение |
|---|---|
"Bash" | Все команды оболочки |
"Bash(git *)" | Команды оболочки, начинающиеся с git (граница слова: НЕ gitk) |
"Bash(git push *)" | Команды оболочки вида git push origin main |
"Bash(npm run *)" | Любой скрипт npm run |
"Read" | Все операции чтения файлов (read, grep, glob, list) |
"Read(./secrets/**)" | Читать любой файл в ./secrets/ рекурсивно |
"Edit(/src/**/*.ts)" | Редактировать TypeScript-файлы в /src/ относительно корня проекта |
"WebFetch(api.example.com)" | Загружать данные с api.example.com и всех его поддоменов |
"mcp__puppeteer" | Все инструменты с MCP-сервера puppeteer |
Префиксы шаблонов путей:
| Префикс | Значение | Пример |
|---|---|---|
// | Абсолютный путь от корня файловой системы | //etc/passwd |
~/ | Относительно домашней директории | ~/Documents/*.pdf |
/ | Относительно корня проекта | /src/**/*.ts |
./ | Относительно текущей рабочей директории | ./secrets/** |
| (нет) | То же, что ./ | secrets/** |
Предотвращение обхода через команды оболочки:
Правила разрешений для Read, Edit и WebFetch также применяются, когда агент запускает эквивалентные команды оболочки. Например, если Read(./.env) находится в deny, агент не сможет обойти это через cat .env в команде оболочки. Поддерживаемые команды оболочки включают cat, grep, curl, wget, cp, mv, rm, chmod и многие другие. Неизвестные/безопасные команды (например, git) не затрагиваются правилами для файлов/сети.
Миграция с устаревших настроек:
| Устаревшая настройка | Эквивалентное правило permissions | Примечания |
|---|---|---|
tools.allowed | permissions.allow | Автоматически переносится при первой загрузке |
tools.exclude | permissions.deny | Автоматически переносится при первой загрузке |
tools.core | permissions.allow (белый список) | Автоматически переносится; инструменты, не указанные в списке, отключаются на уровне реестра |
Пример конфигурации:
{
"permissions": {
"allow": ["Bash(git *)", "Bash(npm run *)", "Read(//Users/alice/code/**)"],
"ask": ["Bash(git push *)", "Edit"],
"deny": ["Bash(rm -rf *)", "Read(.env)", "WebFetch(malicious.com)"]
}
}[!tip] Используйте
/permissionsв интерактивном CLI для просмотра, добавления и удаления правил без прямого редактированияsettings.json.
slashCommands
Управляет доступностью слэш-команд в CLI. Полезно для ограничения поверхности команд в многопользовательских или корпоративных развёртываниях.
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
slashCommands.disabled | array of strings | Имена слэш-команд для скрытия и отказа в выполнении. Сравниваются без учёта регистра с финальным именем команды (для команд расширений это уточнённая форма, например, myext.deploy). Объединяются как объединение множеств по всем областям, поэтому настройки рабочего пространства могут добавлять, но не удалять записи, определённые в настройках пользователя или системы. | undefined |
Тот же список запретов можно передать через флаг CLI --disabled-slash-commands (через запятую или повторением) и переменную окружения QWEN_DISABLED_SLASH_COMMANDS; значения из всех трёх источников объединяются.
Пример — блокировка встроенных команд для развёртывания в песочнице:
{
"slashCommands": {
"disabled": ["auth", "mcp", "extensions", "ide", "quit"]
}
}При наличии этих значений в системном settings.json (/etc/qwen-code/settings.json или QWEN_CODE_SYSTEM_SETTINGS_PATH) пользователи не могут сократить список запретов из своей области, а отключённые команды не будут появляться в автодополнении или выполняться при вводе.
[!note] Эта настройка управляет только слэш-командами (например,
/auth,/mcp). Она не влияет на разрешения инструментов — для этого см.permissions.deny. Она также не перехватывает сочетания клавиш, такие какCtrl+CилиEsc.
mcp
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
mcp.serverCommand | string | Команда для запуска MCP-сервера. | undefined |
mcp.allowed | array of strings | Белый список MCP-серверов для разрешения. Позволяет указать список имён MCP-серверов, которые должны быть доступны модели. Это можно использовать для ограничения набора подключаемых MCP-серверов. Обратите внимание, что это будет проигнорировано, если установлен --allowed-mcp-server-names. | undefined |
mcp.excluded | array of strings | Чёрный список MCP-серверов для исключения. Сервер, указанный и в mcp.excluded, и в mcp.allowed, будет исключён. Обратите внимание, что это будет проигнорировано, если установлен --allowed-mcp-server-names. | undefined |
Примечание по безопасности для MCP-серверов: Эти настройки используют простое строковое сопоставление имён MCP-серверов, которые могут быть изменены. Если вы системный администратор и хотите предотвратить обход пользователями, рассмотрите настройку mcpServers на уровне системных настроек, чтобы пользователи не могли настраивать собственные MCP-серверы. Это не следует использовать как абсолютный механизм безопасности.
lsp
[!warning] Экспериментальная функция: Поддержка LSP находится в экспериментальной стадии и отключена по умолчанию. Включите её с помощью флага командной строки
--experimental-lsp.
Language Server Protocol (LSP) предоставляет функции интеллектуальной поддержки кода, такие как переход к определению, поиск ссылок и диагностика.
Конфигурация серверов LSP выполняется через файлы .lsp.json в корневой директории проекта, а не через settings.json. Подробности и примеры конфигурации см. в документации по LSP.
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 | array of strings | Переменные окружения для исключения из контекста проекта. Указывает переменные, которые не должны загружаться из файлов .env проекта. Это предотвращает влияние специфичных для проекта переменных (например, DEBUG=true) на поведение CLI. Переменные из файлов .qwen/.env никогда не исключаются. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | object | Конфигурация команды отчёта об ошибке. Переопределяет URL по умолчанию для команды /bug. Свойства: urlTemplate (string): URL, который может содержать плейсхолдеры {title} и {info}. Пример: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
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-сервера. При указании доступны только перечисленные здесь инструменты (поведение белого списка). Если не указано, по умолчанию включены все инструменты сервера. | Да |
mcpServers.<SERVER_NAME>.excludeTools | array of strings | Список имён инструментов для исключения с этого MCP-сервера. Перечисленные здесь инструменты не будут доступны модели, даже если они предоставлены сервером. Примечание: excludeTools имеет приоритет над includeTools — если инструмент находится в обоих списках, он будет исключён. | Да |
telemetry
Настраивает логирование и сбор метрик для Qwen Code. Подробнее см. telemetry.
| Настройка | Тип | Описание | Значение по умолчанию |
|---|---|---|---|
telemetry.enabled | boolean | Включена ли телеметрия. | |
telemetry.target | string | Назначение для собираемой телеметрии. Поддерживаемые значения: local и gcp. | |
telemetry.otlpEndpoint | string | Конечная точка для OTLP Exporter. | |
telemetry.otlpProtocol | string | Протокол для OTLP Exporter (grpc или http). | |
telemetry.logPrompts | boolean | Включать ли содержимое пользовательских промптов в логи. | |
telemetry.outfile | string | Файл для записи телеметрии, когда target равен local. | |
telemetry.useCollector | boolean | Использовать ли внешний OTLP collector. |
Пример settings.json
Ниже приведён пример файла settings.json с вложенной структурой, новой начиная с v0.3.0:
{
"proxy": "http://localhost:7890",
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideTips": false,
"customWittyPhrases": [
"You forget a thousand things every day. Make sure this is one of 'em",
"Connecting to AGI"
]
},
"tools": {
"approvalMode": "yolo",
"sandbox": "docker",
"sandboxImage": "ghcr.io/qwenlm/qwen-code:0.14.1",
"discoveryCommand": "bin/get_tools",
"callCommand": "bin/call_tool",
"exclude": ["write_file"]
},
"mcpServers": {
"mainServer": {
"command": "bin/mcp_server.py"
},
"anotherServer": {
"command": "node",
"args": ["mcp_server.js", "--verbose"]
}
},
"telemetry": {
"enabled": true,
"target": "local",
"otlpEndpoint": "http://localhost:4317",
"logPrompts": true
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}История команд оболочки
CLI сохраняет историю запущенных команд оболочки. Чтобы избежать конфликтов между разными проектами, эта история хранится в директории, специфичной для проекта, внутри домашней папки пользователя.
- Расположение:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>— уникальный идентификатор, сгенерированный на основе корневого пути вашего проекта.- История хранится в файле с именем
shell_history.
Переменные окружения и файлы .env
Переменные окружения — распространённый способ настройки приложений, особенно для конфиденциальной информации (например, токенов) или настроек, которые могут меняться в зависимости от окружения.
Qwen Code может автоматически загружать переменные окружения из файлов .env.
Для переменных, связанных с аутентификацией (например, OPENAI_*), и рекомендуемого подхода с .qwen/.env см. Authentication.
Исключение переменных окружения: Некоторые переменные окружения (например, DEBUG и DEBUG_MODE) автоматически исключаются из файлов .env проекта по умолчанию, чтобы не мешать работе CLI. Переменные из файлов .qwen/.env никогда не исключаются. Вы можете настроить это поведение с помощью параметра advanced.excludedEnvVars в вашем файле settings.json.
Таблица переменных окружения
| Переменная | Описание | Примечания |
|---|---|---|
QWEN_TELEMETRY_ENABLED | Установите true или 1 для включения телеметрии. Любое другое значение считается отключением. | Переопределяет настройку telemetry.enabled. |
QWEN_TELEMETRY_TARGET | Устанавливает цель телеметрии (local или gcp). | Переопределяет настройку telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Устанавливает конечную точку OTLP для телеметрии. | Переопределяет настройку telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Устанавливает протокол OTLP (grpc или http). | Переопределяет настройку telemetry.otlpProtocol. |
QWEN_TELEMETRY_LOG_PROMPTS | Установите true или 1 для включения или отключения логирования пользовательских промптов. Любое другое значение считается отключением. | Переопределяет настройку telemetry.logPrompts. |
QWEN_TELEMETRY_OUTFILE | Устанавливает путь к файлу для записи телеметрии, когда цель равна local. | Переопределяет настройку telemetry.outfile. |
QWEN_TELEMETRY_USE_COLLECTOR | Установите true или 1 для включения или отключения использования внешнего OTLP collector. Любое другое значение считается отключением. | Переопределяет настройку telemetry.useCollector. |
QWEN_SANDBOX | Альтернатива настройке sandbox в settings.json. | Принимает true, false, docker, podman или строку пользовательской команды. |
QWEN_SANDBOX_IMAGE | Переопределяет выбор образа песочницы для Docker/Podman. | Имеет приоритет над tools.sandboxImage. |
SEATBELT_PROFILE | (только для macOS) Переключает профиль Seatbelt (sandbox-exec) на macOS. | permissive-open: (по умолчанию) Ограничивает запись в папку проекта (и несколько других папок, см. packages/cli/src/utils/sandbox-macos-permissive-open.sb), но разрешает другие операции. strict: Использует строгий профиль, отклоняющий операции по умолчанию. <profile_name>: Использует пользовательский профиль. Чтобы определить пользовательский профиль, создайте файл sandbox-macos-<profile_name>.sb в директории .qwen/ вашего проекта (например, my-project/.qwen/sandbox-macos-custom.sb). |
DEBUG или DEBUG_MODE | (часто используется базовыми библиотеками или самим CLI) Установите true или 1 для включения подробного отладочного логирования, что полезно для устранения неполадок. | Примечание: Эти переменные автоматически исключаются из файлов .env проекта по умолчанию, чтобы не мешать работе CLI. Используйте файлы .qwen/.env, если вам нужно установить их специально для Qwen Code. |
NO_COLOR | Установите любое значение, чтобы отключить весь цветной вывод в CLI. | |
CLI_TITLE | Установите строку для кастомизации заголовка CLI. | |
CODE_ASSIST_ENDPOINT | Указывает конечную точку для сервера помощи по коду. | Полезно для разработки и тестирования. |
QWEN_CODE_MAX_OUTPUT_TOKENS | Переопределяет максимальное количество выходных токенов на ответ по умолчанию. Если не установлено, Qwen Code использует адаптивную стратегию: начинает с 8K токенов и автоматически повторяет попытку с 64K, если ответ обрезан. Установите конкретное значение (например, 16000), чтобы использовать фиксированный лимит. | Имеет приоритет над ограниченным значением по умолчанию (8K), но переопределяется samplingParams.max_tokens в настройках. Отключает автоматическое масштабирование при установке. Пример: export QWEN_CODE_MAX_OUTPUT_TOKENS=16000 |
QWEN_CODE_UNATTENDED_RETRY | Установите true или 1 для включения режима постоянного повтора. При включении временные ошибки ёмкости API (HTTP 429 Rate Limit и 529 Overloaded) повторяются бесконечно с экспоненциальной задержкой (ограничено 5 минутами на попытку) и heartbeat-сигналами каждые 30 секунд в stderr. | Предназначен для CI/CD-пайплайнов и фоновой автоматизации, где длительные задачи должны переживать временные простои API. Должен быть установлен явно — CI=true не активирует этот режим. См. Headless Mode для деталей. Пример: export QWEN_CODE_UNATTENDED_RETRY=1 |
QWEN_CODE_PROFILE_STARTUP | Установите 1 для включения профилирования производительности запуска. Записывает JSON-отчёт с таймингами в ~/.qwen/startup-perf/ с длительностью по фазам. | Активен только внутри дочернего процесса песочницы. Нулевые накладные расходы, если не установлен. Пример: export QWEN_CODE_PROFILE_STARTUP=1 |
Аргументы командной строки
Аргументы, передаваемые напрямую при запуске CLI, могут переопределять другие конфигурации для конкретной сессии.
Для выбора образа песочницы приоритет следующий:
--sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > встроенный образ по умолчанию.
Таблица аргументов командной строки
| Аргумент | Псевдоним | Описание | Возможные значения | Примечания |
|---|---|---|---|---|
--model | -m | Указывает модель Qwen для использования в этой сессии. | Имя модели | Пример: npm start -- --model qwen3-coder-plus |
--prompt | -p | Используется для прямой передачи промпта команде. Запускает Qwen Code в неинтерактивном режиме. | Текст вашего промпта | Для примеров скриптов используйте флаг --output-format json для получения структурированного вывода. |
--prompt-interactive | -i | Запускает интерактивную сессию с предоставленным промптом в качестве начального ввода. | Текст вашего промпта | Промпт обрабатывается внутри интерактивной сессии, а не до неё. Нельзя использовать при передаче ввода из stdin. Пример: qwen -i "explain this code" |
--system-prompt | Переопределяет встроенный системный промпт основной сессии для этого запуска. | Текст вашего промпта | Загруженные файлы контекста, такие как QWEN.md, всё ещё добавляются после этого переопределения. Можно комбинировать с --append-system-prompt. | |
--append-system-prompt | Добавляет дополнительные инструкции к основному системному промпту сессии для этого запуска. | Текст вашего промпта | Применяется после встроенного промпта и загруженных файлов контекста. Можно комбинировать с --system-prompt. Примеры см. в Headless Mode. | |
--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)" | |
--disabled-slash-commands | Имена слэш-команд для скрытия/отключения (через запятую или повторением). Объединяется с настройкой slashCommands.disabled и переменной окружения QWEN_DISABLED_SLASH_COMMANDS. Сравнивается без учёта регистра с финальным именем команды. | Имена команд | Пример: qwen --disabled-slash-commands "auth,mcp,extensions" | |
--telemetry | Включает телеметрию. | |||
--telemetry-target | Устанавливает цель телеметрии. | Подробнее см. telemetry. | ||
--telemetry-otlp-endpoint | Устанавливает конечную точку OTLP для телеметрии. | Подробнее см. telemetry. | ||
--telemetry-otlp-protocol | Устанавливает протокол OTLP для телеметрии (grpc или http). | По умолчанию grpc. Подробнее см. telemetry. | ||
--telemetry-log-prompts | Включает логирование промптов для телеметрии. | Подробнее см. telemetry. | ||
--checkpointing | Включает checkpointing. | |||
--acp | Включает режим ACP (Agent Client Protocol). Полезно для интеграций с IDE/редакторами, таких как Zed. | Стабильно. Заменяет устаревший флаг --experimental-acp. | ||
--experimental-lsp | Включает экспериментальную функцию LSP (Language Server Protocol) для интеллектуальной поддержки кода (переход к определению, поиск ссылок, диагностика и т.д.). | Экспериментально. Требует установки языковых серверов. | ||
--extensions | -e | Указывает список расширений для использования в сессии. | Имена расширений | Если не указано, используются все доступные расширения. Используйте специальное значение qwen -e none для отключения всех расширений. Пример: qwen -e my-extension -e my-other-extension |
--list-extensions | -l | Выводит список всех доступных расширений и завершает работу. | ||
--proxy | Устанавливает прокси для CLI. | Proxy 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 |
Файлы контекста (иерархический инструктивный контекст)
Хотя это не строго конфигурация поведения CLI, файлы контекста (по умолчанию QWEN.md, но настраивается через context.fileName) критически важны для настройки инструктивного контекста (также называемого «памятью»). Эта мощная функция позволяет давать проекту специфичные инструкции, руководства по стилю кода или любую релевантную справочную информацию для ИИ, делая его ответы более адаптированными и точными под ваши нужды. CLI включает элементы интерфейса, такие как индикатор в футере, показывающий количество загруженных файлов контекста, чтобы держать вас в курсе активного контекста.
- Назначение: Эти Markdown-файлы содержат инструкции, руководства или контекст, который вы хотите, чтобы модель Qwen учитывала во время взаимодействия. Система предназначена для управления этим инструктивным контекстом иерархически.
Пример содержимого файла контекста (например, QWEN.md)
Ниже приведён концептуальный пример того, что может содержать файл контекста в корне проекта на TypeScript:
# Project: My Awesome TypeScript Library
## General Instructions:
- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.
## Coding Style:
- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).
## Specific Component: `src/api/client.ts`
- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.
## Regarding Dependencies:
- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.Этот пример демонстрирует, как вы можете предоставить общий контекст проекта, конкретные соглашения по кодированию и даже заметки о конкретных файлах или компонентах. Чем релевантнее и точнее ваши файлы контекста, тем лучше ИИ сможет вам помочь. Файлы контекста, специфичные для проекта, настоятельно рекомендуются для установления соглашений и контекста.
- Иерархическая загрузка и приоритет: CLI реализует иерархическую систему памяти, загружая файлы контекста (например,
QWEN.md) из нескольких расположений. Содержимое файлов, находящихся ниже в этом списке (более специфичных), обычно переопределяет или дополняет содержимое файлов выше (более общих). Точный порядок конкатенации и финальный контекст можно проверить с помощью команды/memory show. Типичный порядок загрузки:- Глобальный файл контекста:
- Расположение:
~/.qwen/<configured-context-filename>(например,~/.qwen/QWEN.mdв домашней директории пользователя). - Область: Предоставляет инструкции по умолчанию для всех ваших проектов.
- Расположение:
- Файлы контекста корня проекта и родительских директорий:
- Расположение: CLI ищет настроенный файл контекста в текущей рабочей директории, а затем в каждой родительской директории вплоть до корня проекта (определяется папкой
.git) или вашей домашней директории. - Область: Предоставляет контекст, релевантный всему проекту или его значительной части.
- Расположение: CLI ищет настроенный файл контекста в текущей рабочей директории, а затем в каждой родительской директории вплоть до корня проекта (определяется папкой
- Глобальный файл контекста:
- Конкатенация и индикация в интерфейсе: Содержимое всех найденных файлов контекста конкатенируется (с разделителями, указывающими их происхождение и путь) и передаётся как часть системного промпта. Футер CLI отображает количество загруженных файлов контекста, давая быструю визуальную подсказку об активном инструктивном контексте.
- Импорт содержимого: Вы можете модуляризировать файлы контекста, импортируя другие Markdown-файлы с помощью синтаксиса
@path/to/file.md. Подробнее см. в документации Memory Import Processor. - Команды для управления памятью:
- Используйте
/memory refreshдля принудительного повторного сканирования и перезагрузки всех файлов контекста из всех настроенных расположений. Это обновляет инструктивный контекст ИИ. - Используйте
/memory showдля отображения объединённого инструктивного контекста, загруженного в данный момент, что позволяет проверить иерархию и содержимое, используемое ИИ. - Полные детали о команде
/memoryи её подкомандах (showиrefresh) см. в документации по командам.
- Используйте
Понимая и используя эти уровни конфигурации и иерархическую природу файлов контекста, вы можете эффективно управлять памятью ИИ и адаптировать ответы Qwen Code под ваши конкретные нужды и проекты.
Песочница
Qwen Code может выполнять потенциально небезопасные операции (например, команды оболочки и изменение файлов) в изолированной среде песочницы для защиты вашей системы.
Песочница отключена по умолчанию, но вы можете включить её несколькими способами:
- С помощью флага
--sandboxили-s. - Установив переменную окружения
QWEN_SANDBOX. - Песочница включается по умолчанию при использовании
--yoloили--approval-mode=yolo.
По умолчанию используется предварительно собранный Docker-образ qwen-code-sandbox.
Для специфичных для проекта нужд песочницы вы можете создать пользовательский Dockerfile по пути .qwen/sandbox.Dockerfile в корневой директории вашего проекта. Этот Dockerfile может быть основан на базовом образе песочницы:
FROM qwen-code-sandbox
# Add your custom dependencies or configurations here
# For example:
# 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.