Qwen Code Extensions
Qwen Code unterstützt Extensions, die verwendet werden können, um seine Funktionalität zu konfigurieren und zu erweitern.
Wie es funktioniert
Beim Start sucht Qwen Code nach Extensions in zwei Verzeichnissen:
<workspace>/.qwen/extensions
<home>/.qwen/extensions
Qwen Code lädt alle Extensions aus beiden Verzeichnissen. Wenn eine Extension mit demselben Namen in beiden Verzeichnissen existiert, hat die Extension im Workspace-Verzeichnis Vorrang.
Innerhalb jedes Verzeichnisses existieren einzelne Extensions als Unterverzeichnis, das eine qwen-extension.json
Datei enthält. Zum Beispiel:
<workspace>/.qwen/extensions/my-extension/qwen-extension.json
qwen-extension.json
Die Datei qwen-extension.json
enthält die Konfiguration für die Extension. Die Datei hat folgende Struktur:
{
"name": "my-extension",
"version": "1.0.0",
"mcpServers": {
"my-server": {
"command": "node my-server.js"
}
},
"contextFileName": "QWEN.md",
"excludeTools": ["run_shell_command"]
}
name
: Der Name der Extension. Dieser wird verwendet, um die Extension eindeutig zu identifizieren und zur Konfliktlösung, wenn Extension-Befehle denselben Namen wie Benutzer- oder Projekt-Befehle haben.version
: Die Version der Extension.mcpServers
: Eine Map von MCP-Servern, die konfiguriert werden sollen. Der Schlüssel ist der Name des Servers, der Wert ist die Server-Konfiguration. Diese Server werden beim Start genauso geladen wie MCP-Server, die in einersettings.json
Datei konfiguriert sind. Wenn sowohl eine Extension als auch einesettings.json
Datei einen MCP-Server mit demselben Namen konfigurieren, hat der in dersettings.json
Datei definierte Server Vorrang.contextFileName
: Der Name der Datei, die den Kontext für die Extension enthält. Diese wird verwendet, um den Kontext aus dem Workspace zu laden. Wenn diese Eigenschaft nicht verwendet wird, aber eineQWEN.md
Datei im Extension-Verzeichnis vorhanden ist, wird diese Datei geladen.excludeTools
: Ein Array von Tool-Namen, die vom Modell ausgeschlossen werden sollen. Du kannst auch Befehlsspezifische Einschränkungen für Tools angeben, die dies unterstützen, wie z. B. dasrun_shell_command
Tool. Beispiel:"excludeTools": ["run_shell_command(rm -rf)"]
blockiert denrm -rf
Befehl.
Wenn Qwen Code startet, lädt es alle Extensions und führt deren Konfigurationen zusammen. Bei Konflikten hat die Workspace-Konfiguration Vorrang.
Extension Commands
Erweiterungen können benutzerdefinierte Befehle bereitstellen, indem sie TOML-Dateien in einem commands/
Unterverzeichnis innerhalb des Erweiterungsverzeichnisses ablegen. Diese Befehle folgen demselben Format wie benutzer- und projektspezifische benutzerdefinierte Befehle und verwenden Standard-Namenskonventionen.
Beispiel
Eine Erweiterung mit dem Namen gcp
und der folgenden Struktur:
.qwen/extensions/gcp/
├── qwen-extension.json
└── commands/
├── deploy.toml
└── gcs/
└── sync.toml
Stellt diese Befehle zur Verfügung:
/deploy
- Wird in der Hilfe als[gcp] Custom command from deploy.toml
angezeigt/gcs:sync
- Wird in der Hilfe als[gcp] Custom command from sync.toml
angezeigt
Konfliktlösung
Erweiterungsbefehle haben die niedrigste Priorität. Wenn ein Konflikt mit Benutzer- oder Projektbefehlen auftritt:
- Kein Konflikt: Der Erweiterungsbefehl verwendet seinen natürlichen Namen (z. B.
/deploy
) - Mit Konflikt: Der Erweiterungsbefehl wird mit dem Präfix der Erweiterung umbenannt (z. B.
/gcp.deploy
)
Wenn zum Beispiel sowohl ein Benutzer als auch die gcp
-Erweiterung einen deploy
-Befehl definieren:
/deploy
– Führt den Deploy-Befehl des Benutzers aus/gcp.deploy
– Führt den Deploy-Befehl der Erweiterung aus (gekennzeichnet mit dem Tag[gcp]
)
Installation von Erweiterungen
Du kannst Erweiterungen mithilfe des install
-Befehls installieren. Dieser Befehl ermöglicht es, Erweiterungen aus einem Git-Repository oder einem lokalen Pfad zu installieren.
Verwendung
qwen extensions install <source> | [options]
Optionen
source <url> positional argument
: Die URL eines Git-Repositorys, von dem die Erweiterung installiert werden soll. Das Repository muss eineqwen-extension.json
-Datei im Stammverzeichnis enthalten.--path <path>
: Der Pfad zu einem lokalen Verzeichnis, das als Erweiterung installiert werden soll. Das Verzeichnis muss eineqwen-extension.json
-Datei enthalten.
Variablen
Qwen Code Erweiterungen erlauben die Verwendung von Variablen in qwen-extension.json
. Dies kann nützlich sein, wenn du z. B. das aktuelle Verzeichnis benötigst, um einen MCP-Server mit "cwd": "${extensionPath}${/}run.ts"
auszuführen.
Unterstützte Variablen:
Variable | Beschreibung |
---|---|
${extensionPath} | Der vollständige Pfad der Erweiterung im Dateisystem des Benutzers, z. B. ‘/Users/username/.qwen/extensions/example-extension’. Symbolische Links werden nicht aufgelöst. |
${/} or ${pathSeparator} | Der Pfadtrenner (unterscheidet sich je nach Betriebssystem). |