Zum Hauptinhalt springen

Plugins

Plugins erweitern OpenClaw um neue Fähigkeiten: Channels, Modell-Provider, Tools, Skills, Speech, Echtzeit-Transkription, Echtzeit-Stimme, Medienverständnis, Bildgenerierung, Videogenerierung, Web-Abruf, Web- suche und mehr. Einige Plugins sind Core (werden mit OpenClaw ausgeliefert), andere sind extern (werden von der Community auf npm veröffentlicht).

Schnellstart

1

Anzeigen, was geladen ist

openclaw plugins list
2

Ein Plugin installieren

# Von npm
openclaw plugins install @openclaw/voice-call

# Aus einem lokalen Verzeichnis oder Archiv
openclaw plugins install ./my-plugin
openclaw plugins install ./my-plugin.tgz
3

Das Gateway neu starten

openclaw gateway restart
Konfiguriere es dann unter plugins.entries.\<id\>.config in deiner Konfigurationsdatei.
Wenn du lieber chat-native Steuerung verwendest, aktiviere commands.plugins: true und nutze:
/plugin install clawhub:@openclaw/voice-call
/plugin show voice-call
/plugin enable voice-call
Der Installationspfad verwendet denselben Resolver wie die CLI: lokaler Pfad/Archiv, explizit clawhub:<pkg> oder einfache Paketspezifikation (zuerst ClawHub, dann npm-Fallback). Wenn die Konfiguration ungültig ist, schlägt die Installation normalerweise sicher fehl und verweist dich auf openclaw doctor --fix. Die einzige Wiederherstellungsausnahme ist ein schmaler Pfad zur Neuinstallation gebündelter Plugins für Plugins, die sich für openclaw.install.allowInvalidConfigRecovery entscheiden.

Plugin-Typen

OpenClaw erkennt zwei Plugin-Formate:
FormatFunktionsweiseBeispiele
Nativopenclaw.plugin.json + Laufzeitmodul; wird im Prozess ausgeführtOffizielle Plugins, Community-npm-Pakete
BundleCodex-/Claude-/Cursor-kompatibles Layout; auf OpenClaw-Features abgebildet.codex-plugin/, .claude-plugin/, .cursor-plugin/
Beide erscheinen unter openclaw plugins list. Details zu Bundles findest du unter Plugin-Bundles. Wenn du ein natives Plugin schreibst, beginne mit Plugins entwickeln und dem SDK-Überblick zu Plugins.

Offizielle Plugins

Installierbar (npm)

PluginPaketDokumentation
Matrix@openclaw/matrixMatrix
Microsoft Teams@openclaw/msteamsMicrosoft Teams
Nostr@openclaw/nostrNostr
Voice Call@openclaw/voice-callVoice Call
Zalo@openclaw/zaloZalo
Zalo Personal@openclaw/zalouserZalo Personal

Core (mit OpenClaw ausgeliefert)

anthropic, byteplus, cloudflare-ai-gateway, github-copilot, google, huggingface, kilocode, kimi-coding, minimax, mistral, qwen, moonshot, nvidia, openai, opencode, opencode-go, openrouter, qianfan, synthetic, together, venice, vercel-ai-gateway, volcengine, xiaomi, zai
  • memory-core — gebündelte Memory-Suche (Standard über plugins.slots.memory)
  • memory-lancedb — bei Bedarf installierbares Langzeit-Memory mit automatischem Recall/Capture (setze plugins.slots.memory = "memory-lancedb")
elevenlabs, microsoft
  • browser — gebündeltes Browser-Plugin für das Browser-Tool, die CLI openclaw browser, die Gateway-Methode browser.request, die Browser-Laufzeit und den Standarddienst zur Browser-Steuerung (standardmäßig aktiviert; vor dem Ersetzen deaktivieren)
  • copilot-proxy — VS Code Copilot Proxy bridge (standardmäßig deaktiviert)
Du suchst nach Drittanbieter-Plugins? Siehe Community-Plugins.

Konfiguration

{
  plugins: {
    enabled: true,
    allow: ["voice-call"],
    deny: ["untrusted-plugin"],
    load: { paths: ["~/Projects/oss/voice-call-extension"] },
    entries: {
      "voice-call": { enabled: true, config: { provider: "twilio" } },
    },
  },
}
FeldBeschreibung
enabledMaster-Schalter (Standard: true)
allowPlugin-Allowlist (optional)
denyPlugin-Denylist (optional; deny hat Vorrang)
load.pathsZusätzliche Plugin-Dateien/-Verzeichnisse
slotsSelektoren für exklusive Slots (z. B. memory, contextEngine)
entries.\<id\>Schalter + Konfiguration pro Plugin
Änderungen an der Konfiguration erfordern einen Neustart des Gateways. Wenn das Gateway mit Konfigurations- Watching + In-Process-Neustart läuft (der Standardpfad openclaw gateway), wird dieser Neustart in der Regel automatisch kurz nach dem Schreiben der Konfiguration durchgeführt.
  • Deaktiviert: Das Plugin existiert, wurde aber durch Aktivierungsregeln ausgeschaltet. Die Konfiguration bleibt erhalten.
  • Fehlend: Die Konfiguration verweist auf eine Plugin-ID, die von der Discovery nicht gefunden wurde.
  • Ungültig: Das Plugin existiert, aber seine Konfiguration entspricht nicht dem deklarierten Schema.

Discovery und Priorität

OpenClaw scannt in dieser Reihenfolge nach Plugins (der erste Treffer gewinnt):
1

Konfigurationspfade

plugins.load.paths — explizite Datei- oder Verzeichnispfade.
2

Workspace-Erweiterungen

\<workspace\>/.openclaw/<plugin-root>/*.ts und \<workspace\>/.openclaw/<plugin-root>/*/index.ts.
3

Globale Erweiterungen

~/.openclaw/<plugin-root>/*.ts und ~/.openclaw/<plugin-root>/*/index.ts.
4

Gebündelte Plugins

Mit OpenClaw ausgeliefert. Viele sind standardmäßig aktiviert (Modell-Provider, Speech). Andere müssen explizit aktiviert werden.

Aktivierungsregeln

  • plugins.enabled: false deaktiviert alle Plugins
  • plugins.deny hat immer Vorrang vor allow
  • plugins.entries.\<id\>.enabled: false deaktiviert dieses Plugin
  • Plugins mit Workspace-Ursprung sind standardmäßig deaktiviert (müssen explizit aktiviert werden)
  • Gebündelte Plugins folgen dem integrierten Satz standardmäßig aktivierter Plugins, sofern nichts überschrieben wird
  • Exklusive Slots können das für diesen Slot ausgewählte Plugin zwangsaktivieren

Plugin-Slots (exklusive Kategorien)

Einige Kategorien sind exklusiv (es ist immer nur eines gleichzeitig aktiv):
{
  plugins: {
    slots: {
      memory: "memory-core", // oder "none" zum Deaktivieren
      contextEngine: "legacy", // oder eine Plugin-ID
    },
  },
}
SlotWas er steuertStandard
memoryAktives Memory-Pluginmemory-core
contextEngineAktive Context-Enginelegacy (integriert)

CLI-Referenz

openclaw plugins list                       # kompakte Bestandsübersicht
openclaw plugins list --enabled            # nur geladene Plugins
openclaw plugins list --verbose            # Detailzeilen pro Plugin
openclaw plugins list --json               # maschinenlesbare Bestandsübersicht
openclaw plugins inspect <id>              # tiefe Details
openclaw plugins inspect <id> --json       # maschinenlesbar
openclaw plugins inspect --all             # tabellarische Gesamtübersicht
openclaw plugins info <id>                 # Alias für inspect
openclaw plugins doctor                    # Diagnosen

openclaw plugins install <package>         # installieren (zuerst ClawHub, dann npm)
openclaw plugins install clawhub:<pkg>     # nur aus ClawHub installieren
openclaw plugins install <spec> --force    # vorhandene Installation überschreiben
openclaw plugins install <path>            # aus lokalem Pfad installieren
openclaw plugins install -l <path>         # für Entwicklung verlinken (kein Kopieren)
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin      # exakte aufgelöste npm-Spezifikation speichern
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id>             # ein Plugin aktualisieren
openclaw plugins update <id> --dangerously-force-unsafe-install
openclaw plugins update --all            # alle aktualisieren
openclaw plugins uninstall <id>          # Konfigurations-/Installationsdatensätze entfernen
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json

openclaw plugins enable <id>
openclaw plugins disable <id>
Gebündelte Plugins werden mit OpenClaw ausgeliefert. Viele sind standardmäßig aktiviert (zum Beispiel gebündelte Modell-Provider, gebündelte Speech-Provider und das gebündelte Browser- Plugin). Andere gebündelte Plugins benötigen weiterhin openclaw plugins enable <id>. --force überschreibt ein vorhandenes installiertes Plugin oder Hook-Pack an Ort und Stelle. Es wird mit --link nicht unterstützt, da dabei der Quellpfad wiederverwendet wird, statt ein verwaltetes Installationsziel zu überschreiben. --pin ist nur für npm verfügbar. Es wird mit --marketplace nicht unterstützt, weil Marketplace-Installationen Metadaten zur Marketplace-Quelle statt einer npm-Spezifikation persistieren. --dangerously-force-unsafe-install ist eine Notfall-Überschreibung für Fehlalarme des integrierten Scanners für gefährlichen Code. Es erlaubt, dass Plugin-Installationen und Plugin-Aktualisierungen trotz integrierter Befunde der Stufe critical fortgesetzt werden, aber es umgeht weiterhin weder Plugin-Policy-Sperren von before_install noch das Blockieren bei Scan-Fehlern. Dieses CLI-Flag gilt nur für Plugin-Installations-/Aktualisierungsabläufe. Gateway-gestützte Skill- Abhängigkeitsinstallationen verwenden stattdessen die passende Request-Überschreibung dangerouslyForceUnsafeInstall, während openclaw skills install weiterhin der separate ClawHub- Ablauf zum Herunterladen/Installieren von Skills bleibt. Kompatible Bundles nehmen am selben Ablauf plugin list/inspect/enable/disable teil. Die aktuelle Laufzeitunterstützung umfasst Bundle-Skills, Claude-Command-Skills, Standardwerte aus Claude-settings.json, Standardwerte aus Claude-.lsp.json und manifest-deklarierten lspServers, Cursor-Command-Skills und kompatible Codex-Hook- Verzeichnisse. openclaw plugins inspect <id> meldet außerdem erkannte Bundle-Fähigkeiten sowie unterstützte oder nicht unterstützte MCP- und LSP-Server-Einträge für Bundle-gestützte Plugins. Marketplace-Quellen können ein bekannter Claude-Marketplace-Name aus ~/.claude/plugins/known_marketplaces.json, eine lokale Marketplace-Wurzel oder ein Pfad zu marketplace.json, eine GitHub-Kurzform wie owner/repo, eine GitHub-Repo- URL oder eine Git-URL sein. Bei Remote-Marketplaces müssen Plugin-Einträge innerhalb des geklonten Marketplace-Repos bleiben und dürfen nur relative Pfadequellen verwenden. Vollständige Details findest du in der CLI-Referenz für openclaw plugins.

Überblick über die Plugin-API

Native Plugins exportieren ein Einstiegsobjekt, das register(api) bereitstellt. Ältere Plugins können weiterhin activate(api) als alten Alias verwenden, aber neue Plugins sollten register verwenden.
export default definePluginEntry({
  id: "my-plugin",
  name: "My Plugin",
  register(api) {
    api.registerProvider({
      /* ... */
    });
    api.registerTool({
      /* ... */
    });
    api.registerChannel({
      /* ... */
    });
  },
});
OpenClaw lädt das Einstiegsobjekt und ruft register(api) während der Plugin- Aktivierung auf. Der Loader greift für ältere Plugins weiterhin auf activate(api) zurück, aber gebündelte Plugins und neue externe Plugins sollten register als öffentlichen Vertrag behandeln. Häufige Registrierungsmethoden:
MethodeWas sie registriert
registerProviderModell-Provider (LLM)
registerChannelChat-Channel
registerToolAgent-Tool
registerHook / on(...)Lebenszyklus-Hooks
registerSpeechProviderText-to-Speech / STT
registerRealtimeTranscriptionProviderStreaming-STT
registerRealtimeVoiceProviderDuplex-Echtzeit-Stimme
registerMediaUnderstandingProviderBild-/Audio-Analyse
registerImageGenerationProviderBildgenerierung
registerVideoGenerationProviderVideogenerierung
registerWebFetchProviderWeb-Abruf-/Scrape-Provider
registerWebSearchProviderWebsuche
registerHttpRouteHTTP-Endpunkt
registerCommand / registerCliCLI-Befehle
registerContextEngineContext-Engine
registerServiceHintergrunddienst
Verhalten der Hook-Schranken für typisierte Lebenszyklus-Hooks:
  • before_tool_call: { block: true } ist final; Handler mit geringerer Priorität werden übersprungen.
  • before_tool_call: { block: false } ist ein No-op und hebt einen früheren Block nicht auf.
  • before_install: { block: true } ist final; Handler mit geringerer Priorität werden übersprungen.
  • before_install: { block: false } ist ein No-op und hebt einen früheren Block nicht auf.
  • message_sending: { cancel: true } ist final; Handler mit geringerer Priorität werden übersprungen.
  • message_sending: { cancel: false } ist ein No-op und hebt eine frühere Abbruchentscheidung nicht auf.
Vollständiges Verhalten typisierter Hooks findest du unter SDK-Überblick.

Verwandt