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])

Установка расширений

Вы можете устанавливать расширения с помощью команды 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}Разделитель пути (отличается в зависимости от ОС).
Last updated on