Skip to Content
Разработка Расширений

Расширения Qwen Code

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

Как это работает

При запуске Qwen Code ищет расширения в двух местах:

  1. <workspace>/.qwen/extensions
  2. <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 в справке

Разрешение конфликтов

Команды расширений имеют самый низкий приоритет. Когда возникает конфликт с пользовательскими или проектными командами:

  1. Без конфликта: Команда расширения использует свое естественное имя (например, /deploy)
  2. При конфликте: Команда расширения переименовывается с префиксом расширения (например, /gcp.deploy)

Например, если и пользователь, и расширение gcp определяют команду deploy:

  • /deploy - Выполняет пользовательскую команду deploy
  • /gcp.deploy - Выполняет команду deploy расширения (помечена тегом [gcp])
Last updated on