5.5 KiB
Расширения 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])