Расширения Qwen Code
Расширения Qwen Code объединяют промпты, MCP-серверы, субагентов, навыки (skills) и пользовательские команды в знакомый и удобный формат. С помощью расширений вы можете расширить возможности Qwen Code и делиться ими с другими. Они разработаны для простой установки и распространения.
Расширения и плагины из Gemini CLI Extensions Gallery и Claude Code Marketplace можно устанавливать напрямую в Qwen Code. Эта кроссплатформенная совместимость открывает доступ к богатой экосистеме расширений и плагинов, значительно расширяя возможности Qwen Code без необходимости авторам поддерживать отдельные версии.
Управление расширениями
Мы предлагаем набор инструментов для управления расширениями с помощью CLI-команд qwen extensions и слэш-команд /extensions в интерактивном CLI.
Управление расширениями во время выполнения (слэш-команды)
Вы можете управлять расширениями во время выполнения в интерактивном CLI с помощью слэш-команд /extensions. Эти команды поддерживают hot-reloading, то есть изменения применяются мгновенно без перезапуска приложения.
| Command | Description |
|---|---|
/extensions или /extensions manage | Управление всеми установленными расширениями |
/extensions install <source> | Установка расширения из git-URL, локального пути, npm-пакета или маркетплейса |
/extensions explore [source] | Открыть страницу источника расширений (Gemini или ClaudeCode) в браузере |
Управление расширениями через CLI
Вы также можете управлять расширениями с помощью CLI-команд qwen extensions. Обратите внимание: изменения, внесённые через CLI-команды, отразятся в активных сессиях CLI после перезапуска.
Установка расширения
Вы можете установить расширение с помощью qwen extensions install из нескольких источников:
Из Claude Code Marketplace
Qwen Code также поддерживает плагины из Claude Code Marketplace . Установите из маркетплейса и выберите плагин:
qwen extensions install <marketplace-name>
# или
qwen extensions install <marketplace-github-url>Если вы хотите установить конкретный плагин, используйте формат с указанием имени плагина:
qwen extensions install <marketplace-name>:<plugin-name>
# или
qwen extensions install <marketplace-github-url>:<plugin-name>Например, чтобы установить плагин prompts.chat из маркетплейса f/awesome-chatgpt-prompts :
qwen extensions install f/awesome-chatgpt-prompts:prompts.chat
# или
qwen extensions install https://github.com/f/awesome-chatgpt-prompts:prompts.chatПлагины Claude автоматически конвертируются в формат Qwen Code во время установки:
claude-plugin.jsonконвертируется вqwen-extension.json- Конфигурации агентов конвертируются в формат субагентов Qwen
- Конфигурации навыков конвертируются в формат навыков Qwen
- Маппинги инструментов обрабатываются автоматически
Вы можете быстро просмотреть доступные расширения из разных маркетплейсов с помощью команды /extensions explore:
# Открыть маркетплейс расширений Gemini CLI
/extensions explore Gemini
# Открыть маркетплейс Claude Code
/extensions explore ClaudeCodeЭта команда открывает соответствующий маркетплейс в браузере по умолчанию, позволяя находить новые расширения для улучшения работы с Qwen Code.
Кроссплатформенная совместимость: Это позволяет использовать богатые экосистемы расширений как от Gemini CLI, так и от Claude Code, значительно расширяя доступный функционал для пользователей Qwen Code.
Из расширений Gemini CLI
Qwen Code полностью поддерживает расширения из Gemini CLI Extensions Gallery . Просто установите их, указав git-URL:
qwen extensions install <gemini-cli-extension-github-url>
# или
qwen extensions install <owner>/<repo>Расширения Gemini автоматически конвертируются в формат Qwen Code во время установки:
gemini-extension.jsonконвертируется вqwen-extension.json- Файлы команд в формате TOML автоматически мигрируют в формат Markdown
- MCP-серверы, файлы контекста и настройки сохраняются
Из npm Registry
Qwen Code поддерживает установку расширений из npm-реестров с использованием scoped-имён пакетов. Это идеально подходит для команд с приватными реестрами, где уже настроена инфраструктура аутентификации, версионирования и публикации.
# Установка последней версии
qwen extensions install @scope/my-extension
# Установка конкретной версии
qwen extensions install @scope/my-extension@1.2.0
# Установка из кастомного реестра
qwen extensions install @scope/my-extension --registry https://your-registry.comПоддерживаются только scoped-пакеты (@scope/package-name), чтобы избежать неоднозначности с сокращённым форматом GitHub owner/repo.
Разрешение реестра выполняется в следующем порядке приоритета:
- Флаг CLI
--registry(явное переопределение) - Scoped-реестр из
.npmrc(например,@scope:registry=https://...) - Реестр по умолчанию из
.npmrc - Резервный вариант:
https://registry.npmjs.org/
Аутентификация обрабатывается автоматически через переменную окружения NPM_TOKEN или специфичные для реестра записи _authToken в вашем файле .npmrc.
Примечание: npm-расширения должны содержать файл
qwen-extension.jsonв корне пакета, следуя тому же формату, что и любое другое расширение Qwen Code. Подробности об упаковке см. в разделе Публикация расширений.
Из Git-репозитория
qwen extensions install https://github.com/github/github-mcp-serverЭто установит расширение github mcp server.
Из локального пути
qwen extensions install /path/to/your/extensionОбратите внимание: мы создаём копию установленного расширения, поэтому для получения изменений как из локально определённых расширений, так и из репозиториев на GitHub, вам потребуется выполнить qwen extensions update.
Удаление расширения
Для удаления выполните qwen extensions uninstall extension-name. Например, для случая установки выше:
qwen extensions uninstall qwen-cli-securityОтключение расширения
По умолчанию расширения включены для всех рабочих пространств. Вы можете отключить расширение полностью или только для конкретного рабочего пространства.
Например, qwen extensions disable extension-name отключит расширение на уровне пользователя, то есть везде. qwen extensions disable extension-name --scope=workspace отключит расширение только в текущем рабочем пространстве.
Включение расширения
Вы можете включать расширения с помощью qwen extensions enable extension-name. Также вы можете включить расширение для конкретного рабочего пространства, выполнив qwen extensions enable extension-name --scope=workspace внутри этого пространства.
Это полезно, если расширение отключено на глобальном уровне и должно быть включено только в определённых местах.
Обновление расширения
Для расширений, установленных из локального пути, git-репозитория или npm-реестра, вы можете явно обновить их до последней версии с помощью qwen extensions update extension-name. Для npm-расширений, установленных без фиксации версии (например, @scope/pkg), обновления проверяют dist-тег latest. Для расширений, установленных с конкретным dist-тегом (например, @scope/pkg@beta), обновления отслеживают этот тег. Расширения, зафиксированные на точной версии (например, @scope/pkg@1.2.0), всегда считаются актуальными.
Вы можете обновить все расширения с помощью:
qwen extensions update --allКак это работает
При запуске Qwen Code ищет расширения в <home>/.qwen/extensions
Расширения представляют собой каталог, содержащий файл qwen-extension.json. Например:
<home>/.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"
}
},
"channels": {
"my-platform": {
"entry": "dist/index.js",
"displayName": "My Platform Channel"
}
},
"contextFileName": "QWEN.md",
"commands": "commands",
"skills": "skills",
"agents": "agents",
"settings": [
{
"name": "API Key",
"description": "Your API key for the service",
"envVar": "MY_API_KEY",
"sensitive": true
}
]
}name: Имя расширения. Используется для уникальной идентификации расширения и разрешения конфликтов, когда команды расширения имеют те же имена, что и пользовательские или проектные команды. Имя должно содержать строчные буквы или цифры и использовать дефисы вместо подчёркиваний или пробелов. Именно так пользователи будут обращаться к вашему расширению в CLI. Обратите внимание: мы ожидаем, что это имя будет совпадать с именем каталога расширения.version: Версия расширения.mcpServers: Маппинг MCP-серверов для настройки. Ключ — имя сервера, значение — конфигурация сервера. Эти серверы будут загружаться при запуске так же, как MCP-серверы, настроенные в файлеsettings.json. Если и расширение, и файлsettings.jsonнастраивают MCP-сервер с одинаковым именем, приоритет имеет сервер, определённый вsettings.json.- Обратите внимание: поддерживаются все параметры конфигурации MCP-сервера, кроме
trust.
- Обратите внимание: поддерживаются все параметры конфигурации MCP-сервера, кроме
channels: Маппинг пользовательских адаптеров каналов. Ключ — имя типа канала, значение содержитentry(путь к скомпилированной JS-точке входа) и опциональныйdisplayName. Точка входа должна экспортировать объектplugin, соответствующий интерфейсуChannelPlugin. Полное руководство см. в разделе Плагины каналов.contextFileName: Имя файла, содержащего контекст для расширения. Используется для загрузки контекста из каталога расширения. Если это свойство не указано, но в каталоге расширения присутствует файлQWEN.md, будет загружен он.commands: Каталог, содержащий пользовательские команды (по умолчанию:commands). Команды представляют собой.md-файлы, определяющие промпты.skills: Каталог, содержащий пользовательские навыки (по умолчанию:skills). Навыки обнаруживаются автоматически и становятся доступны через команду/skills.agents: Каталог, содержащий пользовательские субагенты (по умолчанию:agents). Субагенты представляют собой.yaml- или.md-файлы, определяющие специализированных AI-ассистентов.settings: Массив настроек, требуемых расширением. При установке пользователям будет предложено указать значения для этих настроек. Значения хранятся безопасно и передаются MCP-серверам в виде переменных окружения.- Каждая настройка имеет следующие свойства:
name: Отображаемое имя настройкиdescription: Описание назначения настройкиenvVar: Имя переменной окружения, которая будет установленаsensitive: Логическое значение, указывающее, следует ли скрывать значение (например, для API-ключей, паролей)
- Каждая настройка имеет следующие свойства:
Управление настройками расширений
Расширения могут требовать конфигурации через настройки (например, API-ключи или учётные данные). Этими настройками можно управлять с помощью CLI-команды qwen extensions settings:
Установка значения настройки:
qwen extensions settings set <extension-name> <setting-name> [--scope user|workspace]Список всех настроек расширения:
qwen extensions settings list <extension-name>Просмотр текущих значений (пользователь и рабочее пространство):
qwen extensions settings show <extension-name> <setting-name>Удаление значения настройки:
qwen extensions settings unset <extension-name> <setting-name> [--scope user|workspace]Настройки можно конфигурировать на двух уровнях:
- Уровень пользователя (по умолчанию): Настройки применяются ко всем проектам (
~/.qwen/.env) - Уровень рабочего пространства: Настройки применяются только к текущему проекту (
.qwen/.env)
Настройки рабочего пространства имеют приоритет над настройками пользователя. Конфиденциальные настройки хранятся безопасно и никогда не отображаются в открытом виде.
При запуске Qwen Code загружает все расширения и объединяет их конфигурации. В случае конфликтов приоритет имеет конфигурация рабочего пространства.
Пользовательские команды
Расширения могут предоставлять пользовательские команды, размещая Markdown-файлы в подкаталоге commands/ внутри каталога расширения. Эти команды следуют тому же формату, что и пользовательские/проектные команды, и используют стандартные соглашения об именовании.
Примечание: Формат команд обновлён с TOML на Markdown. Файлы TOML устарели, но всё ещё поддерживаются. Вы можете мигрировать существующие TOML-команды с помощью автоматического запроса на миграцию, который появляется при обнаружении TOML-файлов.
Пример
Расширение с именем gcp и следующей структурой:
.qwen/extensions/gcp/
├── qwen-extension.json
└── commands/
├── deploy.md
└── gcs/
└── sync.mdПредоставит следующие команды:
/deploy— отображается в справке как[gcp] Custom command from deploy.md/gcs:sync— отображается в справке как[gcp] Custom command from sync.md
Пользовательские навыки
Расширения могут предоставлять пользовательские навыки, размещая файлы навыков в подкаталоге skills/ внутри каталога расширения. Каждый навык должен содержать файл SKILL.md с YAML-фронтматтером, определяющим имя и описание навыка.
Пример
.qwen/extensions/my-extension/
├── qwen-extension.json
└── skills/
└── pdf-processor/
└── SKILL.mdНавык будет доступен через команду /skills, когда расширение активно.
Пользовательские субагенты
Расширения могут предоставлять пользовательские субагенты, размещая файлы конфигурации агентов в подкаталоге agents/ внутри каталога расширения. Агенты определяются с помощью YAML- или Markdown-файлов.
Пример
.qwen/extensions/my-extension/
├── qwen-extension.json
└── agents/
└── testing-expert.yamlСубагенты расширений отображаются в диалоговом окне менеджера субагентов в разделе “Агенты расширений” (Extension Agents).
Разрешение конфликтов
Команды расширений имеют самый низкий приоритет. При возникновении конфликта с пользовательскими или проектными командами:
- Отсутствие конфликта: Команда расширения использует своё естественное имя (например,
/deploy) - Наличие конфликта: Команда расширения переименовывается с добавлением префикса расширения (например,
/gcp.deploy)
Например, если и пользователь, и расширение gcp определяют команду deploy:
/deploy— выполняет пользовательскую команду deploy/gcp.deploy— выполняет команду deploy расширения (помечена тегом[gcp])
Переменные
Расширения Qwen Code поддерживают подстановку переменных в qwen-extension.json. Это может быть полезно, если, например, вам нужен текущий каталог для запуска MCP-сервера с использованием "cwd": "${extensionPath}${/}run.ts".
Поддерживаемые переменные:
| variable | description |
|---|---|
${extensionPath} | Полный путь к расширению в файловой системе пользователя, например, ‘/Users/username/.qwen/extensions/example-extension’. Символические ссылки не разворачиваются. |
${workspacePath} | Полный путь к текущему рабочему пространству. |
${/} или ${pathSeparator} | Разделитель путей (зависит от ОС). |