Qwen Code Extensions
Qwen Code Extensions bündeln Prompts, MCP-Server, Subagents, Skills und benutzerdefinierte Befehle in einem vertrauten und benutzerfreundlichen Format. Mit Extensions kannst du die Funktionen von Qwen Code erweitern und diese mit anderen teilen. Sie sind darauf ausgelegt, einfach installiert und geteilt zu werden.
Extensions und Plugins aus der Gemini CLI Extensions Gallery und dem Claude Code Marketplace können direkt in Qwen Code installiert werden. Diese plattformübergreifende Kompatibilität gibt dir Zugriff auf ein reichhaltiges Ökosystem an Extensions und Plugins und erweitert die Möglichkeiten von Qwen Code erheblich, ohne dass Extension-Autoren separate Versionen pflegen müssen.
Extension-Verwaltung
Wir bieten eine Reihe von Tools zur Extension-Verwaltung, die sowohl über qwen extensions CLI-Befehle als auch über /extensions Slash-Befehle in der interaktiven CLI genutzt werden können.
Laufzeit-Extension-Verwaltung (Slash-Befehle)
Du kannst Extensions zur Laufzeit in der interaktiven CLI über /extensions Slash-Befehle verwalten. Diese Befehle unterstützen Hot-Reloading, sodass Änderungen sofort wirksam werden, ohne die Anwendung neu starten zu müssen.
| Command | Description |
|---|---|
/extensions oder /extensions manage | Alle installierten Extensions verwalten |
/extensions install <source> | Eine Extension von einer Git-URL, einem lokalen Pfad, einem npm-Paket oder einem Marketplace installieren |
/extensions explore [source] | Die Extensions-Quellseite (Gemini oder ClaudeCode) im Browser öffnen |
CLI-Extension-Verwaltung
Du kannst Extensions auch über qwen extensions CLI-Befehle verwalten. Beachte, dass Änderungen über CLI-Befehle erst nach einem Neustart in aktiven CLI-Sessions übernommen werden.
Installation einer Extension
Du kannst eine Extension mit qwen extensions install aus verschiedenen Quellen installieren:
Vom Claude Code Marketplace
Qwen Code unterstützt auch Plugins vom Claude Code Marketplace . Installiere sie über einen Marketplace und wähle ein Plugin aus:
qwen extensions install <marketplace-name>
# or
qwen extensions install <marketplace-github-url>Wenn du ein bestimmtes Plugin installieren möchtest, kannst du das Format mit dem Plugin-Namen verwenden:
qwen extensions install <marketplace-name>:<plugin-name>
# or
qwen extensions install <marketplace-github-url>:<plugin-name>Um beispielsweise das prompts.chat Plugin vom f/awesome-chatgpt-prompts Marketplace zu installieren:
qwen extensions install f/awesome-chatgpt-prompts:prompts.chat
# or
qwen extensions install https://github.com/f/awesome-chatgpt-prompts:prompts.chatClaude-Plugins werden während der Installation automatisch in das Qwen Code Format konvertiert:
claude-plugin.jsonwird zuqwen-extension.jsonkonvertiert- Agent-Konfigurationen werden in das Qwen Subagent-Format konvertiert
- Skill-Konfigurationen werden in das Qwen Skill-Format konvertiert
- Tool-Mappings werden automatisch verarbeitet
Du kannst verfügbare Extensions aus verschiedenen Marketplaces schnell mit dem /extensions explore Befehl durchsuchen:
# Open Gemini CLI Extensions marketplace
/extensions explore Gemini
# Open Claude Code marketplace
/extensions explore ClaudeCodeDieser Befehl öffnet den jeweiligen Marketplace in deinem Standardbrowser, sodass du neue Extensions entdecken kannst, um dein Qwen Code Erlebnis zu erweitern.
Plattformübergreifende Kompatibilität: Dies ermöglicht dir die Nutzung der umfangreichen Extension-Ökosysteme von Gemini CLI und Claude Code und erweitert die verfügbaren Funktionen für Qwen Code Nutzer erheblich.
Von Gemini CLI Extensions
Qwen Code unterstützt Extensions aus der Gemini CLI Extensions Gallery vollständig. Installiere sie einfach über die Git-URL:
qwen extensions install <gemini-cli-extension-github-url>
# or
qwen extensions install <owner>/<repo>Gemini-Extensions werden während der Installation automatisch in das Qwen Code Format konvertiert:
gemini-extension.jsonwird zuqwen-extension.jsonkonvertiert- TOML-Befehlsdateien werden automatisch in das Markdown-Format migriert
- MCP-Server, Kontextdateien und Einstellungen bleiben erhalten
Von der npm Registry
Qwen Code unterstützt die Installation von Extensions aus npm-Registries über scoped Package-Namen. Dies ist ideal für Teams mit privaten Registries, die bereits über Authentifizierungs-, Versionierungs- und Publishing-Infrastruktur verfügen.
# Install the latest version
qwen extensions install @scope/my-extension
# Install a specific version
qwen extensions install @scope/my-extension@1.2.0
# Install from a custom registry
qwen extensions install @scope/my-extension --registry https://your-registry.comEs werden nur scoped Packages (@scope/package-name) unterstützt, um Mehrdeutigkeiten mit dem owner/repo GitHub-Kurzformat zu vermeiden.
Registry-Auflösung folgt dieser Priorität:
--registryCLI-Flag (explizites Überschreiben)- Scoped Registry aus
.npmrc(z. B.@scope:registry=https://...) - Standard-Registry aus
.npmrc - Fallback:
https://registry.npmjs.org/
Authentifizierung wird automatisch über die NPM_TOKEN Umgebungsvariable oder registry-spezifische _authToken Einträge in deiner .npmrc Datei abgewickelt.
Hinweis: npm-Extensions müssen eine
qwen-extension.jsonDatei im Package-Root enthalten, die demselben Format wie jede andere Qwen Code Extension folgt. Details zum Packaging findest du unter Extension Releasing.
Von einem Git Repository
qwen extensions install https://github.com/github/github-mcp-serverDies installiert die GitHub MCP Server Extension.
Von einem lokalen Pfad
qwen extensions install /path/to/your/extensionBeachte, dass wir eine Kopie der installierten Extension erstellen. Du musst daher qwen extensions update ausführen, um Änderungen sowohl von lokal definierten Extensions als auch von denen auf GitHub zu übernehmen.
Deinstallation einer Extension
Führe zur Deinstallation qwen extensions uninstall extension-name aus. Im Fall des Installationsbeispiels:
qwen extensions uninstall qwen-cli-securityDeaktivieren einer Extension
Extensions sind standardmäßig in allen Workspaces aktiviert. Du kannst eine Extension vollständig oder nur für einen bestimmten Workspace deaktivieren.
Beispielsweise deaktiviert qwen extensions disable extension-name die Extension auf Benutzerebene, sodass sie überall deaktiviert ist. qwen extensions disable extension-name --scope=workspace deaktiviert die Extension nur im aktuellen Workspace.
Aktivieren einer Extension
Du kannst Extensions mit qwen extensions enable extension-name aktivieren. Du kannst eine Extension auch für einen bestimmten Workspace aktivieren, indem du qwen extensions enable extension-name --scope=workspace innerhalb dieses Workspaces ausführst.
Dies ist nützlich, wenn du eine Extension auf oberster Ebene deaktiviert hast und sie nur an bestimmten Stellen aktivieren möchtest.
Aktualisieren einer Extension
Für Extensions, die von einem lokalen Pfad, einem Git Repository oder einer npm Registry installiert wurden, kannst du mit qwen extensions update extension-name explizit auf die neueste Version aktualisieren. Bei npm-Extensions, die ohne Versions-Pin installiert wurden (z. B. @scope/pkg), prüfen Updates den latest Dist-Tag. Bei Installation mit einem bestimmten Dist-Tag (z. B. @scope/pkg@beta) verfolgen Updates diesen Tag. Extensions, die auf eine exakte Version gepinnt sind (z. B. @scope/pkg@1.2.0), gelten immer als aktuell.
Du kannst alle Extensions mit folgendem Befehl aktualisieren:
qwen extensions update --allFunktionsweise
Beim Start sucht Qwen Code nach Extensions in <home>/.qwen/extensions
Extensions liegen als Verzeichnis vor, das eine qwen-extension.json Datei enthält. Beispiel:
<home>/.qwen/extensions/my-extension/qwen-extension.json
qwen-extension.json
Die qwen-extension.json Datei enthält die Konfiguration der Extension. Die Datei hat folgende Struktur:
{
"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: Der Name der Extension. Dieser wird zur eindeutigen Identifizierung und zur Konfliktlösung verwendet, wenn Extension-Befehle denselben Namen wie Benutzer- oder Projektbefehle haben. Der Name sollte aus Kleinbuchstaben oder Zahlen bestehen und Bindestriche statt Unterstrichen oder Leerzeichen verwenden. So bezeichnen Nutzer deine Extension in der CLI. Beachte, dass dieser Name mit dem Verzeichnisnamen der Extension übereinstimmen muss.version: Die Version der Extension.mcpServers: Eine Map von MCP-Servern zur Konfiguration. Der Schlüssel ist der Name des Servers, der Wert ist die Serverkonfiguration. Diese Server werden beim Start geladen, genau wie MCP-Server, die in einersettings.jsonDatei konfiguriert sind. Wenn sowohl eine Extension als auch einesettings.jsonDatei einen MCP-Server mit demselben Namen konfigurieren, hat der in dersettings.jsonDatei definierte Server Vorrang.- Beachte, dass alle MCP-Server-Konfigurationsoptionen außer
trustunterstützt werden.
- Beachte, dass alle MCP-Server-Konfigurationsoptionen außer
channels: Eine Map von benutzerdefinierten Channel-Adaptern. Der Schlüssel ist der Channel-Typname, der Wert enthält einenentry(Pfad zum kompilierten JS-Einstiegspunkt) und optional einendisplayName. Der Einstiegspunkt muss einpluginObjekt exportieren, das derChannelPluginSchnittstelle entspricht. Eine vollständige Anleitung findest du unter Channel Plugins.contextFileName: Der Name der Datei, die den Kontext für die Extension enthält. Dieser wird verwendet, um den Kontext aus dem Extensions-Verzeichnis zu laden. Wenn diese Eigenschaft nicht verwendet wird, aber eineQWEN.mdDatei im Extensions-Verzeichnis vorhanden ist, wird diese Datei geladen.commands: Das Verzeichnis mit benutzerdefinierten Befehlen (Standard:commands). Befehle sind.mdDateien, die Prompts definieren.skills: Das Verzeichnis mit benutzerdefinierten Skills (Standard:skills). Skills werden automatisch erkannt und sind über den/skillsBefehl verfügbar.agents: Das Verzeichnis mit benutzerdefinierten Subagents (Standard:agents). Subagents sind.yamloder.mdDateien, die spezialisierte KI-Assistenten definieren.settings: Ein Array von Einstellungen, die die Extension benötigt. Bei der Installation werden Nutzer aufgefordert, Werte für diese Einstellungen anzugeben. Die Werte werden sicher gespeichert und als Umgebungsvariablen an MCP-Server übergeben.- Jede Einstellung hat folgende Eigenschaften:
name: Anzeigename der Einstellungdescription: Beschreibung, wofür diese Einstellung verwendet wirdenvVar: Der Name der Umgebungsvariable, die gesetzt wirdsensitive: Boolescher Wert, der angibt, ob der Wert verborgen werden soll (z. B. API-Keys, Passwörter)
- Jede Einstellung hat folgende Eigenschaften:
Verwaltung von Extension-Einstellungen
Extensions können Konfigurationen über Einstellungen (z. B. API-Keys oder Credentials) erfordern. Diese Einstellungen können über den qwen extensions settings CLI-Befehl verwaltet werden:
Einstellungswert festlegen:
qwen extensions settings set <extension-name> <setting-name> [--scope user|workspace]Alle Einstellungen einer Extension auflisten:
qwen extensions settings list <extension-name>Aktuelle Werte anzeigen (Benutzer und Workspace):
qwen extensions settings show <extension-name> <setting-name>Einstellungswert entfernen:
qwen extensions settings unset <extension-name> <setting-name> [--scope user|workspace]Einstellungen können auf zwei Ebenen konfiguriert werden:
- Benutzerebene (Standard): Einstellungen gelten projektübergreifend (
~/.qwen/.env) - Workspace-Ebene: Einstellungen gelten nur für das aktuelle Projekt (
.qwen/.env)
Workspace-Einstellungen haben Vorrang vor Benutzereinstellungen. Sensible Einstellungen werden sicher gespeichert und niemals im Klartext angezeigt.
Beim Start von Qwen Code werden alle Extensions geladen und ihre Konfigurationen zusammengeführt. Bei Konflikten hat die Workspace-Konfiguration Vorrang.
Benutzerdefinierte Befehle
Extensions können benutzerdefinierte Befehle bereitstellen, indem Markdown-Dateien in einem commands/ Unterverzeichnis innerhalb des Extensions-Verzeichnisses abgelegt werden. Diese Befehle folgen demselben Format wie benutzer- und projektspezifische Befehle und verwenden Standard-Namenskonventionen.
Hinweis: Das Befehlsformat wurde von TOML auf Markdown aktualisiert. TOML-Dateien sind veraltet, werden aber weiterhin unterstützt. Du kannst bestehende TOML-Befehle über den automatischen Migrations-Prompt migrieren, der beim Erkennen von TOML-Dateien angezeigt wird.
Beispiel
Eine Extension namens gcp mit folgender Struktur:
.qwen/extensions/gcp/
├── qwen-extension.json
└── commands/
├── deploy.md
└── gcs/
└── sync.mdStellt folgende Befehle bereit:
/deploy- Wird in der Hilfe als[gcp] Custom command from deploy.mdangezeigt/gcs:sync- Wird in der Hilfe als[gcp] Custom command from sync.mdangezeigt
Benutzerdefinierte Skills
Extensions können benutzerdefinierte Skills bereitstellen, indem Skill-Dateien in einem skills/ Unterverzeichnis innerhalb des Extensions-Verzeichnisses abgelegt werden. Jeder Skill sollte eine SKILL.md Datei mit YAML-Frontmatter enthalten, die den Namen und die Beschreibung des Skills definiert.
Beispiel
.qwen/extensions/my-extension/
├── qwen-extension.json
└── skills/
└── pdf-processor/
└── SKILL.mdDer Skill ist über den /skills Befehl verfügbar, wenn die Extension aktiv ist.
Benutzerdefinierte Subagents
Extensions können benutzerdefinierte Subagents bereitstellen, indem Agent-Konfigurationsdateien in einem agents/ Unterverzeichnis innerhalb des Extensions-Verzeichnisses abgelegt werden. Agents werden über YAML- oder Markdown-Dateien definiert.
Beispiel
.qwen/extensions/my-extension/
├── qwen-extension.json
└── agents/
└── testing-expert.yamlExtension-Subagents erscheinen im Subagent-Manager-Dialog im Bereich “Extension Agents”.
Konfliktlösung
Extension-Befehle haben die niedrigste Priorität. Wenn ein Konflikt mit Benutzer- oder Projektbefehlen auftritt:
- Kein Konflikt: Der Extension-Befehl verwendet seinen natürlichen Namen (z. B.
/deploy) - Mit Konflikt: Der Extension-Befehl wird mit dem Extension-Präfix umbenannt (z. B.
/gcp.deploy)
Wenn beispielsweise sowohl ein Benutzer als auch die gcp Extension einen deploy Befehl definieren:
/deploy- Führt den deploy-Befehl des Benutzers aus/gcp.deploy- Führt den deploy-Befehl der Extension aus (gekennzeichnet mit[gcp]Tag)
Variablen
Qwen Code Extensions erlauben die Variablenersetzung in qwen-extension.json. Dies ist nützlich, wenn du z. B. das aktuelle Verzeichnis benötigst, um einen MCP-Server mit "cwd": "${extensionPath}${/}run.ts" auszuführen.
Unterstützte Variablen:
| variable | description |
|---|---|
${extensionPath} | Der vollständige Pfad der Extension im Dateisystem des Benutzers, z. B. /Users/username/.qwen/extensions/example-extension. Symlinks werden nicht aufgelöst. |
${workspacePath} | Der vollständige Pfad des aktuellen Workspaces. |
${/} or ${pathSeparator} | Das Pfadtrennzeichen (unterschiedlich je nach Betriebssystem). |