Расширения Qwen Code
Qwen Code поддерживает расширения, которые можно использовать для настройки и расширения его функциональности.
Как это работает
При запуске Qwen Code ищет расширения в двух местах:
<workspace>/.qwen/extensions<home>/.qwen/extensions
Qwen Code загружает все расширения из обоих мест. Если расширение с одинаковым именем существует в обоих местах, то расширение из директории workspace имеет приоритет.
В каждом месте отдельные расширения представлены как директория, содержащая файл qwen-extension.json. Например:
<workspace>/.qwen/extensions/my-extension/qwen-extension.json
qwen-extension.json
Файл qwen-extension.json содержит конфигурацию расширения. Файл имеет следующую структуру:
{
"name": "my-extension",
"version": "1.0.0",
"mcpServers": {
"my-server": {
"command": "node my-server.js"
}
},
"contextFileName": "QWEN.md",
"excludeTools": ["run_shell_command"]
}name: Имя расширения. Используется для уникальной идентификации расширения и разрешения конфликтов, когда команды из расширения имеют те же названия, что и пользовательские или проектные команды.version: Версия расширения.mcpServers: Карта MCP-серверов для настройки. Ключ — это имя сервера, а значение — его конфигурация. Эти серверы будут загружены при запуске так же, как и MCP-серверы, указанные в файлеsettings.json. Если и расширение, и файлsettings.jsonопределяют MCP-сервер с одинаковым именем, то приоритет получает сервер, описанный вsettings.json.contextFileName: Имя файла, содержащего контекст расширения. Этот файл будет использоваться для загрузки контекста из рабочей области. Если данное свойство не задано, но в директории расширения присутствует файлQWEN.md, он будет загружен автоматически.excludeTools: Массив имён инструментов, которые нужно исключить из модели. Также можно указывать специфичные ограничения для конкретных команд внутри поддерживаемых инструментов, таких какrun_shell_command. Например,"excludeTools": ["run_shell_command(rm -rf)"]заблокирует выполнение командыrm -rf.
При запуске Qwen Code загружает все расширения и объединяет их конфигурации. В случае конфликтов приоритет получает конфигурация из рабочей области.
Команды расширений
Расширения могут предоставлять пользовательские команды, размещая TOML-файлы в подкаталоге commands/ внутри директории расширения. Эти команды следуют тому же формату, что и пользовательские и проектные команды, и используют стандартные соглашения об именовании.
Пример
Расширение с именем gcp со следующей структурой:
.qwen/extensions/gcp/
├── qwen-extension.json
└── commands/
├── deploy.toml
└── gcs/
└── sync.tomlПредоставит следующие команды:
/deploy- Отображается как[gcp] Custom command from deploy.tomlв справке/gcs:sync- Отображается как[gcp] Custom command from sync.tomlв справке
Разрешение конфликтов
Команды расширений имеют самый низкий приоритет. Когда возникает конфликт с пользовательскими или проектными командами:
- Без конфликта: Команда расширения использует свое естественное имя (например,
/deploy) - При конфликте: Команда расширения переименовывается с префиксом расширения (например,
/gcp.deploy)
Например, если и пользователь, и расширение gcp определяют команду deploy:
/deploy- Выполняет пользовательскую команду deploy/gcp.deploy- Выполняет команду deploy расширения (помечена тегом[gcp])
Установка расширений
Вы можете устанавливать расширения с помощью команды install. Эта команда позволяет устанавливать расширения из Git репозитория или локального пути.
Использование
qwen extensions install <source> | [options]
Опции
source <url> позиционный аргумент: URL Git-репозитория, из которого будет установлена расширение. Репозиторий должен содержать файлqwen-extension.jsonв корневой директории.--path <path>: Путь к локальной директории, которая будет установлена как расширение. Директория должна содержать файлqwen-extension.json.
Переменные
Расширения Qwen Code позволяют использовать подстановку переменных в файле qwen-extension.json. Это может быть полезно, например, если вам нужно указать текущую директорию для запуска MCP сервера, используя "cwd": "${extensionPath}${/}run.ts".
Поддерживаемые переменные:
| переменная | описание |
|---|---|
${extensionPath} | Полный путь к расширению в файловой системе пользователя, например, ‘/Users/username/.qwen/extensions/example-extension’. Символические ссылки не разворачиваются. |
${/} или ${pathSeparator} | Разделитель пути (отличается в зависимости от ОС). |