diff --git a/docs/de/channels/index.md b/docs/de/channels/index.md index b3d359c07..b54e71f18 100644 --- a/docs/de/channels/index.md +++ b/docs/de/channels/index.md @@ -2,13 +2,13 @@ read_when: - Sie möchten einen Chat-Kanal für OpenClaw auswählen - Sie benötigen einen schnellen Überblick über unterstützte Messaging-Plattformen -summary: Messaging-Plattformen, mit denen sich OpenClaw verbinden kann +summary: Messaging-Plattformen, mit denen OpenClaw sich verbinden kann title: Chat-Kanäle x-i18n: - generated_at: "2026-04-05T12:35:14Z" + generated_at: "2026-04-19T01:11:08Z" model: gpt-5.4 provider: openai - source_hash: 246ee6f16aebe751241f00102bb435978ed21f6158385aff5d8e222e30567416 + source_hash: d41c3a37d91c07f15afd8e199a289297772331c70e38697346a373595eb2d993 source_path: channels/index.md workflow: 15 --- @@ -20,38 +20,38 @@ Text wird überall unterstützt; Medien und Reaktionen variieren je nach Kanal. ## Unterstützte Kanäle -- [BlueBubbles](/channels/bluebubbles) — **Empfohlen für iMessage**; verwendet die REST-API des BlueBubbles-macOS-Servers mit vollständiger Funktionsunterstützung (gebündeltes Plugin; bearbeiten, zurückziehen, Effekte, Reaktionen, Gruppenverwaltung — Bearbeiten ist derzeit unter macOS 26 Tahoe defekt). -- [Discord](/channels/discord) — Discord Bot API + Gateway; unterstützt Server, Kanäle und DMs. -- [Feishu](/channels/feishu) — Feishu/Lark-Bot über WebSocket (gebündeltes Plugin). -- [Google Chat](/channels/googlechat) — Google Chat API-App über HTTP-Webhook. -- [iMessage (legacy)](/channels/imessage) — Legacy-macOS-Integration über imsg CLI (veraltet, für neue Setups BlueBubbles verwenden). -- [IRC](/channels/irc) — Klassische IRC-Server; Kanäle + DMs mit Pairing-/Allowlist-Steuerung. -- [LINE](/channels/line) — LINE Messaging API-Bot (gebündeltes Plugin). -- [Matrix](/channels/matrix) — Matrix-Protokoll (gebündeltes Plugin). -- [Mattermost](/channels/mattermost) — Bot API + WebSocket; Kanäle, Gruppen, DMs (gebündeltes Plugin). -- [Microsoft Teams](/channels/msteams) — Bot Framework; Enterprise-Unterstützung (gebündeltes Plugin). -- [Nextcloud Talk](/channels/nextcloud-talk) — Selbstgehosteter Chat über Nextcloud Talk (gebündeltes Plugin). -- [Nostr](/channels/nostr) — Dezentrale DMs über NIP-04 (gebündeltes Plugin). -- [QQ Bot](/channels/qqbot) — QQ Bot API; privater Chat, Gruppenchat und Rich Media (gebündeltes Plugin). -- [Signal](/channels/signal) — signal-cli; datenschutzorientiert. -- [Slack](/channels/slack) — Bolt SDK; Workspace-Apps. -- [Synology Chat](/channels/synology-chat) — Synology NAS Chat über ausgehende + eingehende Webhooks (gebündeltes Plugin). -- [Telegram](/channels/telegram) — Bot API über grammY; unterstützt Gruppen. -- [Tlon](/channels/tlon) — Urbit-basierter Messenger (gebündeltes Plugin). -- [Twitch](/channels/twitch) — Twitch-Chat über IRC-Verbindung (gebündeltes Plugin). -- [Voice Call](/plugins/voice-call) — Telefonie über Plivo oder Twilio (Plugin, separat installiert). +- [BlueBubbles](/de/channels/bluebubbles) — **Empfohlen für iMessage**; verwendet die BlueBubbles-macOS-Server-REST-API mit vollständiger Funktionsunterstützung (gebündeltes Plugin; Bearbeiten, Zurückziehen, Effekte, Reaktionen, Gruppenverwaltung — Bearbeiten ist derzeit unter macOS 26 Tahoe defekt). +- [Discord](/de/channels/discord) — Discord Bot API + Gateway; unterstützt Server, Kanäle und DMs. +- [Feishu](/de/channels/feishu) — Feishu/Lark-Bot über WebSocket (gebündeltes Plugin). +- [Google Chat](/de/channels/googlechat) — Google Chat API-App über HTTP-Webhook. +- [iMessage (legacy)](/de/channels/imessage) — Legacy-macOS-Integration über imsg CLI (veraltet, verwenden Sie für neue Setups BlueBubbles). +- [IRC](/de/channels/irc) — Klassische IRC-Server; Kanäle + DMs mit Pairing-/Allowlist-Kontrollen. +- [LINE](/de/channels/line) — LINE Messaging API-Bot (gebündeltes Plugin). +- [Matrix](/de/channels/matrix) — Matrix-Protokoll (gebündeltes Plugin). +- [Mattermost](/de/channels/mattermost) — Bot API + WebSocket; Kanäle, Gruppen, DMs (gebündeltes Plugin). +- [Microsoft Teams](/de/channels/msteams) — Bot Framework; Enterprise-Unterstützung (gebündeltes Plugin). +- [Nextcloud Talk](/de/channels/nextcloud-talk) — Selbst gehosteter Chat über Nextcloud Talk (gebündeltes Plugin). +- [Nostr](/de/channels/nostr) — Dezentrale DMs über NIP-04 (gebündeltes Plugin). +- [QQ Bot](/de/channels/qqbot) — QQ Bot API; privater Chat, Gruppenchat und Rich Media (gebündeltes Plugin). +- [Signal](/de/channels/signal) — signal-cli; datenschutzorientiert. +- [Slack](/de/channels/slack) — Bolt SDK; Workspace-Apps. +- [Synology Chat](/de/channels/synology-chat) — Synology NAS Chat über ausgehende + eingehende Webhooks (gebündeltes Plugin). +- [Telegram](/de/channels/telegram) — Bot API über grammY; unterstützt Gruppen. +- [Tlon](/de/channels/tlon) — Urbit-basierter Messenger (gebündeltes Plugin). +- [Twitch](/de/channels/twitch) — Twitch-Chat über IRC-Verbindung (gebündeltes Plugin). +- [Voice Call](/de/plugins/voice-call) — Telefonie über Plivo oder Twilio (Plugin, separat installiert). - [WebChat](/web/webchat) — Gateway-WebChat-Benutzeroberfläche über WebSocket. -- [WeChat](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) — Tencent iLink Bot-Plugin über QR-Login; nur private Chats. -- [WhatsApp](/channels/whatsapp) — Am weitesten verbreitet; verwendet Baileys und erfordert QR-Pairing. -- [Zalo](/channels/zalo) — Zalo Bot API; Vietnams beliebter Messenger (gebündeltes Plugin). -- [Zalo Personal](/channels/zalouser) — Persönliches Zalo-Konto über QR-Login (gebündeltes Plugin). +- [WeChat](/de/channels/wechat) — Tencent iLink Bot-Plugin über QR-Login; nur private Chats (externes Plugin). +- [WhatsApp](/de/channels/whatsapp) — Am beliebtesten; verwendet Baileys und erfordert QR-Pairing. +- [Zalo](/de/channels/zalo) — Zalo Bot API; Vietnams beliebter Messenger (gebündeltes Plugin). +- [Zalo Personal](/de/channels/zalouser) — Persönliches Zalo-Konto über QR-Login (gebündeltes Plugin). ## Hinweise -- Kanäle können gleichzeitig ausgeführt werden; konfigurieren Sie mehrere, und OpenClaw routet pro Chat. -- Die schnellste Einrichtung ist in der Regel **Telegram** (einfaches Bot-Token). WhatsApp erfordert QR-Pairing und - speichert mehr Status auf dem Datenträger. -- Das Gruppenverhalten variiert je nach Kanal; siehe [Groups](/channels/groups). -- DM-Pairing und Allowlists werden aus Sicherheitsgründen erzwungen; siehe [Security](/gateway/security). -- Fehlerbehebung: [Channel troubleshooting](/channels/troubleshooting). -- Modell-Provider sind separat dokumentiert; siehe [Model Providers](/providers/models). +- Kanäle können gleichzeitig ausgeführt werden; konfigurieren Sie mehrere, und OpenClaw leitet pro Chat weiter. +- Die schnellste Einrichtung ist normalerweise **Telegram** (einfaches Bot-Token). WhatsApp erfordert QR-Pairing und + speichert mehr Status auf der Festplatte. +- Das Gruppenverhalten variiert je nach Kanal; siehe [Groups](/de/channels/groups). +- DM-Pairing und Allowlists werden aus Sicherheitsgründen durchgesetzt; siehe [Security](/de/gateway/security). +- Fehlerbehebung: [Fehlerbehebung für Kanäle](/de/channels/troubleshooting). +- Modellanbieter werden separat dokumentiert; siehe [Model Providers](/de/providers/models). diff --git a/docs/de/channels/wechat.md b/docs/de/channels/wechat.md new file mode 100644 index 000000000..52d847873 --- /dev/null +++ b/docs/de/channels/wechat.md @@ -0,0 +1,157 @@ +--- +read_when: + - Sie möchten OpenClaw mit WeChat oder Weixin verbinden. + - Sie installieren oder beheben Probleme mit dem Channel-Plugin `openclaw-weixin`. + - Sie müssen verstehen, wie externe Channel-Plugins neben dem Gateway ausgeführt werden. +summary: Einrichtung des WeChat-Kanals über das externe openclaw-weixin Plugin +title: WeChat +x-i18n: + generated_at: "2026-04-19T01:11:10Z" + model: gpt-5.4 + provider: openai + source_hash: ae669f2b6300e0c2b1d1dc57743a0a2ab0c05b9e277ec2ac640a03e6e7ab3b84 + source_path: channels/wechat.md + workflow: 15 +--- + +# WeChat + +OpenClaw verbindet sich mit WeChat über Tencents externes +Channel-Plugin `@tencent-weixin/openclaw-weixin`. + +Status: externes Plugin. Direktchats und Medien werden unterstützt. Gruppenchats werden von den aktuellen Plugin-Fähigkeitsmetadaten nicht beworben. + +## Benennung + +- **WeChat** ist der benutzerseitige Name in dieser Dokumentation. +- **Weixin** ist der Name, der von Tencents Paket und von der Plugin-ID verwendet wird. +- `openclaw-weixin` ist die OpenClaw-Channel-ID. +- `@tencent-weixin/openclaw-weixin` ist das npm-Paket. + +Verwenden Sie `openclaw-weixin` in CLI-Befehlen und Konfigurationspfaden. + +## Funktionsweise + +Der WeChat-Code befindet sich nicht im OpenClaw-Core-Repository. OpenClaw stellt den generischen Vertrag für Channel-Plugins bereit, und das externe Plugin stellt die WeChat-spezifische Laufzeit bereit: + +1. `openclaw plugins install` installiert `@tencent-weixin/openclaw-weixin`. +2. Das Gateway erkennt das Plugin-Manifest und lädt den Plugin-Einstiegspunkt. +3. Das Plugin registriert die Channel-ID `openclaw-weixin`. +4. `openclaw channels login --channel openclaw-weixin` startet die QR-Anmeldung. +5. Das Plugin speichert Kontozugangsdaten im OpenClaw-Statusverzeichnis. +6. Wenn das Gateway startet, startet das Plugin seinen Weixin-Monitor für jedes konfigurierte Konto. +7. Eingehende WeChat-Nachrichten werden über den Channel-Vertrag normalisiert, an den ausgewählten OpenClaw-Agenten weitergeleitet und über den ausgehenden Pfad des Plugins zurückgesendet. + +Diese Trennung ist wichtig: Der OpenClaw-Core sollte channel-agnostisch bleiben. WeChat-Anmeldung, Tencent-iLink-API-Aufrufe, Medien-Upload/-Download, Kontext-Token und Kontoüberwachung liegen in der Verantwortung des externen Plugins. + +## Installation + +Schnellinstallation: + +```bash +npx -y @tencent-weixin/openclaw-weixin-cli install +``` + +Manuelle Installation: + +```bash +openclaw plugins install "@tencent-weixin/openclaw-weixin" +openclaw config set plugins.entries.openclaw-weixin.enabled true +``` + +Starten Sie das Gateway nach der Installation neu: + +```bash +openclaw gateway restart +``` + +## Anmeldung + +Führen Sie die QR-Anmeldung auf demselben Rechner aus, auf dem auch das Gateway läuft: + +```bash +openclaw channels login --channel openclaw-weixin +``` + +Scannen Sie den QR-Code mit WeChat auf Ihrem Telefon und bestätigen Sie die Anmeldung. Das Plugin speichert das Konto-Token nach einem erfolgreichen Scan lokal. + +Um ein weiteres WeChat-Konto hinzuzufügen, führen Sie denselben Anmeldebefehl erneut aus. Für mehrere Konten isolieren Sie Direktnachrichten-Sitzungen nach Konto, Channel und Absender: + +```bash +openclaw config set session.dmScope per-account-channel-peer +``` + +## Zugriffskontrolle + +Direktnachrichten verwenden das normale OpenClaw-Pairing- und Allowlist-Modell für Channel-Plugins. + +Genehmigen Sie neue Absender: + +```bash +openclaw pairing list openclaw-weixin +openclaw pairing approve openclaw-weixin +``` + +Das vollständige Zugriffskontrollmodell finden Sie unter [Pairing](/de/channels/pairing). + +## Kompatibilität + +Das Plugin prüft beim Start die Version des OpenClaw-Hosts. + +| Plugin-Linie | OpenClaw-Version | npm-Tag | +| ------------ | ----------------------- | -------- | +| `2.x` | `>=2026.3.22` | `latest` | +| `1.x` | `>=2026.1.0 <2026.3.22` | `legacy` | + +Wenn das Plugin meldet, dass Ihre OpenClaw-Version zu alt ist, aktualisieren Sie entweder OpenClaw oder installieren Sie die Legacy-Plugin-Linie: + +```bash +openclaw plugins install @tencent-weixin/openclaw-weixin@legacy +``` + +## Sidecar-Prozess + +Das WeChat-Plugin kann Hilfsarbeit neben dem Gateway ausführen, während es die Tencent-iLink-API überwacht. In Issue #68451 machte dieser Hilfspfad einen Fehler in OpenClaws generischer Bereinigung veralteter Gateways sichtbar: Ein Child-Prozess konnte versuchen, den übergeordneten Gateway-Prozess zu bereinigen, was unter Prozessmanagern wie systemd zu Neustartschleifen führte. + +Die aktuelle OpenClaw-Startbereinigung schließt den aktuellen Prozess und seine Vorfahren aus, daher darf ein Channel-Helfer das Gateway, das ihn gestartet hat, nicht beenden. Diese Korrektur ist generisch; sie ist kein WeChat-spezifischer Pfad im Core. + +## Fehlerbehebung + +Prüfen Sie Installation und Status: + +```bash +openclaw plugins list +openclaw channels status --probe +openclaw --version +``` + +Wenn der Channel als installiert angezeigt wird, aber keine Verbindung herstellt, bestätigen Sie, dass das Plugin aktiviert ist, und starten Sie neu: + +```bash +openclaw config set plugins.entries.openclaw-weixin.enabled true +openclaw gateway restart +``` + +Wenn das Gateway nach dem Aktivieren von WeChat wiederholt neu startet, aktualisieren Sie sowohl OpenClaw als auch das Plugin: + +```bash +npm view @tencent-weixin/openclaw-weixin version +openclaw plugins install "@tencent-weixin/openclaw-weixin" --force +openclaw gateway restart +``` + +Vorübergehend deaktivieren: + +```bash +openclaw config set plugins.entries.openclaw-weixin.enabled false +openclaw gateway restart +``` + +## Verwandte Dokumentation + +- Channel-Überblick: [Chat Channels](/de/channels) +- Pairing: [Pairing](/de/channels/pairing) +- Channel-Routing: [Channel Routing](/de/channels/channel-routing) +- Plugin-Architektur: [Plugin Architecture](/de/plugins/architecture) +- Channel-Plugin-SDK: [Channel Plugin SDK](/de/plugins/sdk-channel-plugins) +- Externes Paket: [@tencent-weixin/openclaw-weixin](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) diff --git a/docs/de/concepts/active-memory.md b/docs/de/concepts/active-memory.md index 05c084a62..4d4eff415 100644 --- a/docs/de/concepts/active-memory.md +++ b/docs/de/concepts/active-memory.md @@ -1,36 +1,36 @@ --- read_when: - - Sie möchten verstehen, wofür Active Memory gedacht ist. + - Sie möchten verstehen, wofür Active Memory da ist. - Sie möchten Active Memory für einen Konversationsagenten aktivieren. - Sie möchten das Verhalten von Active Memory anpassen, ohne es überall zu aktivieren. -summary: Ein Plugin-eigener blockierender Speicher-Sub-Agent, der relevante Erinnerungen in interaktive Chat-Sitzungen einspeist +summary: Ein Plugin-eigener blockierender Memory-Unteragent, der relevanten Memory in interaktive Chatsitzungen einspeist title: Active Memory x-i18n: - generated_at: "2026-04-16T06:22:27Z" + generated_at: "2026-04-19T01:11:10Z" model: gpt-5.4 provider: openai - source_hash: ab36c5fea1578348cc2258ea3b344cc7bdc814f337d659cdb790512b3ea45473 + source_hash: 30fb5d12f1f2e3845d95b90925814faa5c84240684ebd4325c01598169088432 source_path: concepts/active-memory.md workflow: 15 --- # Active Memory -Active Memory ist ein optionaler, Plugin-eigener blockierender Speicher-Sub-Agent, der +Active Memory ist ein optionaler, Plugin-eigener blockierender Memory-Unteragent, der vor der Hauptantwort für geeignete Konversationssitzungen ausgeführt wird. -Er existiert, weil die meisten Speichersysteme leistungsfähig, aber reaktiv sind. Sie verlassen sich darauf, -dass der Hauptagent entscheidet, wann der Speicher durchsucht werden soll, oder darauf, dass der Benutzer Dinge sagt -wie „Merke dir das“ oder „Durchsuche den Speicher“. Zu diesem Zeitpunkt ist der Moment, in dem der Speicher -die Antwort natürlich hätte wirken lassen, bereits vorbei. +Er existiert, weil die meisten Memory-Systeme zwar leistungsfähig, aber reaktiv sind. Sie verlassen sich darauf, +dass der Hauptagent entscheidet, wann Memory durchsucht werden soll, oder darauf, dass der Benutzer Dinge sagt +wie „Merke dir das“ oder „Durchsuche Memory“. Bis dahin ist der Moment, in dem Memory +die Antwort natürlich wirken lassen würde, bereits vorbei. -Active Memory gibt dem System eine begrenzte Gelegenheit, relevanten Speicherinhalt anzuzeigen, -bevor die Hauptantwort generiert wird. +Active Memory gibt dem System eine begrenzte Möglichkeit, relevanten Memory anzuzeigen, +bevor die Hauptantwort erzeugt wird. ## Fügen Sie dies in Ihren Agenten ein -Fügen Sie dies in Ihren Agenten ein, wenn Sie möchten, dass er Active Memory mit einer -eigenständigen Konfiguration mit sicheren Standardwerten aktiviert: +Fügen Sie dies in Ihren Agenten ein, wenn Sie Active Memory mit einer +eigenständigen Konfiguration mit sicheren Standardwerten aktivieren möchten: ```json5 { @@ -57,8 +57,9 @@ eigenständigen Konfiguration mit sicheren Standardwerten aktiviert: ``` Dadurch wird das Plugin für den Agenten `main` aktiviert, standardmäßig auf Sitzungen -im Stil von Direktnachrichten beschränkt, es kann zunächst das aktuelle Sitzungsmodell übernehmen und -verwendet das konfigurierte Fallback-Modell nur, wenn kein explizites oder übernommenes Modell verfügbar ist. +im Stil von Direktnachrichten beschränkt, es darf zuerst das aktuelle Sitzungsmodell erben und +verwendet das konfigurierte Fallback-Modell nur dann, wenn kein explizites oder geerbtes Modell +verfügbar ist. Starten Sie danach das Gateway neu: @@ -75,11 +76,11 @@ Um es live in einer Unterhaltung zu prüfen: ## Active Memory aktivieren -Die sicherste Einrichtung ist: +Die sicherste Konfiguration ist: 1. das Plugin aktivieren -2. einen Konversationsagenten als Ziel festlegen -3. Logging nur während der Anpassung aktiviert lassen +2. einen Konversationsagenten auswählen +3. Logging nur während der Anpassung eingeschaltet lassen Beginnen Sie mit Folgendem in `openclaw.json`: @@ -112,26 +113,26 @@ Starten Sie dann das Gateway neu: openclaw gateway ``` -Das bedeutet: +Das bedeutet Folgendes: - `plugins.entries.active-memory.enabled: true` aktiviert das Plugin - `config.agents: ["main"]` aktiviert Active Memory nur für den Agenten `main` -- `config.allowedChatTypes: ["direct"]` hält Active Memory standardmäßig nur für Sitzungen im Stil von Direktnachrichten aktiv -- wenn `config.model` nicht gesetzt ist, übernimmt Active Memory zunächst das aktuelle Sitzungsmodell -- `config.modelFallback` stellt optional Ihr eigenes Fallback-Anbieter-/Modell für den Abruf bereit +- `config.allowedChatTypes: ["direct"]` sorgt standardmäßig dafür, dass Active Memory nur für Sitzungen im Stil von Direktnachrichten aktiviert ist +- wenn `config.model` nicht gesetzt ist, erbt Active Memory zuerst das aktuelle Sitzungsmodell +- `config.modelFallback` stellt optional Ihr eigenes Fallback aus Anbieter/Modell für den Recall bereit - `config.promptStyle: "balanced"` verwendet den allgemeinen Standard-Prompt-Stil für den Modus `recent` -- Active Memory wird weiterhin nur in geeigneten interaktiven persistenten Chat-Sitzungen ausgeführt +- Active Memory wird weiterhin nur für geeignete interaktive persistente Chatsitzungen ausgeführt ## Empfehlungen zur Geschwindigkeit -Die einfachste Einrichtung besteht darin, `config.model` nicht zu setzen und Active Memory -dasselbe Modell verwenden zu lassen, das Sie bereits für normale Antworten verwenden. Das ist der sicherste Standard, -weil dabei Ihre vorhandenen Anbieter-, Authentifizierungs- und Modellpräferenzen übernommen werden. +Die einfachste Konfiguration besteht darin, `config.model` nicht zu setzen und Active Memory +dasselbe Modell verwenden zu lassen, das Sie bereits für normale Antworten nutzen. Das ist der sicherste Standard, +weil er Ihren vorhandenen Einstellungen für Anbieter, Authentifizierung und Modell folgt. -Wenn Sie möchten, dass sich Active Memory schneller anfühlt, verwenden Sie ein dediziertes Inferenzmodell, -anstatt das Haupt-Chat-Modell zu übernehmen. +Wenn Active Memory schneller wirken soll, verwenden Sie ein dediziertes Inferenzmodell, +anstatt das Haupt-Chatmodell zu übernehmen. -Beispiel für eine Einrichtung mit schnellem Anbieter: +Beispiel für eine schnelle Anbieter-Konfiguration: ```json5 models: { @@ -156,24 +157,24 @@ plugins: { } ``` -Schnelle Modelloptionen, die in Betracht gezogen werden sollten: +Schnelle Modelloptionen, die Sie in Betracht ziehen können: -- `cerebras/gpt-oss-120b` für ein schnelles dediziertes Abrufmodell mit einer schmalen Tool-Oberfläche +- `cerebras/gpt-oss-120b` für ein schnelles dediziertes Recall-Modell mit einer schmalen Tool-Oberfläche - Ihr normales Sitzungsmodell, indem Sie `config.model` nicht setzen -- ein Fallback-Modell mit geringer Latenz wie `google/gemini-3-flash`, wenn Sie ein separates Abrufmodell möchten, ohne Ihr primäres Chat-Modell zu ändern +- ein Fallback-Modell mit geringer Latenz wie `google/gemini-3-flash`, wenn Sie ein separates Recall-Modell möchten, ohne Ihr primäres Chatmodell zu ändern Warum Cerebras eine starke geschwindigkeitsorientierte Option für Active Memory ist: - die Tool-Oberfläche von Active Memory ist schmal: Es ruft nur `memory_search` und `memory_get` auf -- die Qualität des Abrufs ist wichtig, aber die Latenz ist wichtiger als beim Hauptantwortpfad -- ein dedizierter schneller Anbieter vermeidet es, die Latenz des Speicherabrufs an Ihren primären Chat-Anbieter zu koppeln +- die Recall-Qualität ist wichtig, aber die Latenz ist wichtiger als beim Pfad der Hauptantwort +- ein dedizierter schneller Anbieter vermeidet, dass die Latenz des Memory-Recall an Ihren primären Chatanbieter gebunden ist Wenn Sie kein separates geschwindigkeitsoptimiertes Modell möchten, lassen Sie `config.model` ungesetzt -und lassen Sie Active Memory das aktuelle Sitzungsmodell übernehmen. +und lassen Sie Active Memory das aktuelle Sitzungsmodell erben. ### Cerebras-Einrichtung -Fügen Sie einen Anbietereintrag wie diesen hinzu: +Fügen Sie einen Anbieter-Eintrag wie diesen hinzu: ```json5 models: { @@ -188,7 +189,7 @@ models: { } ``` -Richten Sie Active Memory dann darauf aus: +Richten Sie dann Active Memory darauf aus: ```json5 plugins: { @@ -205,18 +206,17 @@ plugins: { Hinweis: -- stellen Sie sicher, dass der Cerebras-API-Schlüssel tatsächlich Modellzugriff für das von Ihnen gewählte Modell hat, da die Sichtbarkeit von `/v1/models` allein keinen Zugriff auf `chat/completions` garantiert +- Stellen Sie sicher, dass der Cerebras-API-Schlüssel tatsächlich Modellzugriff für das von Ihnen gewählte Modell hat, denn die Sichtbarkeit von `/v1/models` allein garantiert keinen Zugriff auf `chat/completions` -## Wie man es sieht +## So sehen Sie es -Active Memory fügt für das Modell ein verborgenes nicht vertrauenswürdiges Prompt-Präfix ein. Es -zeigt keine rohen `...`-Tags in der -normalen für den Client sichtbaren Antwort an. +Active Memory injiziert ein verborgenes, nicht vertrauenswürdiges Prompt-Präfix für das Modell. Es +macht keine rohen Tags `...` in der normalen, für den Client sichtbaren Antwort sichtbar. ## Sitzungsumschaltung Verwenden Sie den Plugin-Befehl, wenn Sie Active Memory für die -aktuelle Chat-Sitzung pausieren oder fortsetzen möchten, ohne die Konfiguration zu bearbeiten: +aktuelle Chatsitzung pausieren oder fortsetzen möchten, ohne die Konfiguration zu bearbeiten: ```text /active-memory status @@ -224,11 +224,11 @@ aktuelle Chat-Sitzung pausieren oder fortsetzen möchten, ohne die Konfiguration /active-memory on ``` -Dies gilt für die Sitzung. Es ändert nicht -`plugins.entries.active-memory.enabled`, die Agentenzuordnung oder andere globale +Dies ist auf die Sitzung beschränkt. Es ändert nicht +`plugins.entries.active-memory.enabled`, die Agentenauswahl oder andere globale Konfigurationen. -Wenn der Befehl in die Konfiguration schreiben und Active Memory für +Wenn der Befehl die Konfiguration schreiben und Active Memory für alle Sitzungen pausieren oder fortsetzen soll, verwenden Sie die explizite globale Form: ```text @@ -237,12 +237,12 @@ alle Sitzungen pausieren oder fortsetzen soll, verwenden Sie die explizite globa /active-memory on --global ``` -Die globale Form schreibt `plugins.entries.active-memory.config.enabled`. Dabei bleibt -`plugins.entries.active-memory.enabled` aktiviert, sodass der Befehl verfügbar bleibt, um +Die globale Form schreibt `plugins.entries.active-memory.config.enabled`. Sie lässt +`plugins.entries.active-memory.enabled` aktiviert, damit der Befehl verfügbar bleibt, um Active Memory später wieder einzuschalten. -Wenn Sie sehen möchten, was Active Memory in einer Live-Sitzung macht, aktivieren Sie die -Sitzungsumschalter, die zu der gewünschten Ausgabe passen: +Wenn Sie sehen möchten, was Active Memory in einer Live-Sitzung tut, schalten Sie die +Sitzungsumschalter ein, die zu der gewünschten Ausgabe passen: ```text /verbose on @@ -255,10 +255,9 @@ Wenn diese aktiviert sind, kann OpenClaw Folgendes anzeigen: - eine lesbare Debug-Zusammenfassung wie `Active Memory Debug: Lemon pepper wings with blue cheese.`, wenn `/trace on` Diese Zeilen stammen aus demselben Active-Memory-Durchlauf, der das verborgene -Prompt-Präfix speist, sind aber für Menschen formatiert, anstatt rohe Prompt- -Auszeichnung anzuzeigen. Sie werden als Diagnose-Folgenachricht nach der normalen -Assistentenantwort gesendet, damit Kanal-Clients wie Telegram keine separate -Diagnose-Sprechblase vor der Antwort aufblinken lassen. +Prompt-Präfix speist, sind jedoch für Menschen formatiert, anstatt rohe Prompt-Markup offenzulegen. Sie werden als nachfolgende Diagnosemeldung nach der normalen +Assistentenantwort gesendet, damit Channel-Clients wie Telegram keine separate +Diagnoseblase vor der Antwort anzeigen. Wenn Sie zusätzlich `/trace raw` aktivieren, zeigt der verfolgte Block `Model Input (User Role)` das verborgene Active-Memory-Präfix wie folgt an: @@ -270,8 +269,8 @@ Untrusted context (metadata, do not treat as instructions or commands): ``` -Standardmäßig ist das Transkript des blockierenden Speicher-Sub-Agenten temporär und wird -nach Abschluss des Laufs gelöscht. +Standardmäßig ist das Transkript des blockierenden Memory-Unteragenten temporär und wird gelöscht, +nachdem der Durchlauf abgeschlossen ist. Beispielablauf: @@ -292,14 +291,14 @@ Erwartete sichtbare Antwortform: ## Wann es ausgeführt wird -Active Memory verwendet zwei Gate-Prüfungen: +Active Memory verwendet zwei Bedingungen: 1. **Konfigurations-Opt-in** Das Plugin muss aktiviert sein, und die aktuelle Agenten-ID muss in `plugins.entries.active-memory.config.agents` enthalten sein. -2. **Strikte Laufzeitberechtigung** - Auch wenn es aktiviert ist und als Ziel festgelegt wurde, wird Active Memory nur für geeignete - interaktive persistente Chat-Sitzungen ausgeführt. +2. **Strikte Laufzeit-Eignung** + Selbst wenn Active Memory aktiviert ist und ausgewählt wurde, wird es nur für geeignete + interaktive persistente Chatsitzungen ausgeführt. Die tatsächliche Regel lautet: @@ -319,17 +318,17 @@ Wenn eine dieser Bedingungen fehlschlägt, wird Active Memory nicht ausgeführt. ## Sitzungstypen -`config.allowedChatTypes` steuert, in welchen Arten von Unterhaltungen Active +`config.allowedChatTypes` steuert, für welche Arten von Unterhaltungen Active Memory überhaupt ausgeführt werden darf. -Der Standardwert ist: +Der Standard ist: ```json5 allowedChatTypes: ["direct"] ``` -Das bedeutet, dass Active Memory standardmäßig in Sitzungen im Stil von Direktnachrichten ausgeführt wird, aber -nicht in Gruppen- oder Kanalsitzungen, es sei denn, Sie aktivieren diese ausdrücklich. +Das bedeutet, dass Active Memory standardmäßig in Sitzungen im Stil von Direktnachrichten ausgeführt wird, +jedoch nicht in Gruppen- oder Channel-Sitzungen, sofern Sie diese nicht ausdrücklich aktivieren. Beispiele: @@ -350,30 +349,30 @@ allowedChatTypes: ["direct", "group", "channel"] Active Memory ist eine Funktion zur Anreicherung von Konversationen, keine plattformweite Inferenzfunktion. -| Surface | Active Memory wird ausgeführt? | +| Oberfläche | Wird Active Memory ausgeführt? | | ------------------------------------------------------------------- | -------------------------------------------------------- | -| Persistente Sitzungen in der Control UI / im Web-Chat | Ja, wenn das Plugin aktiviert ist und der Agent als Ziel festgelegt ist | -| Andere interaktive Kanalsitzungen auf demselben persistenten Chat-Pfad | Ja, wenn das Plugin aktiviert ist und der Agent als Ziel festgelegt ist | -| Headless-Einmalläufe | Nein | -| Heartbeat-/Hintergrundläufe | Nein | +| Control UI / persistente Web-Chat-Sitzungen | Ja, wenn das Plugin aktiviert ist und der Agent ausgewählt wurde | +| Andere interaktive Channel-Sitzungen auf demselben persistenten Chatpfad | Ja, wenn das Plugin aktiviert ist und der Agent ausgewählt wurde | +| Headless-Einmalausführungen | Nein | +| Heartbeat-/Hintergrundausführungen | Nein | | Generische interne `agent-command`-Pfade | Nein | -| Ausführung von Sub-Agenten/internen Hilfen | Nein | +| Ausführung von Unteragenten/internen Hilfsfunktionen | Nein | -## Warum es verwenden +## Warum Sie es verwenden sollten Verwenden Sie Active Memory, wenn: - die Sitzung persistent und benutzergerichtet ist -- der Agent über sinnvollen Langzeitspeicher verfügt, der durchsucht werden kann +- der Agent über sinnvollen langfristigen Memory verfügt, der durchsucht werden kann - Kontinuität und Personalisierung wichtiger sind als reine Prompt-Deterministik Es funktioniert besonders gut für: - stabile Präferenzen - wiederkehrende Gewohnheiten -- langfristigen Benutzerkontext, der natürlich angezeigt werden soll +- langfristigen Benutzerkontext, der auf natürliche Weise sichtbar werden soll -Es ist ungeeignet für: +Es ist schlecht geeignet für: - Automatisierung - interne Worker @@ -393,7 +392,7 @@ flowchart LR I --> M["Main Reply"] ``` -Der blockierende Speicher-Sub-Agent kann nur Folgendes verwenden: +Der blockierende Memory-Unteragent kann nur Folgendes verwenden: - `memory_search` - `memory_get` @@ -402,19 +401,19 @@ Wenn die Verbindung schwach ist, sollte er `NONE` zurückgeben. ## Abfragemodi -`config.queryMode` steuert, wie viel Unterhaltung der blockierende Speicher-Sub-Agent sieht. +`config.queryMode` steuert, wie viel der Unterhaltung der blockierende Memory-Unteragent sieht. ## Prompt-Stile -`config.promptStyle` steuert, wie bereitwillig oder streng der blockierende Speicher-Sub-Agent ist, -wenn er entscheidet, ob Speicherinhalt zurückgegeben werden soll. +`config.promptStyle` steuert, wie bereitwillig oder streng der blockierende Memory-Unteragent ist, +wenn er entscheidet, ob Memory zurückgegeben werden soll. Verfügbare Stile: - `balanced`: allgemeiner Standard für den Modus `recent` -- `strict`: am wenigsten bereitwillig; am besten, wenn Sie sehr wenig Übergreifen aus nahem Kontext möchten -- `contextual`: am stärksten auf Kontinuität ausgerichtet; am besten, wenn der Unterhaltungsverlauf stärker ins Gewicht fallen soll -- `recall-heavy`: eher bereit, Speicherinhalt auch bei schwächeren, aber dennoch plausiblen Übereinstimmungen anzuzeigen +- `strict`: am wenigsten bereitwillig; am besten geeignet, wenn Sie sehr wenig Übernahme aus nahem Kontext möchten +- `contextual`: am besten für Kontinuität; am besten geeignet, wenn der Gesprächsverlauf stärker berücksichtigt werden soll +- `recall-heavy`: eher bereit, Memory auch bei schwächeren, aber noch plausiblen Übereinstimmungen anzuzeigen - `precision-heavy`: bevorzugt aggressiv `NONE`, sofern die Übereinstimmung nicht offensichtlich ist - `preference-only`: optimiert für Favoriten, Gewohnheiten, Routinen, Geschmack und wiederkehrende persönliche Fakten @@ -434,9 +433,9 @@ Beispiel: promptStyle: "preference-only" ``` -## Modell-Fallback-Richtlinie +## Richtlinie für Modell-Fallbacks -Wenn `config.model` nicht gesetzt ist, versucht Active Memory, ein Modell in dieser Reihenfolge aufzulösen: +Wenn `config.model` nicht gesetzt ist, versucht Active Memory ein Modell in dieser Reihenfolge aufzulösen: ```text explicit plugin model @@ -445,25 +444,25 @@ explicit plugin model -> optional configured fallback model ``` -`config.modelFallback` steuert den konfigurierten Fallback-Schritt. +`config.modelFallback` steuert den Schritt mit dem konfigurierten Fallback. -Optionales benutzerdefiniertes Fallback: +Optionaler benutzerdefinierter Fallback: ```json5 modelFallback: "google/gemini-3-flash" ``` -Wenn kein explizites, übernommenes oder konfiguriertes Fallback-Modell aufgelöst werden kann, überspringt Active Memory -den Abruf für diesen Zug. +Wenn kein explizites, geerbtes oder konfiguriertes Fallback-Modell aufgelöst werden kann, überspringt Active Memory +den Recall für diesen Zug. -`config.modelFallbackPolicy` wird nur noch als veraltetes Kompatibilitätsfeld -für ältere Konfigurationen beibehalten. Es verändert das Laufzeitverhalten nicht mehr. +`config.modelFallbackPolicy` bleibt nur als veraltetes Kompatibilitätsfeld +für ältere Konfigurationen erhalten. Es verändert das Laufzeitverhalten nicht mehr. -## Erweiterte Escape-Hatches +## Erweiterte Ausweichmöglichkeiten -Diese Optionen sind absichtlich nicht Teil der empfohlenen Einrichtung. +Diese Optionen sind absichtlich nicht Teil der empfohlenen Konfiguration. -`config.thinking` kann die Denkstufe des blockierenden Speicher-Sub-Agenten überschreiben: +`config.thinking` kann das Thinking-Level des blockierenden Memory-Unteragenten überschreiben: ```json5 thinking: "medium" @@ -476,29 +475,29 @@ thinking: "off" ``` Aktivieren Sie dies nicht standardmäßig. Active Memory läuft im Antwortpfad, daher erhöht zusätzliche -Denkzeit direkt die für Benutzer sichtbare Latenz. +Thinking-Zeit direkt die für Benutzer sichtbare Latenz. -`config.promptAppend` fügt nach dem Standard-Prompt von Active Memory und vor dem Unterhaltungskontext -zusätzliche Operator-Anweisungen hinzu: +`config.promptAppend` fügt zusätzliche Operator-Anweisungen nach dem standardmäßigen Active-Memory- +Prompt und vor dem Konversationskontext hinzu: ```json5 -promptAppend: "Bevorzuge stabile langfristige Präferenzen gegenüber einmaligen Ereignissen." +promptAppend: "Prefer stable long-term preferences over one-off events." ``` -`config.promptOverride` ersetzt den Standard-Prompt von Active Memory. OpenClaw -hängt den Unterhaltungskontext danach weiterhin an: +`config.promptOverride` ersetzt den standardmäßigen Active-Memory-Prompt. OpenClaw +hängt den Konversationskontext danach weiterhin an: ```json5 promptOverride: "You are a memory search agent. Return NONE or one compact user fact." ``` -Eine Anpassung des Prompts wird nicht empfohlen, es sei denn, Sie testen bewusst einen -anderen Abrufvertrag. Der Standard-Prompt ist darauf abgestimmt, entweder `NONE` +Eine Prompt-Anpassung wird nicht empfohlen, es sei denn, Sie testen bewusst einen +anderen Recall-Vertrag. Der Standard-Prompt ist darauf abgestimmt, entweder `NONE` oder kompakten Benutzerfakten-Kontext für das Hauptmodell zurückzugeben. ### `message` -Es wird nur die letzte Benutzernachricht gesendet. +Es wird nur die neueste Benutzernachricht gesendet. ```text Latest user message only @@ -507,8 +506,8 @@ Latest user message only Verwenden Sie dies, wenn: - Sie das schnellste Verhalten möchten -- Sie die stärkste Ausrichtung auf den Abruf stabiler Präferenzen möchten -- Folgezüge keinen Unterhaltungskontext benötigen +- Sie die stärkste Ausrichtung auf den Recall stabiler Präferenzen möchten +- Folgezüge keinen Konversationskontext benötigen Empfohlenes Timeout: @@ -516,7 +515,7 @@ Empfohlenes Timeout: ### `recent` -Die letzte Benutzernachricht plus ein kleiner aktueller Unterhaltungsausschnitt wird gesendet. +Die neueste Benutzernachricht plus ein kleiner aktueller Konversationsverlauf wird gesendet. ```text Recent conversation tail: @@ -530,7 +529,7 @@ Latest user message: Verwenden Sie dies, wenn: -- Sie ein besseres Gleichgewicht zwischen Geschwindigkeit und Gesprächsverankerung möchten +- Sie ein besseres Gleichgewicht zwischen Geschwindigkeit und Konversationsbezug möchten - Folgefragen oft von den letzten wenigen Zügen abhängen Empfohlenes Timeout: @@ -539,7 +538,7 @@ Empfohlenes Timeout: ### `full` -Die vollständige Unterhaltung wird an den blockierenden Speicher-Sub-Agenten gesendet. +Die vollständige Unterhaltung wird an den blockierenden Memory-Unteragenten gesendet. ```text Full conversation context: @@ -551,15 +550,15 @@ user: ... Verwenden Sie dies, wenn: -- die bestmögliche Abrufqualität wichtiger ist als die Latenz -- die Unterhaltung wichtige Vorbereitung weit oben im Thread enthält +- die bestmögliche Recall-Qualität wichtiger ist als die Latenz +- die Unterhaltung wichtige Vorinformationen enthält, die weit zurück im Thread liegen Empfohlenes Timeout: - erhöhen Sie es deutlich im Vergleich zu `message` oder `recent` - beginnen Sie bei etwa `15000` ms oder höher, abhängig von der Thread-Größe -Im Allgemeinen sollte das Timeout mit der Kontextgröße zunehmen: +Im Allgemeinen sollte das Timeout mit der Kontextgröße steigen: ```text message < recent < full @@ -567,17 +566,17 @@ message < recent < full ## Transkriptpersistenz -Durchläufe des blockierenden Speicher-Sub-Agenten von Active Memory erzeugen während des Aufrufs des blockierenden Speicher-Sub-Agenten -ein echtes `session.jsonl`-Transkript. +Ausführungen des blockierenden Memory-Unteragenten von Active Memory erzeugen während des Aufrufs des blockierenden Memory-Unteragenten ein echtes `session.jsonl`- +Transkript. Standardmäßig ist dieses Transkript temporär: - es wird in ein temporäres Verzeichnis geschrieben -- es wird nur für den Lauf des blockierenden Speicher-Sub-Agenten verwendet -- es wird sofort gelöscht, nachdem der Lauf abgeschlossen ist +- es wird nur für die Ausführung des blockierenden Memory-Unteragenten verwendet +- es wird unmittelbar nach Abschluss der Ausführung gelöscht -Wenn Sie diese Transkripte des blockierenden Speicher-Sub-Agenten zur Fehlersuche oder -Prüfung auf der Festplatte behalten möchten, aktivieren Sie die Persistenz ausdrücklich: +Wenn Sie diese Transkripte des blockierenden Memory-Unteragenten zur Fehlerbehebung oder +Inspektion auf dem Datenträger behalten möchten, aktivieren Sie die Persistenz ausdrücklich: ```json5 { @@ -597,9 +596,9 @@ Prüfung auf der Festplatte behalten möchten, aktivieren Sie die Persistenz aus ``` Wenn aktiviert, speichert Active Memory Transkripte in einem separaten Verzeichnis unter dem -Sitzungsordner des Zielagenten, nicht im Haupttranskriptpfad der Benutzerunterhaltung. +Sitzungsordner des Zielagenten, nicht im Transkriptpfad der eigentlichen Benutzerunterhaltung. -Das Standardlayout ist konzeptionell: +Das Standardlayout sieht konzeptionell so aus: ```text agents//sessions/active-memory/.jsonl @@ -609,9 +608,9 @@ Sie können das relative Unterverzeichnis mit `config.transcriptDir` ändern. Verwenden Sie dies mit Vorsicht: -- Transkripte des blockierenden Speicher-Sub-Agenten können sich bei ausgelasteten Sitzungen schnell ansammeln -- der Abfragemodus `full` kann viel Unterhaltungskontext duplizieren -- diese Transkripte enthalten verborgenen Prompt-Kontext und abgerufene Erinnerungen +- Transkripte des blockierenden Memory-Unteragenten können sich in stark genutzten Sitzungen schnell ansammeln +- der Abfragemodus `full` kann viel Konversationskontext duplizieren +- diese Transkripte enthalten verborgenen Prompt-Kontext und abgerufene Memories ## Konfiguration @@ -623,34 +622,34 @@ plugins.entries.active-memory Die wichtigsten Felder sind: -| Key | Type | Bedeutung | -| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `enabled` | `boolean` | Aktiviert das Plugin selbst | -| `config.agents` | `string[]` | Agent-IDs, die Active Memory verwenden dürfen | -| `config.model` | `string` | Optionaler Modellverweis für den blockierenden Speicher-Sub-Agenten; wenn nicht gesetzt, verwendet Active Memory das aktuelle Sitzungsmodell | -| `config.queryMode` | `"message" \| "recent" \| "full"` | Steuert, wie viel Unterhaltung der blockierende Speicher-Sub-Agent sieht | -| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Steuert, wie bereitwillig oder streng der blockierende Speicher-Sub-Agent bei der Entscheidung über die Rückgabe von Speicherinhalt ist | -| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Erweiterte Thinking-Überschreibung für den blockierenden Speicher-Sub-Agenten; Standard `off` für Geschwindigkeit | -| `config.promptOverride` | `string` | Erweiterter vollständiger Prompt-Ersatz; für normale Verwendung nicht empfohlen | -| `config.promptAppend` | `string` | Erweiterte zusätzliche Anweisungen, die an den Standard- oder überschriebenen Prompt angehängt werden | -| `config.timeoutMs` | `number` | Hartes Timeout für den blockierenden Speicher-Sub-Agenten | -| `config.maxSummaryChars` | `number` | Maximal zulässige Gesamtzahl von Zeichen in der Active-Memory-Zusammenfassung | -| `config.logging` | `boolean` | Gibt Active-Memory-Logs während der Anpassung aus | -| `config.persistTranscripts` | `boolean` | Behält Transkripte des blockierenden Speicher-Sub-Agenten auf der Festplatte, anstatt temporäre Dateien zu löschen | -| `config.transcriptDir` | `string` | Relatives Transkriptverzeichnis des blockierenden Speicher-Sub-Agenten unter dem Sitzungsordner des Agenten | +| Schlüssel | Typ | Bedeutung | +| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| `enabled` | `boolean` | Aktiviert das Plugin selbst | +| `config.agents` | `string[]` | Agent-IDs, die Active Memory verwenden dürfen | +| `config.model` | `string` | Optionale Modellreferenz für den blockierenden Memory-Unteragenten; wenn nicht gesetzt, verwendet Active Memory das aktuelle Sitzungsmodell | +| `config.queryMode` | `"message" \| "recent" \| "full"` | Steuert, wie viel der Unterhaltung der blockierende Memory-Unteragent sieht | +| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Steuert, wie bereitwillig oder streng der blockierende Memory-Unteragent beim Entscheiden über die Rückgabe von Memory ist | +| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Erweiterte Thinking-Überschreibung für den blockierenden Memory-Unteragenten; Standard `off` für Geschwindigkeit | +| `config.promptOverride` | `string` | Erweiterter vollständiger Prompt-Ersatz; nicht für den normalen Einsatz empfohlen | +| `config.promptAppend` | `string` | Erweiterte zusätzliche Anweisungen, die an den Standard- oder überschriebenen Prompt angehängt werden | +| `config.timeoutMs` | `number` | Hartes Timeout für den blockierenden Memory-Unteragenten, begrenzt auf 120000 ms | +| `config.maxSummaryChars` | `number` | Maximal zulässige Gesamtzahl von Zeichen in der Active-Memory-Zusammenfassung | +| `config.logging` | `boolean` | Gibt während der Anpassung Active-Memory-Logs aus | +| `config.persistTranscripts` | `boolean` | Behält Transkripte des blockierenden Memory-Unteragenten auf dem Datenträger, anstatt temporäre Dateien zu löschen | +| `config.transcriptDir` | `string` | Relatives Transkriptverzeichnis für den blockierenden Memory-Unteragenten unter dem Agentensitzungsordner | -Nützliche Felder zur Anpassung: +Nützliche Felder zur Feinabstimmung: -| Key | Type | Bedeutung | -| ----------------------------- | -------- | ------------------------------------------------------------ | +| Schlüssel | Typ | Bedeutung | +| ----------------------------- | -------- | ------------------------------------------------------------- | | `config.maxSummaryChars` | `number` | Maximal zulässige Gesamtzahl von Zeichen in der Active-Memory-Zusammenfassung | -| `config.recentUserTurns` | `number` | Vorherige Benutzerzüge, die einbezogen werden, wenn `queryMode` `recent` ist | -| `config.recentAssistantTurns` | `number` | Vorherige Assistentenzüge, die einbezogen werden, wenn `queryMode` `recent` ist | -| `config.recentUserChars` | `number` | Maximale Zeichenanzahl pro aktuellem Benutzerzug | -| `config.recentAssistantChars` | `number` | Maximale Zeichenanzahl pro aktuellem Assistentenzug | -| `config.cacheTtlMs` | `number` | Cache-Wiederverwendung für wiederholte identische Abfragen | +| `config.recentUserTurns` | `number` | Vorherige Benutzerzüge, die bei `queryMode` = `recent` einbezogen werden | +| `config.recentAssistantTurns` | `number` | Vorherige Assistentenzüge, die bei `queryMode` = `recent` einbezogen werden | +| `config.recentUserChars` | `number` | Maximale Zeichenzahl pro aktuellem Benutzerzug | +| `config.recentAssistantChars` | `number` | Maximale Zeichenzahl pro aktuellem Assistentenzug | +| `config.cacheTtlMs` | `number` | Cache-Wiederverwendung für wiederholte identische Abfragen | -## Empfohlene Einrichtung +## Empfohlene Konfiguration Beginnen Sie mit `recent`. @@ -675,14 +674,14 @@ Beginnen Sie mit `recent`. ``` Wenn Sie das Live-Verhalten während der Anpassung prüfen möchten, verwenden Sie `/verbose on` für die -normale Statuszeile und `/trace on` für die Active-Memory-Debug-Zusammenfassung, anstatt -nach einem separaten Active-Memory-Debug-Befehl zu suchen. In Chat-Kanälen werden diese -Diagnosezeilen nach der Hauptantwort des Assistenten gesendet und nicht davor. +normale Statuszeile und `/trace on` für die Active-Memory-Debug-Zusammenfassung statt +nach einem separaten Active-Memory-Debug-Befehl zu suchen. In Chat-Channels werden diese +Diagnosezeilen nach der normalen Assistentenantwort und nicht davor gesendet. Wechseln Sie dann zu: -- `message`, wenn Sie eine geringere Latenz möchten -- `full`, wenn Sie entscheiden, dass zusätzlicher Kontext den langsameren blockierenden Speicher-Sub-Agenten wert ist +- `message`, wenn Sie geringere Latenz möchten +- `full`, wenn Sie entscheiden, dass zusätzlicher Kontext den langsameren blockierenden Memory-Unteragenten wert ist ## Fehlerbehebung @@ -690,75 +689,77 @@ Wenn Active Memory nicht dort angezeigt wird, wo Sie es erwarten: 1. Bestätigen Sie, dass das Plugin unter `plugins.entries.active-memory.enabled` aktiviert ist. 2. Bestätigen Sie, dass die aktuelle Agenten-ID in `config.agents` aufgeführt ist. -3. Bestätigen Sie, dass Sie über eine interaktive persistente Chat-Sitzung testen. -4. Aktivieren Sie `config.logging: true` und beobachten Sie die Gateway-Logs. -5. Überprüfen Sie mit `openclaw memory status --deep`, dass die Speichersuche selbst funktioniert. +3. Bestätigen Sie, dass Sie über eine interaktive persistente Chatsitzung testen. +4. Schalten Sie `config.logging: true` ein und beobachten Sie die Gateway-Logs. +5. Prüfen Sie mit `openclaw memory status --deep`, ob die Memory-Suche selbst funktioniert. -Wenn Speicher-Treffer zu ungenau sind, verschärfen Sie: +Wenn Memory-Treffer verrauscht sind, reduzieren Sie: - `maxSummaryChars` Wenn Active Memory zu langsam ist: -- verringern Sie `queryMode` -- verringern Sie `timeoutMs` -- reduzieren Sie die Anzahl aktueller Züge -- reduzieren Sie die Zeichenobergrenzen pro Zug +- `queryMode` verringern +- `timeoutMs` verringern +- die Anzahl aktueller Züge verringern +- die Zeichenbegrenzung pro Zug verringern ## Häufige Probleme ### Embedding-Anbieter hat sich unerwartet geändert Active Memory verwendet die normale `memory_search`-Pipeline unter -`agents.defaults.memorySearch`. Das bedeutet, dass die Einrichtung des Embedding-Anbieters nur dann -erforderlich ist, wenn Ihre `memorySearch`-Einrichtung Embeddings für das gewünschte Verhalten benötigt. +`agents.defaults.memorySearch`. Das bedeutet, dass die Einrichtung des Embedding-Anbieters nur dann eine +Voraussetzung ist, wenn Ihre `memorySearch`-Konfiguration Embeddings für das von Ihnen gewünschte Verhalten +erfordert. In der Praxis gilt: -- eine explizite Anbietereinrichtung ist **erforderlich**, wenn Sie einen Anbieter möchten, der nicht - automatisch erkannt wird, z. B. `ollama` -- eine explizite Anbietereinrichtung ist **erforderlich**, wenn die automatische Erkennung - keinen verwendbaren Embedding-Anbieter für Ihre Umgebung auflöst -- eine explizite Anbietereinrichtung ist **dringend empfohlen**, wenn Sie eine deterministische - Anbieterauswahl statt „erstes verfügbares gewinnt“ möchten -- eine explizite Anbietereinrichtung ist normalerweise **nicht erforderlich**, wenn die automatische Erkennung bereits - den gewünschten Anbieter auflöst und dieser Anbieter in Ihrer Bereitstellung stabil ist +- eine explizite Anbieterkonfiguration ist **erforderlich**, wenn Sie einen Anbieter möchten, der nicht + automatisch erkannt wird, wie etwa `ollama` +- eine explizite Anbieterkonfiguration ist **erforderlich**, wenn die automatische Erkennung + keinen nutzbaren Embedding-Anbieter für Ihre Umgebung auflöst +- eine explizite Anbieterkonfiguration ist **dringend empfohlen**, wenn Sie eine deterministische + Anbieterauswahl statt „first available wins“ möchten +- eine explizite Anbieterkonfiguration ist in der Regel **nicht erforderlich**, wenn die automatische Erkennung bereits + den von Ihnen gewünschten Anbieter auflöst und dieser in Ihrer Bereitstellung stabil ist -Wenn `memorySearch.provider` nicht gesetzt ist, erkennt OpenClaw automatisch den ersten verfügbaren +Wenn `memorySearch.provider` nicht gesetzt ist, erkennt OpenClaw automatisch den zuerst verfügbaren Embedding-Anbieter. Das kann in realen Bereitstellungen verwirrend sein: -- ein neu verfügbarer API-Schlüssel kann ändern, welchen Anbieter die Speichersuche verwendet +- ein neu verfügbarer API-Schlüssel kann ändern, welchen Anbieter die Memory-Suche verwendet - ein Befehl oder eine Diagnoseoberfläche kann den ausgewählten Anbieter anders erscheinen lassen - als den Pfad, den Sie tatsächlich bei der Live-Speichersynchronisierung oder beim - Such-Bootstrap verwenden -- gehostete Anbieter können mit Kontingent- oder Ratenbegrenzungsfehlern scheitern, die erst sichtbar werden, - sobald Active Memory vor jeder Antwort Abrufsuchen ausführt + als den Pfad, den Sie tatsächlich bei der Live-Memory-Synchronisierung oder beim + Bootstrap der Suche verwenden +- gehostete Anbieter können mit Kontingent- oder Rate-Limit-Fehlern fehlschlagen, die erst sichtbar werden, + sobald Active Memory vor jeder Antwort Recall-Suchen ausgibt -Active Memory kann auch ohne Embeddings laufen, wenn `memory_search` im degradierten rein lexikalischen Modus -arbeiten kann, was typischerweise geschieht, wenn kein Embedding-Anbieter aufgelöst werden kann. +Active Memory kann auch ohne Embeddings ausgeführt werden, wenn `memory_search` in einem +degradierten rein lexikalischen Modus arbeiten kann, was typischerweise dann geschieht, wenn kein Embedding- +Anbieter aufgelöst werden kann. -Gehen Sie nicht davon aus, dass derselbe Fallback auch bei Laufzeitfehlern des Anbieters funktioniert, etwa bei -Kontingenterschöpfung, Ratenbegrenzungen, Netzwerk-/Anbieterfehlern oder fehlenden lokalen/entfernten +Gehen Sie nicht davon aus, dass derselbe Fallback auch bei Laufzeitfehlern des Anbieters gilt, etwa bei +erschöpftem Kontingent, Rate Limits, Netzwerk-/Anbieterfehlern oder fehlenden lokalen/entfernten Modellen, nachdem bereits ein Anbieter ausgewählt wurde. In der Praxis: -- wenn kein Embedding-Anbieter aufgelöst werden kann, kann `memory_search` zu - rein lexikalischem Abruf degradieren +- wenn kein Embedding-Anbieter aufgelöst werden kann, kann `memory_search` auf + rein lexikalen Abruf zurückfallen - wenn ein Embedding-Anbieter aufgelöst wird und dann zur Laufzeit fehlschlägt, garantiert OpenClaw - derzeit keinen lexikalischen Fallback für diese Anfrage -- wenn Sie eine deterministische Anbieterauswahl benötigen, pinnen Sie + derzeit keinen lexikalen Fallback für diese Anfrage +- wenn Sie eine deterministische Anbieterauswahl benötigen, fixieren Sie `agents.defaults.memorySearch.provider` - wenn Sie Anbieter-Failover bei Laufzeitfehlern benötigen, konfigurieren Sie `agents.defaults.memorySearch.fallback` explizit -Wenn Sie auf embeddinggestützten Abruf, multimodale Indizierung oder einen bestimmten -lokalen/entfernten Anbieter angewiesen sind, pinnen Sie den Anbieter explizit, anstatt sich auf -automatische Erkennung zu verlassen. +Wenn Sie von Embedding-basiertem Recall, multimodaler Indizierung oder einem bestimmten +lokalen/entfernten Anbieter abhängen, fixieren Sie den Anbieter explizit, anstatt sich auf +die automatische Erkennung zu verlassen. -Häufige Beispiele für das Pinning: +Häufige Beispiele zum Fixieren: OpenAI: @@ -805,8 +806,8 @@ Ollama: } ``` -Wenn Sie Anbieter-Failover bei Laufzeitfehlern wie Kontingenterschöpfung erwarten, -ist das Pinning eines Anbieters allein nicht ausreichend. Konfigurieren Sie zusätzlich einen expliziten Fallback: +Wenn Sie Anbieter-Failover bei Laufzeitfehlern wie erschöpftem Kontingent erwarten, +reicht das reine Fixieren eines Anbieters nicht aus. Konfigurieren Sie zusätzlich einen expliziten Fallback: ```json5 { @@ -823,7 +824,7 @@ ist das Pinning eines Anbieters allein nicht ausreichend. Konfigurieren Sie zus ### Fehlerbehebung bei Anbieterproblemen -Wenn Active Memory langsam ist, leer bleibt oder scheinbar unerwartet den Anbieter wechselt: +Wenn Active Memory langsam ist, leer bleibt oder unerwartet zwischen Anbietern zu wechseln scheint: - beobachten Sie die Gateway-Logs, während Sie das Problem reproduzieren; achten Sie auf Zeilen wie `active-memory: ... start|done`, `memory sync failed (search-bootstrap)` oder @@ -832,21 +833,21 @@ Wenn Active Memory langsam ist, leer bleibt oder scheinbar unerwartet den Anbiet der Sitzung anzuzeigen - aktivieren Sie `/verbose on`, wenn Sie zusätzlich die normale Statuszeile `🧩 Active Memory: ...` nach jeder Antwort sehen möchten -- führen Sie `openclaw memory status --deep` aus, um das aktuelle Memory-Search- - Backend und den Zustand des Index zu prüfen +- führen Sie `openclaw memory status --deep` aus, um das aktuelle Backend der Memory-Suche + und den Zustand des Indexes zu prüfen - prüfen Sie `agents.defaults.memorySearch.provider` und die zugehörige Authentifizierung/Konfiguration, um sicherzustellen, dass der Anbieter, den Sie erwarten, tatsächlich derjenige ist, der zur Laufzeit aufgelöst werden kann - wenn Sie `ollama` verwenden, prüfen Sie, ob das konfigurierte Embedding-Modell installiert ist, zum Beispiel mit `ollama list` -Beispiel für einen Debugging-Ablauf: +Beispiel für eine Debugging-Schleife: ```text -1. Gateway starten und seine Logs beobachten -2. In der Chat-Sitzung /trace on ausführen -3. Eine Nachricht senden, die Active Memory auslösen sollte -4. Die im Chat sichtbare Debug-Zeile mit den Gateway-Logzeilen vergleichen -5. Wenn die Anbieterauswahl uneindeutig ist, agents.defaults.memorySearch.provider explizit pinnen +1. Start the gateway and watch its logs +2. In the chat session, run /trace on +3. Send one message that should trigger Active Memory +4. Compare the chat-visible debug line with the gateway log lines +5. If provider choice is ambiguous, pin agents.defaults.memorySearch.provider explicitly ``` Beispiel: @@ -878,11 +879,11 @@ Oder, wenn Sie Gemini-Embeddings möchten: } ``` -Nachdem Sie den Anbieter geändert haben, starten Sie das Gateway neu und führen Sie mit -`/trace on` einen neuen Test aus, damit die Active-Memory-Debug-Zeile den neuen Embedding-Pfad widerspiegelt. +Nachdem Sie den Anbieter geändert haben, starten Sie das Gateway neu und führen einen neuen Test mit +`/trace on` aus, damit die Active-Memory-Debug-Zeile den neuen Embedding-Pfad widerspiegelt. ## Verwandte Seiten - [Memory Search](/de/concepts/memory-search) -- [Referenz zur Speicherkonfiguration](/de/reference/memory-config) -- [Plugin SDK-Einrichtung](/de/plugins/sdk-setup) +- [Referenz zur Memory-Konfiguration](/de/reference/memory-config) +- [Plugin SDK setup](/de/plugins/sdk-setup) diff --git a/docs/de/debug/node-issue.md b/docs/de/debug/node-issue.md index 2546dd66e..b45846c74 100644 --- a/docs/de/debug/node-issue.md +++ b/docs/de/debug/node-issue.md @@ -1,31 +1,31 @@ --- read_when: - - Debuggen von Dev-Skripten nur für Node oder von Fehlern im Watch-Modus - - Untersuchen von Abstürzen des tsx/esbuild-Loaders in OpenClaw -summary: Hinweise und Workarounds zum Absturz „__name is not a function“ mit Node + tsx + - Fehlersuche bei rein Node-basierten Entwicklungsskripten oder Fehlern im Watch-Modus + - Untersuchung von tsx/esbuild-Loader-Abstürzen in OpenClaw +summary: Node + tsx-Absturzhinweise und Workarounds für "__name is not a function" title: Node + tsx-Absturz x-i18n: - generated_at: "2026-04-05T12:41:33Z" + generated_at: "2026-04-19T01:11:12Z" model: gpt-5.4 provider: openai - source_hash: f5beab7cdfe7679680f65176234a617293ce495886cfffb151518adfa61dc8dc + source_hash: ca45c795c356ada8f81e75b394ec82743d3d1bf1bbe83a24ec6699946b920f01 source_path: debug/node-issue.md workflow: 15 --- -# Absturz „\_\_name is not a function“ mit Node + tsx +# Node + tsx-Absturz bei „\_\_name is not a function“ ## Zusammenfassung -Das Ausführen von OpenClaw über Node mit `tsx` schlägt beim Start fehl mit: +Das Ausführen von OpenClaw über Node mit `tsx` schlägt beim Start mit folgendem Fehler fehl: -``` +```text [openclaw] Failed to start CLI: TypeError: __name is not a function at createSubsystemLogger (.../src/logging/subsystem.ts:203:25) at .../src/agents/auth-profiles/constants.ts:25:20 ``` -Dies begann nach der Umstellung der Dev-Skripte von Bun auf `tsx` (Commit `2871657e`, 2026-01-06). Derselbe Laufzeitpfad funktionierte mit Bun. +Dies begann nach der Umstellung der Entwicklungsskripte von Bun auf `tsx` (Commit `2871657e`, 2026-01-06). Derselbe Laufzeitpfad funktionierte mit Bun. ## Umgebung @@ -56,28 +56,28 @@ node --import tsx scripts/repro/tsx-name-repro.ts ## Hinweise / Hypothese -- `tsx` verwendet esbuild, um TS/ESM zu transformieren. `keepNames` von esbuild erzeugt einen `__name`-Helper und umschließt Funktionsdefinitionen mit `__name(...)`. -- Der Absturz zeigt, dass `__name` existiert, zur Laufzeit aber keine Funktion ist. Das deutet darauf hin, dass der Helper in diesem Modulpfad des Node-25-Loaders fehlt oder überschrieben wird. -- Ähnliche Probleme mit dem `__name`-Helper wurden auch bei anderen esbuild-Nutzern gemeldet, wenn der Helper fehlt oder umgeschrieben wird. +- `tsx` verwendet esbuild, um TS/ESM zu transformieren. Die esbuild-Option `keepNames` erzeugt einen `__name`-Helper und umschließt Funktionsdefinitionen mit `__name(...)`. +- Der Absturz zeigt, dass `__name` existiert, aber zur Laufzeit keine Funktion ist. Das deutet darauf hin, dass der Helper für dieses Modul im Node-25-Loader-Pfad fehlt oder überschrieben wird. +- Ähnliche Probleme mit dem `__name`-Helper wurden auch bei anderen esbuild-Verbrauchern gemeldet, wenn der Helper fehlt oder umgeschrieben wird. -## Regressionsverlauf +## Verlauf der Regression - `2871657e` (2026-01-06): Skripte wurden von Bun auf tsx umgestellt, um Bun optional zu machen. - Davor (Bun-Pfad) funktionierten `openclaw status` und `gateway:watch`. ## Workarounds -- Bun für Dev-Skripte verwenden (aktueller temporärer Revert). -- Node + tsc watch verwenden und dann die kompilierte Ausgabe ausführen: +- Bun für Entwicklungsskripte verwenden (aktuelle temporäre Rücknahme). +- `tsgo` für die Type-Prüfung im Repo verwenden und dann die gebaute Ausgabe ausführen: ```bash - pnpm exec tsc --watch --preserveWatchOutput - node --watch openclaw.mjs status + pnpm tsgo + node openclaw.mjs status ``` -- Lokal bestätigt: `pnpm exec tsc -p tsconfig.json` + `node openclaw.mjs status` funktioniert unter Node 25. -- `keepNames` von esbuild im TS-Loader deaktivieren, wenn möglich (verhindert das Einfügen des `__name`-Helpers); tsx stellt dies derzeit nicht bereit. -- Node LTS (22/24) mit `tsx` testen, um zu sehen, ob das Problem Node-25-spezifisch ist. +- Historischer Hinweis: `tsc` wurde hier während der Fehlersuche zu diesem Node/tsx-Problem verwendet, aber die Type-Check-Lanes im Repo nutzen jetzt `tsgo`. +- `keepNames` von esbuild im TS-Loader nach Möglichkeit deaktivieren (verhindert das Einfügen des `__name`-Helpers); `tsx` bietet dies derzeit nicht an. +- Node LTS (22/24) mit `tsx` testen, um zu sehen, ob das Problem spezifisch für Node 25 ist. ## Referenzen @@ -87,6 +87,6 @@ node --import tsx scripts/repro/tsx-name-repro.ts ## Nächste Schritte -- Reproduktion unter Node 22/24, um die Regression in Node 25 zu bestätigen. +- Unter Node 22/24 reproduzieren, um eine Regression in Node 25 zu bestätigen. - `tsx` nightly testen oder auf eine frühere Version pinnen, falls eine bekannte Regression existiert. -- Wenn es sich auch unter Node LTS reproduzieren lässt, Upstream eine minimale Reproduktion mit dem `__name`-Stack-Trace melden. +- Falls es sich auch unter Node LTS reproduzieren lässt, upstream eine minimale Reproduktion mit dem `__name`-Stacktrace melden. diff --git a/docs/de/install/gcp.md b/docs/de/install/gcp.md index 94bd0dc2f..6646154df 100644 --- a/docs/de/install/gcp.md +++ b/docs/de/install/gcp.md @@ -1,83 +1,83 @@ --- read_when: - - Sie möchten OpenClaw 24/7 auf GCP ausführen - - Sie möchten ein produktionsreifes, dauerhaft aktives Gateway auf Ihrer eigenen VM - - Sie möchten volle Kontrolle über Persistenz, Binärdateien und Neustartverhalten -summary: OpenClaw Gateway 24/7 auf einer GCP Compute Engine-VM (Docker) mit dauerhaftem Zustand ausführen + - Du möchtest, dass OpenClaw auf GCP rund um die Uhr läuft. + - Du möchtest ein produktionsreifes, dauerhaft laufendes Gateway auf deiner eigenen VM. + - Du möchtest die volle Kontrolle über Persistenz, Binärdateien und Neustartverhalten. +summary: OpenClaw Gateway 24/7 auf einer GCP Compute Engine-VM (Docker) mit dauerhaftem Status ausführen title: GCP x-i18n: - generated_at: "2026-04-05T12:46:28Z" + generated_at: "2026-04-19T01:11:11Z" model: gpt-5.4 provider: openai - source_hash: 73daaee3de71dad5175f42abf3e11355f2603b2f9e2b2523eac4d4c7015e3ebc + source_hash: 6b4cf7924cbcfae74f268c88caedb79ed87a6ad37f4910ad65d92a5d99fe49c1 source_path: install/gcp.md workflow: 15 --- -# OpenClaw auf GCP Compute Engine (Docker, Produktionsleitfaden für VPS) +# OpenClaw auf GCP Compute Engine (Docker, Produktions-VPS-Leitfaden) ## Ziel -Ein persistentes OpenClaw Gateway auf einer GCP Compute Engine-VM mit Docker ausführen, mit dauerhaftem Zustand, eingebackenen Binärdateien und sicherem Neustartverhalten. +Führe ein persistentes OpenClaw Gateway auf einer GCP Compute Engine-VM mit Docker aus, mit dauerhaftem Status, fest integrierten Binärdateien und sicherem Neustartverhalten. -Wenn Sie „OpenClaw 24/7 für ~$5-12/Monat“ möchten, ist dies ein zuverlässiges Setup auf Google Cloud. -Die Preise variieren je nach Maschinentyp und Region; wählen Sie die kleinste VM, die zu Ihrer Workload passt, und skalieren Sie hoch, wenn OOMs auftreten. +Wenn du „OpenClaw 24/7 für ca. 5–12 $/Monat“ möchtest, ist dies ein zuverlässiges Setup auf Google Cloud. +Die Preise variieren je nach Maschinentyp und Region; wähle die kleinste VM, die zu deiner Arbeitslast passt, und skaliere hoch, wenn du auf OOMs stößt. -## Was machen wir hier (einfach erklärt)? +## Was machen wir (einfach erklärt)? - Ein GCP-Projekt erstellen und Abrechnung aktivieren - Eine Compute Engine-VM erstellen -- Docker installieren (isolierte Laufzeit für Apps) +- Docker installieren (isolierte App-Laufzeit) - Das OpenClaw Gateway in Docker starten -- `~/.openclaw` + `~/.openclaw/workspace` auf dem Host persistieren (überlebt Neustarts/Rebuilds) +- `~/.openclaw` + `~/.openclaw/workspace` auf dem Host persistent speichern (überlebt Neustarts/Neubuilds) - Über einen SSH-Tunnel vom Laptop auf die Control UI zugreifen -Dieser eingehängte Zustand in `~/.openclaw` umfasst `openclaw.json`, agent-spezifische -`agents//agent/auth-profiles.json` und `.env`. +Der eingehängte Status in `~/.openclaw` umfasst `openclaw.json`, agentenspezifische +`agents//agent/auth-profiles.json` sowie `.env`. Auf das Gateway kann zugegriffen werden über: -- SSH-Portweiterleitung von Ihrem Laptop -- Direkte Portfreigabe, wenn Sie Firewalling und Tokens selbst verwalten +- SSH-Portweiterleitung von deinem Laptop +- Direkte Portfreigabe, wenn du Firewalling und Tokens selbst verwaltest -Diese Anleitung verwendet Debian auf GCP Compute Engine. -Ubuntu funktioniert ebenfalls; ordnen Sie die Pakete entsprechend zu. -Für den generischen Docker-Ablauf siehe [Docker](/install/docker). +Dieser Leitfaden verwendet Debian auf GCP Compute Engine. +Ubuntu funktioniert ebenfalls; ordne die Pakete entsprechend zu. +Für den generischen Docker-Ablauf siehe [Docker](/de/install/docker). --- -## Schnellpfad (für erfahrene Operatoren) +## Schneller Weg (erfahrene Betreiber) 1. GCP-Projekt erstellen + Compute Engine API aktivieren 2. Compute Engine-VM erstellen (e2-small, Debian 12, 20GB) -3. Per SSH auf die VM verbinden +3. Per SSH mit der VM verbinden 4. Docker installieren 5. OpenClaw-Repository klonen 6. Persistente Host-Verzeichnisse erstellen 7. `.env` und `docker-compose.yml` konfigurieren -8. Erforderliche Binärdateien einbacken, bauen und starten +8. Erforderliche Binärdateien einbinden, bauen und starten --- -## Was Sie benötigen +## Was du brauchst -- GCP-Konto (Free-Tier-berechtigt für e2-micro) -- installierte gcloud CLI (oder Cloud Console verwenden) -- SSH-Zugriff von Ihrem Laptop -- Grundlegende Sicherheit im Umgang mit SSH + Copy/Paste -- ~20-30 Minuten +- GCP-Konto (für e2-micro für die kostenlose Stufe geeignet) +- installierte gcloud CLI (oder die Cloud Console verwenden) +- SSH-Zugriff von deinem Laptop +- Grundlegende Vertrautheit mit SSH + Copy-and-Paste +- ca. 20–30 Minuten - Docker und Docker Compose -- Authentifizierungsdaten für Modelle -- Optionale Authentifizierungsdaten für Provider +- Modell-Authentifizierungsdaten +- Optionale Provider-Anmeldedaten - WhatsApp-QR - Telegram-Bot-Token - - Gmail OAuth + - Gmail-OAuth --- - - **Option A: gcloud CLI** (empfohlen für Automatisierung) + + **Option A: gcloud CLI** (für Automatisierung empfohlen) Installation über [https://cloud.google.com/sdk/docs/install](https://cloud.google.com/sdk/docs/install) @@ -90,7 +90,7 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). **Option B: Cloud Console** - Alle Schritte können über die Web-UI unter [https://console.cloud.google.com](https://console.cloud.google.com) durchgeführt werden + Alle Schritte können über die Weboberfläche unter [https://console.cloud.google.com](https://console.cloud.google.com) durchgeführt werden @@ -102,9 +102,9 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). gcloud config set project my-openclaw-project ``` - Aktivieren Sie die Abrechnung unter [https://console.cloud.google.com/billing](https://console.cloud.google.com/billing) (erforderlich für Compute Engine). + Aktiviere die Abrechnung unter [https://console.cloud.google.com/billing](https://console.cloud.google.com/billing) (für Compute Engine erforderlich). - Aktivieren Sie die Compute Engine API: + Aktiviere die Compute Engine API: ```bash gcloud services enable compute.googleapis.com @@ -112,21 +112,21 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). **Console:** - 1. Zu IAM & Admin > Create Project gehen - 2. Namen vergeben und erstellen - 3. Abrechnung für das Projekt aktivieren - 4. Zu APIs & Services > Enable APIs > nach „Compute Engine API“ suchen > Enable + 1. Gehe zu IAM & Admin > Create Project + 2. Benenne es und erstelle es + 3. Aktiviere die Abrechnung für das Projekt + 4. Navigiere zu APIs & Services > Enable APIs > suche nach „Compute Engine API“ > Enable **Maschinentypen:** - | Typ | Spezifikationen | Kosten | Hinweise | - | --------- | ------------------------- | ----------------- | ------------------------------------------------ | - | e2-medium | 2 vCPU, 4GB RAM | ~$25/Monat | Am zuverlässigsten für lokale Docker-Builds | - | e2-small | 2 vCPU, 2GB RAM | ~$12/Monat | Minimal empfohlen für Docker-Build | - | e2-micro | 2 vCPU (geteilt), 1GB RAM | Free-Tier-berechtigt | Scheitert oft mit Docker-Build-OOM (exit 137) | + | Type | Specs | Cost | Notes | + | --------- | ------------------------ | ------------------ | ------------------------------------------------ | + | e2-medium | 2 vCPU, 4GB RAM | ~25 $/Monat | Am zuverlässigsten für lokale Docker-Builds | + | e2-small | 2 vCPU, 2GB RAM | ~12 $/Monat | Empfohlenes Minimum für Docker-Builds | + | e2-micro | 2 vCPU (geteilt), 1GB RAM | Für kostenlose Stufe geeignet | Schlägt bei Docker-Builds oft mit OOM fehl (exit 137) | **CLI:** @@ -141,16 +141,16 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). **Console:** - 1. Zu Compute Engine > VM instances > Create instance gehen + 1. Gehe zu Compute Engine > VM instances > Create instance 2. Name: `openclaw-gateway` 3. Region: `us-central1`, Zone: `us-central1-a` 4. Maschinentyp: `e2-small` 5. Boot-Datenträger: Debian 12, 20GB - 6. Create + 6. Erstellen - + **CLI:** ```bash @@ -159,9 +159,9 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). **Console:** - Klicken Sie im Compute Engine-Dashboard neben Ihrer VM auf die Schaltfläche „SSH“. + Klicke im Compute Engine-Dashboard neben deiner VM auf die Schaltfläche „SSH“. - Hinweis: Das Verteilen von SSH-Schlüsseln kann nach dem Erstellen der VM 1-2 Minuten dauern. Wenn die Verbindung verweigert wird, warten Sie und versuchen Sie es erneut. + Hinweis: Die Verteilung des SSH-Schlüssels kann nach der Erstellung der VM 1–2 Minuten dauern. Wenn die Verbindung verweigert wird, warte kurz und versuche es erneut. @@ -173,19 +173,19 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). sudo usermod -aG docker $USER ``` - Melden Sie sich ab und wieder an, damit die Gruppenänderung wirksam wird: + Melde dich ab und wieder an, damit die Gruppenänderung wirksam wird: ```bash exit ``` - Dann erneut per SSH verbinden: + Dann per SSH erneut verbinden: ```bash gcloud compute ssh openclaw-gateway --zone=us-central1-a ``` - Prüfen: + Überprüfen: ```bash docker --version @@ -200,13 +200,13 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). cd openclaw ``` - Diese Anleitung geht davon aus, dass Sie ein benutzerdefiniertes Image bauen, um die Persistenz der Binärdateien zu garantieren. + Dieser Leitfaden geht davon aus, dass du ein benutzerdefiniertes Image baust, um die Persistenz der Binärdateien zu garantieren. - Docker-Container sind flüchtig. - Jeder langlebige Zustand muss auf dem Host liegen. + Docker-Container sind vergänglich. + Jeder langlebige Status muss auf dem Host liegen. ```bash mkdir -p ~/.openclaw @@ -216,37 +216,40 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). - Erstellen Sie `.env` im Stammverzeichnis des Repository. + Erstelle `.env` im Repository-Stammverzeichnis. ```bash OPENCLAW_IMAGE=openclaw:latest - OPENCLAW_GATEWAY_TOKEN=change-me-now + OPENCLAW_GATEWAY_TOKEN= OPENCLAW_GATEWAY_BIND=lan OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace - GOG_KEYRING_PASSWORD=change-me-now + GOG_KEYRING_PASSWORD= XDG_CONFIG_HOME=/home/node/.openclaw ``` - Starke Secrets erzeugen: + Lass `OPENCLAW_GATEWAY_TOKEN` leer, sofern du es nicht ausdrücklich über + `.env` verwalten möchtest; OpenClaw schreibt beim ersten Start ein zufälliges Gateway-Token in die + Konfiguration. Erzeuge ein Keyring-Passwort und füge es in + `GOG_KEYRING_PASSWORD` ein: ```bash openssl rand -hex 32 ``` - **Committen Sie diese Datei nicht.** + **Diese Datei nicht committen.** - Diese `.env`-Datei ist für Container-/Laufzeit-env wie `OPENCLAW_GATEWAY_TOKEN`. - Gespeicherte OAuth-/API-Key-Authentifizierung für Provider liegt in dem eingehängten + Diese `.env`-Datei ist für Container-/Laufzeit-Umgebungsvariablen wie `OPENCLAW_GATEWAY_TOKEN`. + Gespeicherte Provider-OAuth-/API-Key-Authentifizierung befindet sich in der eingehängten `~/.openclaw/agents//agent/auth-profiles.json`. - - Erstellen oder aktualisieren Sie `docker-compose.yml`. + + Erstelle oder aktualisiere `docker-compose.yml`. ```yaml services: @@ -270,8 +273,8 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace ports: - # Empfehlung: Das Gateway auf der VM nur an loopback binden; Zugriff über SSH-Tunnel. - # Um es öffentlich freizugeben, das Präfix `127.0.0.1:` entfernen und die Firewall entsprechend konfigurieren. + # Empfohlen: Das Gateway auf der VM nur an loopback binden; Zugriff per SSH-Tunnel. + # Um es öffentlich verfügbar zu machen, entferne das Präfix `127.0.0.1:` und konfiguriere die Firewall entsprechend. - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789" command: [ @@ -286,35 +289,35 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). ] ``` - `--allow-unconfigured` dient nur dem Bootstrap-Komfort und ersetzt keine korrekte Gateway-Konfiguration. Setzen Sie weiterhin Authentifizierung (`gateway.auth.token` oder Passwort) und verwenden Sie sichere Bind-Einstellungen für Ihre Bereitstellung. + `--allow-unconfigured` dient nur dem einfacheren Bootstrap und ersetzt keine ordnungsgemäße Gateway-Konfiguration. Setze weiterhin Authentifizierung (`gateway.auth.token` oder Passwort) und verwende sichere Bind-Einstellungen für dein Deployment. - Verwenden Sie die gemeinsame Laufzeitanleitung für den üblichen Docker-Host-Ablauf: + Verwende den gemeinsamen Laufzeitleitfaden für den allgemeinen Docker-Host-Ablauf: - - [Erforderliche Binärdateien in das Image einbacken](/install/docker-vm-runtime#bake-required-binaries-into-the-image) - - [Bauen und starten](/install/docker-vm-runtime#build-and-launch) - - [Was wo persistiert](/install/docker-vm-runtime#what-persists-where) - - [Updates](/install/docker-vm-runtime#updates) + - [Erforderliche Binärdateien in das Image einbinden](/de/install/docker-vm-runtime#bake-required-binaries-into-the-image) + - [Bauen und starten](/de/install/docker-vm-runtime#build-and-launch) + - [Was wo persistent gespeichert wird](/de/install/docker-vm-runtime#what-persists-where) + - [Updates](/de/install/docker-vm-runtime#updates) - - Wenn auf GCP der Build während `pnpm install --frozen-lockfile` mit `Killed` oder `exit code 137` fehlschlägt, hat die VM nicht genug Speicher. Verwenden Sie mindestens `e2-small` oder für zuverlässigere erste Builds `e2-medium`. + + Wenn auf GCP der Build bei `pnpm install --frozen-lockfile` mit `Killed` oder `exit code 137` fehlschlägt, hat die VM zu wenig Arbeitsspeicher. Verwende mindestens `e2-small` oder für zuverlässigere erste Builds `e2-medium`. - Wenn Sie an LAN binden (`OPENCLAW_GATEWAY_BIND=lan`), konfigurieren Sie vor dem Fortfahren einen vertrauenswürdigen Browser-Ursprung: + Wenn du an LAN bindest (`OPENCLAW_GATEWAY_BIND=lan`), konfiguriere vor dem Fortfahren eine vertrauenswürdige Browser-Origin: ```bash docker compose run --rm openclaw-cli config set gateway.controlUi.allowedOrigins '["http://127.0.0.1:18789"]' --strict-json ``` - Wenn Sie den Gateway-Port geändert haben, ersetzen Sie `18789` durch Ihren konfigurierten Port. + Wenn du den Gateway-Port geändert hast, ersetze `18789` durch deinen konfigurierten Port. - - Erstellen Sie einen SSH-Tunnel, um den Gateway-Port weiterzuleiten: + + Erstelle einen SSH-Tunnel, um den Gateway-Port weiterzuleiten: ```bash gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789 @@ -330,19 +333,20 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). docker compose run --rm openclaw-cli dashboard --no-open ``` - Wenn die UI nach Shared-Secret-Authentifizierung fragt, fügen Sie das konfigurierte Token oder - Passwort in die Einstellungen der Control UI ein. Dieser Docker-Ablauf schreibt standardmäßig ein Token; wenn Sie die Container-Konfiguration auf Passwortauthentifizierung umstellen, verwenden Sie stattdessen dieses - Passwort. + Wenn die UI nach Shared-Secret-Authentifizierung fragt, füge das konfigurierte Token oder + Passwort in die Einstellungen der Control UI ein. Dieser Docker-Ablauf schreibt standardmäßig + ein Token; wenn du die Container-Konfiguration auf Passwortauthentifizierung umstellst, verwende stattdessen + dieses Passwort. - Wenn die Control UI `unauthorized` oder `disconnected (1008): pairing required` anzeigt, genehmigen Sie das Browser-Gerät: + Wenn die Control UI `unauthorized` oder `disconnected (1008): pairing required` anzeigt, genehmige das Browser-Gerät: ```bash docker compose run --rm openclaw-cli devices list docker compose run --rm openclaw-cli devices approve ``` - Benötigen Sie erneut die Referenz für gemeinsame Persistenz und Updates? - Siehe [Docker VM Runtime](/install/docker-vm-runtime#what-persists-where) und [Docker VM Runtime updates](/install/docker-vm-runtime#updates). + Du brauchst die Referenz zu gemeinsamer Persistenz und Updates noch einmal? + Siehe [Docker VM Runtime](/de/install/docker-vm-runtime#what-persists-where) und [Docker VM Runtime updates](/de/install/docker-vm-runtime#updates). @@ -353,24 +357,24 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). **SSH-Verbindung verweigert** -Das Verteilen von SSH-Schlüsseln kann nach dem Erstellen der VM 1-2 Minuten dauern. Warten Sie und versuchen Sie es erneut. +Die Verteilung des SSH-Schlüssels kann nach der Erstellung der VM 1–2 Minuten dauern. Warte kurz und versuche es erneut. **Probleme mit OS Login** -Prüfen Sie Ihr OS-Login-Profil: +Prüfe dein OS-Login-Profil: ```bash gcloud compute os-login describe-profile ``` -Stellen Sie sicher, dass Ihr Konto die erforderlichen IAM-Berechtigungen hat (Compute OS Login oder Compute OS Admin Login). +Stelle sicher, dass dein Konto über die erforderlichen IAM-Berechtigungen verfügt (Compute OS Login oder Compute OS Admin Login). -**Nicht genug Speicher (OOM)** +**Zu wenig Arbeitsspeicher (OOM)** -Wenn der Docker-Build mit `Killed` und `exit code 137` fehlschlägt, wurde die VM wegen OOM beendet. Wechseln Sie auf e2-small (Minimum) oder e2-medium (empfohlen für zuverlässige lokale Builds): +Wenn der Docker-Build mit `Killed` und `exit code 137` fehlschlägt, wurde die VM durch OOM beendet. Upgrade auf e2-small (Minimum) oder e2-medium (empfohlen für zuverlässige lokale Builds): ```bash -# Zuerst die VM stoppen +# Stoppe zuerst die VM gcloud compute instances stop openclaw-gateway --zone=us-central1-a # Maschinentyp ändern @@ -384,20 +388,20 @@ gcloud compute instances start openclaw-gateway --zone=us-central1-a --- -## Servicekonten (Best Practice für Sicherheit) +## Service Accounts (bewährte Sicherheitsmethode) -Für die persönliche Nutzung ist Ihr Standardbenutzerkonto völlig ausreichend. +Für die persönliche Nutzung funktioniert dein Standardbenutzerkonto problemlos. -Für Automatisierung oder CI/CD-Pipelines erstellen Sie ein dediziertes Servicekonto mit minimalen Berechtigungen: +Für Automatisierung oder CI/CD-Pipelines erstelle ein dediziertes Service Account mit minimalen Berechtigungen: -1. Ein Servicekonto erstellen: +1. Ein Service Account erstellen: ```bash gcloud iam service-accounts create openclaw-deploy \ --display-name="OpenClaw Deployment" ``` -2. Die Rolle „Compute Instance Admin“ gewähren (oder eine engere benutzerdefinierte Rolle): +2. Rolle „Compute Instance Admin“ gewähren (oder eine engere benutzerdefinierte Rolle): ```bash gcloud projects add-iam-policy-binding my-openclaw-project \ @@ -405,14 +409,14 @@ Für Automatisierung oder CI/CD-Pipelines erstellen Sie ein dediziertes Servicek --role="roles/compute.instanceAdmin.v1" ``` -Verwenden Sie für Automatisierung nicht die Rolle Owner. Verwenden Sie das Prinzip der geringsten Privilegien. +Verwende für Automatisierung nicht die Rolle „Owner“. Nutze das Prinzip der geringsten Rechte. -Details zu IAM-Rollen finden Sie unter [https://cloud.google.com/iam/docs/understanding-roles](https://cloud.google.com/iam/docs/understanding-roles). +Siehe [https://cloud.google.com/iam/docs/understanding-roles](https://cloud.google.com/iam/docs/understanding-roles) für Details zu IAM-Rollen. --- ## Nächste Schritte -- Messaging-Kanäle einrichten: [Channels](/channels) -- Lokale Geräte als Nodes koppeln: [Nodes](/nodes) -- Das Gateway konfigurieren: [Gateway configuration](/gateway/configuration) +- Messaging-Kanäle einrichten: [Channels](/de/channels) +- Lokale Geräte als Nodes koppeln: [Nodes](/de/nodes) +- Das Gateway konfigurieren: [Gateway configuration](/de/gateway/configuration) diff --git a/docs/de/install/hetzner.md b/docs/de/install/hetzner.md index a4a680897..9a02d67f2 100644 --- a/docs/de/install/hetzner.md +++ b/docs/de/install/hetzner.md @@ -1,16 +1,16 @@ --- read_when: - - Sie möchten OpenClaw 24/7 auf einem Cloud-VPS ausführen (nicht auf Ihrem Laptop) - - Sie möchten ein produktionsreifes, dauerhaft laufendes Gateway auf Ihrem eigenen VPS - - Sie möchten volle Kontrolle über Persistenz, Binärdateien und Neustartverhalten + - Sie möchten OpenClaw 24/7 auf einem Cloud-VPS ausführen lassen (nicht auf Ihrem Laptop) + - Sie möchten ein produktionsreifes, ständig verfügbares Gateway auf Ihrem eigenen VPS + - Sie möchten die vollständige Kontrolle über Persistenz, Binärdateien und das Neustartverhalten - Sie führen OpenClaw in Docker auf Hetzner oder einem ähnlichen Anbieter aus -summary: OpenClaw Gateway 24/7 auf einem günstigen Hetzner-VPS ausführen (Docker) mit dauerhaftem Status und eingebetteten Binärdateien +summary: Führen Sie OpenClaw Gateway 24/7 auf einem günstigen Hetzner-VPS (Docker) mit dauerhaftem Status und integrierten Binärdateien aus title: Hetzner x-i18n: - generated_at: "2026-04-05T12:46:17Z" + generated_at: "2026-04-19T01:11:14Z" model: gpt-5.4 provider: openai - source_hash: d859e4c0943040b022835f320708f879a11eadef70f2816cf0f2824eaaf165ef + source_hash: 32f5e552ea87970b89c762059bc27f22e0aa3abf001307cae8829b9f1c713a42 source_path: install/hetzner.md workflow: 15 --- @@ -19,38 +19,38 @@ x-i18n: ## Ziel -Ein persistentes OpenClaw Gateway auf einem Hetzner-VPS mit Docker ausführen, mit dauerhaftem Status, eingebetteten Binärdateien und sicherem Neustartverhalten. +Führen Sie ein persistentes OpenClaw Gateway auf einem Hetzner-VPS mit Docker aus, mit dauerhaftem Status, integrierten Binärdateien und sicherem Neustartverhalten. -Wenn Sie „OpenClaw 24/7 für ~5 $“ möchten, ist dies das einfachste zuverlässige Setup. -Die Preise bei Hetzner ändern sich; wählen Sie den kleinsten Debian-/Ubuntu-VPS und skalieren Sie hoch, wenn Sie auf OOMs stoßen. +Wenn Sie „OpenClaw 24/7 für ~5 $“ möchten, ist dies die einfachste zuverlässige Einrichtung. +Die Preise von Hetzner ändern sich; wählen Sie den kleinsten Debian-/Ubuntu-VPS und skalieren Sie nach oben, wenn Sie auf OOMs stoßen. -Erinnerung an das Sicherheitsmodell: +Erinnerung zum Sicherheitsmodell: -- Von Unternehmen gemeinsam genutzte Agents sind in Ordnung, wenn sich alle innerhalb derselben Vertrauensgrenze befinden und die Laufzeit nur geschäftlich genutzt wird. -- Halten Sie eine strikte Trennung ein: dedizierter VPS/Laufzeit + dedizierte Accounts; keine persönlichen Apple-/Google-/Browser-/Passwortmanager-Profile auf diesem Host. -- Wenn Benutzer sich gegenseitig adversarial gegenüberstehen, trennen Sie nach Gateway/Host/OS-Benutzer. +- Gemeinsam genutzte Agenten im Unternehmen sind in Ordnung, wenn sich alle innerhalb derselben Vertrauensgrenze befinden und die Laufzeitumgebung ausschließlich geschäftlich genutzt wird. +- Halten Sie eine strikte Trennung ein: dedizierter VPS/Laufzeit + dedizierte Konten; keine persönlichen Apple-/Google-/Browser-/Passwort-Manager-Profile auf diesem Host. +- Wenn Benutzer einander gegenüber adversarial sind, trennen Sie nach Gateway/Host/OS-Benutzer. -Siehe [Sicherheit](/gateway/security) und [VPS hosting](/vps). +Siehe [Sicherheit](/de/gateway/security) und [VPS-Hosting](/de/vps). -## Was tun wir hier (einfach erklärt)? +## Was machen wir hier (einfach erklärt)? - Einen kleinen Linux-Server mieten (Hetzner-VPS) - Docker installieren (isolierte App-Laufzeit) - Das OpenClaw Gateway in Docker starten -- `~/.openclaw` + `~/.openclaw/workspace` auf dem Host persistieren (übersteht Neustarts/Rebuilds) -- Über einen SSH-Tunnel von Ihrem Laptop auf die Control UI zugreifen +- `~/.openclaw` + `~/.openclaw/workspace` auf dem Host persistent speichern (übersteht Neustarts/Neubuilds) +- Über einen SSH-Tunnel von Ihrem Laptop aus auf die Control UI zugreifen -Dieser eingehängte Status unter `~/.openclaw` enthält `openclaw.json`, `agents//agent/auth-profiles.json` -pro Agent und `.env`. +Dieser eingehängte `~/.openclaw`-Status umfasst `openclaw.json`, pro Agent +`agents//agent/auth-profiles.json` und `.env`. -Auf das Gateway kann zugegriffen werden über: +Auf das Gateway kann wie folgt zugegriffen werden: - SSH-Portweiterleitung von Ihrem Laptop - Direkte Portfreigabe, wenn Sie Firewalling und Tokens selbst verwalten -Diese Anleitung setzt Ubuntu oder Debian auf Hetzner voraus. -Wenn Sie auf einem anderen Linux-VPS sind, passen Sie die Pakete entsprechend an. -Für den generischen Docker-Ablauf siehe [Docker](/install/docker). +Dieser Leitfaden geht von Ubuntu oder Debian auf Hetzner aus. +Wenn Sie einen anderen Linux-VPS verwenden, passen Sie die Pakete entsprechend an. +Für den allgemeinen Docker-Ablauf siehe [Docker](/de/install/docker). --- @@ -61,9 +61,9 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). 3. OpenClaw-Repository klonen 4. Persistente Host-Verzeichnisse erstellen 5. `.env` und `docker-compose.yml` konfigurieren -6. Erforderliche Binärdateien in das Image einbetten +6. Erforderliche Binärdateien in das Image integrieren 7. `docker compose up -d` -8. Persistenz und Gateway-Zugriff verifizieren +8. Persistenz und Gateway-Zugriff prüfen --- @@ -74,8 +74,8 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). - Grundlegende Vertrautheit mit SSH + Copy/Paste - ~20 Minuten - Docker und Docker Compose -- Modellauthentifizierungs-Anmeldeinformationen -- Optionale Provider-Anmeldeinformationen +- Modell-Authentifizierungsdaten +- Optionale Anbieter-Anmeldedaten - WhatsApp-QR - Telegram-Bot-Token - Gmail-OAuth @@ -86,13 +86,13 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). Erstellen Sie einen Ubuntu- oder Debian-VPS bei Hetzner. - Verbinden Sie sich als Root: + Als root verbinden: ```bash ssh root@YOUR_VPS_IP ``` - Diese Anleitung setzt voraus, dass der VPS zustandsbehaftet ist. + Dieser Leitfaden geht davon aus, dass der VPS zustandsbehaftet ist. Behandeln Sie ihn nicht als wegwerfbare Infrastruktur. @@ -104,7 +104,7 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). curl -fsSL https://get.docker.com | sh ``` - Verifizieren: + Prüfen: ```bash docker --version @@ -119,13 +119,13 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). cd openclaw ``` - Diese Anleitung setzt voraus, dass Sie ein benutzerdefiniertes Image bauen, um die Persistenz der Binärdateien zu garantieren. + Dieser Leitfaden geht davon aus, dass Sie ein benutzerdefiniertes Image erstellen, um die Persistenz der Binärdateien zu garantieren. - Docker-Container sind ephemer. - Jeder langlebige Status muss auf dem Host liegen. + Docker-Container sind flüchtig. + Jeder langlebige Status muss auf dem Host gespeichert werden. ```bash mkdir -p /root/.openclaw/workspace @@ -137,22 +137,25 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). - Erstellen Sie `.env` im Root des Repositorys. + Erstellen Sie `.env` im Repository-Stammverzeichnis. ```bash OPENCLAW_IMAGE=openclaw:latest - OPENCLAW_GATEWAY_TOKEN=change-me-now + OPENCLAW_GATEWAY_TOKEN= OPENCLAW_GATEWAY_BIND=lan OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_CONFIG_DIR=/root/.openclaw OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace - GOG_KEYRING_PASSWORD=change-me-now + GOG_KEYRING_PASSWORD= XDG_CONFIG_HOME=/home/node/.openclaw ``` - Erzeugen Sie starke Secrets: + Lassen Sie `OPENCLAW_GATEWAY_TOKEN` leer, außer Sie möchten ihn ausdrücklich über + `.env` verwalten; OpenClaw schreibt beim ersten Start ein zufälliges Gateway-Token in die + Konfiguration. Generieren Sie ein Keyring-Passwort und fügen Sie es in + `GOG_KEYRING_PASSWORD` ein: ```bash openssl rand -hex 32 @@ -160,8 +163,8 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). **Committen Sie diese Datei nicht.** - Diese Datei `.env` ist für Container-/Laufzeit-Umgebungsvariablen wie `OPENCLAW_GATEWAY_TOKEN`. - Gespeicherte OAuth-/API-Key-Authentifizierung für Provider liegt in der eingehängten Datei + Diese `.env`-Datei ist für Container-/Laufzeit-Umgebungsvariablen wie `OPENCLAW_GATEWAY_TOKEN`. + Gespeicherte OAuth-/API-Key-Authentifizierung von Anbietern befindet sich in der eingehängten `~/.openclaw/agents//agent/auth-profiles.json`. @@ -191,7 +194,7 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace ports: - # Empfohlen: das Gateway auf dem VPS nur über Loopback bereitstellen; Zugriff per SSH-Tunnel. + # Empfohlen: Das Gateway auf dem VPS nur an loopback binden; Zugriff per SSH-Tunnel. # Um es öffentlich bereitzustellen, entfernen Sie das Präfix `127.0.0.1:` und konfigurieren Sie die Firewall entsprechend. - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789" command: @@ -207,22 +210,22 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). ] ``` - `--allow-unconfigured` ist nur als Bequemlichkeit für den Bootstrap gedacht und kein Ersatz für eine ordentliche Gateway-Konfiguration. Setzen Sie trotzdem Auth (`gateway.auth.token` oder Passwort) und verwenden Sie sichere Bind-Einstellungen für Ihre Bereitstellung. + `--allow-unconfigured` dient nur dem bequemen Bootstrap und ersetzt keine ordnungsgemäße Gateway-Konfiguration. Richten Sie weiterhin Authentifizierung ein (`gateway.auth.token` oder Passwort) und verwenden Sie sichere Bind-Einstellungen für Ihre Bereitstellung. - Verwenden Sie den gemeinsamen Laufzeitleitfaden für den allgemeinen Docker-Host-Ablauf: + Verwenden Sie den gemeinsamen Laufzeit-Leitfaden für den allgemeinen Docker-Host-Ablauf: - - [Erforderliche Binärdateien in das Image einbetten](/install/docker-vm-runtime#bake-required-binaries-into-the-image) - - [Bauen und starten](/install/docker-vm-runtime#build-and-launch) - - [Was wo persistiert](/install/docker-vm-runtime#what-persists-where) - - [Updates](/install/docker-vm-runtime#updates) + - [Erforderliche Binärdateien in das Image integrieren](/de/install/docker-vm-runtime#bake-required-binaries-into-the-image) + - [Build und Start](/de/install/docker-vm-runtime#build-and-launch) + - [Was wo persistent gespeichert wird](/de/install/docker-vm-runtime#what-persists-where) + - [Updates](/de/install/docker-vm-runtime#updates) - Nach den gemeinsamen Schritten zum Bauen und Starten tunneln Sie von Ihrem Laptop: + Nach den gemeinsamen Schritten für Build und Start tunneln Sie von Ihrem Laptop aus: ```bash ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP @@ -232,34 +235,35 @@ Für den generischen Docker-Ablauf siehe [Docker](/install/docker). `http://127.0.0.1:18789/` - Fügen Sie das konfigurierte Shared Secret ein. Diese Anleitung verwendet standardmäßig das Gateway-Token; wenn Sie auf Passwort-Authentifizierung umgestellt haben, verwenden Sie stattdessen dieses Passwort. + Fügen Sie das konfigurierte gemeinsame Geheimnis ein. Dieser Leitfaden verwendet standardmäßig das Gateway-Token; + wenn Sie stattdessen zur Passwort-Authentifizierung gewechselt haben, verwenden Sie dieses Passwort. -Die gemeinsame Persistenzübersicht finden Sie unter [Docker VM Runtime](/install/docker-vm-runtime#what-persists-where). +Die gemeinsame Persistenzübersicht finden Sie unter [Docker VM Runtime](/de/install/docker-vm-runtime#what-persists-where). ## Infrastructure as Code (Terraform) -Für Teams, die Infrastructure-as-Code-Workflows bevorzugen, bietet ein von der Community gepflegtes Terraform-Setup: +Für Teams, die Infrastructure-as-Code-Workflows bevorzugen, bietet eine von der Community gepflegte Terraform-Einrichtung: -- Modulare Terraform-Konfiguration mit Verwaltung von Remote-Status +- Modulare Terraform-Konfiguration mit Remote-Statusverwaltung - Automatisierte Bereitstellung über cloud-init - Deployment-Skripte (Bootstrap, Deployment, Backup/Wiederherstellung) - Sicherheits-Härtung (Firewall, UFW, nur SSH-Zugriff) -- SSH-Tunnel-Konfiguration für Gateway-Zugriff +- SSH-Tunnel-Konfiguration für den Gateway-Zugriff -**Repos:** +**Repositories:** - Infrastruktur: [openclaw-terraform-hetzner](https://github.com/andreesg/openclaw-terraform-hetzner) - Docker-Konfiguration: [openclaw-docker-config](https://github.com/andreesg/openclaw-docker-config) -Dieser Ansatz ergänzt das obige Docker-Setup um reproduzierbare Deployments, versionskontrollierte Infrastruktur und automatisierte Wiederherstellung im Katastrophenfall. +Dieser Ansatz ergänzt die obige Docker-Einrichtung durch reproduzierbare Deployments, versionskontrollierte Infrastruktur und automatisierte Disaster-Recovery. -> **Hinweis:** Von der Community gepflegt. Für Probleme oder Beiträge siehe die obigen Repo-Links. +> **Hinweis:** Von der Community gepflegt. Bei Problemen oder Beiträgen siehe die obigen Repository-Links. ## Nächste Schritte -- Messaging-Kanäle einrichten: [Kanäle](/channels) -- Das Gateway konfigurieren: [Gateway-Konfiguration](/gateway/configuration) -- OpenClaw aktuell halten: [Updating](/install/updating) +- Messaging-Kanäle einrichten: [Channels](/de/channels) +- Das Gateway konfigurieren: [Gateway-Konfiguration](/de/gateway/configuration) +- OpenClaw aktuell halten: [Aktualisierung](/de/install/updating) diff --git a/docs/de/plugins/manifest.md b/docs/de/plugins/manifest.md index 47d84fe7e..8c0540bb7 100644 --- a/docs/de/plugins/manifest.md +++ b/docs/de/plugins/manifest.md @@ -1,81 +1,65 @@ --- read_when: - - Sie erstellen ein OpenClaw-Plugin - - Sie müssen ein Plugin-Konfigurationsschema bereitstellen oder Plugin-Validierungsfehler debuggen -summary: Plugin-Manifest + JSON-Schema-Anforderungen (strikte Konfigurationsvalidierung) + - Du erstellst ein OpenClaw Plugin + - Du musst ein Plugin-Konfigurationsschema bereitstellen oder Plugin-Validierungsfehler beheben +summary: Plugin-Manifest- und JSON-Schema-Anforderungen (strikte Konfigurationsvalidierung) title: Plugin-Manifest x-i18n: - generated_at: "2026-04-15T06:21:29Z" + generated_at: "2026-04-19T01:11:10Z" model: gpt-5.4 provider: openai - source_hash: ba2183bfa8802871e4ef33a0ebea290606e8351e9e83e25ee72456addb768730 + source_hash: 2dfc00759108ddee7bfcda8c42acf7f2d47451676447ba3caf8b5950f8a1c181 source_path: plugins/manifest.md workflow: 15 --- # Plugin-Manifest (`openclaw.plugin.json`) -Diese Seite gilt nur für das **native OpenClaw-Plugin-Manifest**. +Diese Seite gilt nur für das **native OpenClaw Plugin-Manifest**. -Informationen zu kompatiblen Bundle-Layouts finden Sie unter [Plugin-Bundles](/de/plugins/bundles). +Kompatible Bundle-Layouts findest du unter [Plugin-Bundles](/de/plugins/bundles). Kompatible Bundle-Formate verwenden andere Manifestdateien: - Codex-Bundle: `.codex-plugin/plugin.json` -- Claude-Bundle: `.claude-plugin/plugin.json` oder das standardmäßige Claude-Komponenten- - Layout ohne Manifest +- Claude-Bundle: `.claude-plugin/plugin.json` oder das standardmäßige Claude-Komponenten-Layout ohne Manifest - Cursor-Bundle: `.cursor-plugin/plugin.json` -OpenClaw erkennt diese Bundle-Layouts ebenfalls automatisch, sie werden jedoch nicht -gegen das hier beschriebene Schema für `openclaw.plugin.json` validiert. +OpenClaw erkennt diese Bundle-Layouts ebenfalls automatisch, sie werden jedoch nicht anhand des hier beschriebenen `openclaw.plugin.json`-Schemas validiert. -Für kompatible Bundles liest OpenClaw derzeit Bundle-Metadaten sowie deklarierte -Skill-Stammverzeichnisse, Claude-Befehlsstammverzeichnisse, Claude-Bundle-Standardwerte aus `settings.json`, -Claude-Bundle-LSP-Standardwerte und unterstützte Hook-Pakete, wenn das Layout den -Laufzeiterwartungen von OpenClaw entspricht. +Für kompatible Bundles liest OpenClaw derzeit Bundle-Metadaten sowie deklarierte Skill-Roots, Claude-Befehls-Roots, Claude-Bundle-`settings.json`-Standards, Claude-Bundle-LSP-Standards und unterstützte Hook-Packs, wenn das Layout den OpenClaw-Laufzeiterwartungen entspricht. -Jedes native OpenClaw-Plugin **muss** eine Datei `openclaw.plugin.json` im -**Plugin-Stammverzeichnis** bereitstellen. OpenClaw verwendet dieses Manifest, um die Konfiguration zu validieren, -**ohne Plugin-Code auszuführen**. Fehlende oder ungültige Manifeste werden als -Plugin-Fehler behandelt und blockieren die Konfigurationsvalidierung. +Jedes native OpenClaw Plugin **muss** im **Plugin-Root** eine Datei `openclaw.plugin.json` bereitstellen. OpenClaw verwendet dieses Manifest, um die Konfiguration zu validieren, **ohne Plugin-Code auszuführen**. Fehlende oder ungültige Manifeste werden als Plugin-Fehler behandelt und blockieren die Konfigurationsvalidierung. -Den vollständigen Leitfaden zum Plugin-System finden Sie unter: [Plugins](/de/tools/plugin). -Zum nativen Fähigkeitsmodell und zur aktuellen Anleitung zur externen Kompatibilität: +Siehe den vollständigen Leitfaden zum Plugin-System: [Plugins](/de/tools/plugin). +Zum nativen Fähigkeitsmodell und den aktuellen Hinweisen zur externen Kompatibilität: [Fähigkeitsmodell](/de/plugins/architecture#public-capability-model). ## Was diese Datei macht -`openclaw.plugin.json` sind die Metadaten, die OpenClaw liest, bevor Ihr -Plugin-Code geladen wird. +`openclaw.plugin.json` sind die Metadaten, die OpenClaw liest, bevor dein Plugin-Code geladen wird. -Verwenden Sie sie für: +Verwende sie für: - Plugin-Identität - Konfigurationsvalidierung -- Authentifizierungs- und Onboarding-Metadaten, die verfügbar sein sollen, ohne die Plugin- - Laufzeit zu starten -- kostengünstige Aktivierungshinweise, die Control-Plane-Oberflächen vor dem Laden der Laufzeit - prüfen können -- kostengünstige Setup-Deskriptoren, die Setup-/Onboarding-Oberflächen vor dem Laden der - Laufzeit prüfen können -- Alias- und Metadaten zum automatischen Aktivieren, die aufgelöst werden sollen, bevor die Plugin-Laufzeit geladen wird -- Kurzschrift-Metadaten zur Besitzerschaft von Modellfamilien, die das - Plugin vor dem Laden der Laufzeit automatisch aktivieren sollen -- statische Snapshots der Fähigkeitsbesitzerschaft, die für die gebündelte Kompatibilitätsverdrahtung und - Vertragsabdeckung verwendet werden -- kostengünstige Metadaten für QA-Runner, die der gemeinsame `openclaw qa`-Host - prüfen kann, bevor die Plugin-Laufzeit geladen wird -- kanalspezifische Konfigurationsmetadaten, die in Katalog- und Validierungsoberflächen - zusammengeführt werden sollen, ohne die Laufzeit zu laden +- Authentifizierungs- und Onboarding-Metadaten, die ohne Starten der Plugin-Laufzeit verfügbar sein sollen +- kostengünstige Aktivierungshinweise, die Control-Plane-Oberflächen vor dem Laden der Laufzeit prüfen können +- kostengünstige Setup-Deskriptoren, die Setup-/Onboarding-Oberflächen vor dem Laden der Laufzeit prüfen können +- Alias- und Auto-Enable-Metadaten, die vor dem Laden der Plugin-Laufzeit aufgelöst werden sollen +- Kurzschreibweise-Metadaten zur Besitzerschaft von Modellfamilien, die das Plugin vor dem Laden der Laufzeit automatisch aktivieren sollen +- statische Snapshots zur Besitzerschaft von Fähigkeiten, die für gebündelte Kompatibilitätsverdrahtung und Vertragsabdeckung verwendet werden +- kostengünstige QA-Runner-Metadaten, die der gemeinsame `openclaw qa`-Host vor dem Laden der Plugin-Laufzeit prüfen kann +- kanalspezifische Konfigurationsmetadaten, die in Katalog- und Validierungsoberflächen zusammengeführt werden sollen, ohne die Laufzeit zu laden - Hinweise für die Konfigurations-UI -Verwenden Sie sie nicht für: +Verwende sie nicht für: - das Registrieren von Laufzeitverhalten -- das Deklarieren von Code-Einstiegspunkten +- das Deklarieren von Code-Entrypoints - npm-Installationsmetadaten -Diese gehören in Ihren Plugin-Code und in `package.json`. +Diese gehören in deinen Plugin-Code und in `package.json`. ## Minimales Beispiel @@ -102,7 +86,14 @@ Diese gehören in Ihren Plugin-Code und in `package.json`. "modelSupport": { "modelPrefixes": ["router-"] }, + "providerEndpoints": [ + { + "endpointClass": "xai-native", + "hosts": ["api.x.ai"] + } + ], "cliBackends": ["openrouter-cli"], + "syntheticAuthRefs": ["openrouter-cli"], "providerAuthEnvVars": { "openrouter": ["OPENROUTER_API_KEY"] }, @@ -146,65 +137,66 @@ Diese gehören in Ihren Plugin-Code und in `package.json`. } ``` -## Referenz der Felder auf oberster Ebene +## Referenz für Felder der obersten Ebene -| Feld | Erforderlich | Typ | Bedeutung | -| ----------------------------------- | ------------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | Ja | `string` | Kanonische Plugin-ID. Dies ist die ID, die in `plugins.entries.` verwendet wird. | -| `configSchema` | Ja | `object` | Inline-JSON-Schema für die Konfiguration dieses Plugins. | -| `enabledByDefault` | Nein | `true` | Kennzeichnet ein gebündeltes Plugin als standardmäßig aktiviert. Lassen Sie das Feld weg oder setzen Sie einen anderen Wert als `true`, damit das Plugin standardmäßig deaktiviert bleibt. | -| `legacyPluginIds` | Nein | `string[]` | Veraltete IDs, die auf diese kanonische Plugin-ID normalisiert werden. | -| `autoEnableWhenConfiguredProviders` | Nein | `string[]` | Provider-IDs, die dieses Plugin automatisch aktivieren sollen, wenn Authentifizierung, Konfiguration oder Modellreferenzen sie erwähnen. | -| `kind` | Nein | `"memory"` \| `"context-engine"` | Deklariert eine exklusive Plugin-Art, die von `plugins.slots.*` verwendet wird. | -| `channels` | Nein | `string[]` | Kanal-IDs, die diesem Plugin gehören. Werden für Erkennung und Konfigurationsvalidierung verwendet. | -| `providers` | Nein | `string[]` | Provider-IDs, die diesem Plugin gehören. | -| `modelSupport` | Nein | `object` | Manifest-eigene Kurzschrift-Metadaten für Modellfamilien, mit denen das Plugin vor der Laufzeit automatisch geladen wird. | -| `cliBackends` | Nein | `string[]` | CLI-Inferenz-Backend-IDs, die diesem Plugin gehören. Werden für die automatische Aktivierung beim Start aus expliziten Konfigurationsreferenzen verwendet. | -| `commandAliases` | Nein | `object[]` | Befehlsnamen, die diesem Plugin gehören und vor dem Laden der Laufzeit pluginbewusste Konfigurations- und CLI-Diagnosen erzeugen sollen. | -| `providerAuthEnvVars` | Nein | `Record` | Kostengünstige Umgebungsmetadaten zur Provider-Authentifizierung, die OpenClaw ohne Laden von Plugin-Code prüfen kann. | -| `providerAuthAliases` | Nein | `Record` | Provider-IDs, die für die Authentifizierung eine andere Provider-ID wiederverwenden sollen, z. B. ein Coding-Provider, der denselben API-Schlüssel und dieselben Authentifizierungsprofile nutzt. | -| `channelEnvVars` | Nein | `Record` | Kostengünstige Kanal-Umgebungsmetadaten, die OpenClaw ohne Laden von Plugin-Code prüfen kann. Verwenden Sie dies für umgebungsgetriebene Kanal-Setups oder Authentifizierungsoberflächen, die generische Start-/Konfigurationshilfen sehen sollen. | -| `providerAuthChoices` | Nein | `object[]` | Kostengünstige Metadaten für Authentifizierungsoptionen für Onboarding-Auswahlen, bevorzugte Provider-Auflösung und einfache CLI-Flag-Verdrahtung. | -| `activation` | Nein | `object` | Kostengünstige Aktivierungshinweise für provider-, befehls-, kanal-, routen- und fähigkeitsgetriggertes Laden. Nur Metadaten; das tatsächliche Verhalten gehört weiterhin der Plugin-Laufzeit. | -| `setup` | Nein | `object` | Kostengünstige Setup-/Onboarding-Deskriptoren, die Erkennungs- und Setup-Oberflächen ohne Laden der Plugin-Laufzeit prüfen können. | -| `qaRunners` | Nein | `object[]` | Kostengünstige QA-Runner-Deskriptoren, die vom gemeinsamen `openclaw qa`-Host verwendet werden, bevor die Plugin-Laufzeit geladen wird. | -| `contracts` | Nein | `object` | Statischer Snapshot gebündelter Fähigkeiten für Speech, Echtzeittranskription, Echtzeitstimme, Media Understanding, Bildgenerierung, Musikgenerierung, Videogenerierung, Web-Fetch, Websuche und Tool-Besitzerschaft. | -| `channelConfigs` | Nein | `Record` | Manifest-eigene Kanal-Konfigurationsmetadaten, die vor dem Laden der Laufzeit in Erkennungs- und Validierungsoberflächen zusammengeführt werden. | -| `skills` | Nein | `string[]` | Zu ladende Skills-Verzeichnisse, relativ zum Plugin-Stammverzeichnis. | -| `name` | Nein | `string` | Menschenlesbarer Plugin-Name. | -| `description` | Nein | `string` | Kurze Zusammenfassung, die in Plugin-Oberflächen angezeigt wird. | -| `version` | Nein | `string` | Informative Plugin-Version. | -| `uiHints` | Nein | `Record` | UI-Beschriftungen, Platzhalter und Sensitivitätshinweise für Konfigurationsfelder. | +| Feld | Erforderlich | Typ | Bedeutung | +| ----------------------------------- | ------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | Ja | `string` | Kanonische Plugin-ID. Dies ist die ID, die in `plugins.entries.` verwendet wird. | +| `configSchema` | Ja | `object` | Inline-JSON-Schema für die Konfiguration dieses Plugins. | +| `enabledByDefault` | Nein | `true` | Kennzeichnet ein gebündeltes Plugin als standardmäßig aktiviert. Lasse das Feld weg oder setze einen beliebigen Wert ungleich `true`, damit das Plugin standardmäßig deaktiviert bleibt. | +| `legacyPluginIds` | Nein | `string[]` | Veraltete IDs, die auf diese kanonische Plugin-ID normalisiert werden. | +| `autoEnableWhenConfiguredProviders` | Nein | `string[]` | Provider-IDs, die dieses Plugin automatisch aktivieren sollen, wenn Auth, Konfiguration oder Modell-Referenzen sie erwähnen. | +| `kind` | Nein | `"memory"` \| `"context-engine"` | Deklariert einen exklusiven Plugin-Typ, der von `plugins.slots.*` verwendet wird. | +| `channels` | Nein | `string[]` | Kanal-IDs, die diesem Plugin gehören. Werden für Erkennung und Konfigurationsvalidierung verwendet. | +| `providers` | Nein | `string[]` | Provider-IDs, die diesem Plugin gehören. | +| `modelSupport` | Nein | `object` | Manifest-eigene Kurzschreibweise-Metadaten für Modellfamilien, die verwendet werden, um das Plugin vor der Laufzeit automatisch zu laden. | +| `providerEndpoints` | Nein | `object[]` | Manifest-eigene Metadaten zu Endpoint-Hosts/-`baseUrl` für Provider-Routen, die der Core vor dem Laden der Provider-Laufzeit klassifizieren muss. | +| `cliBackends` | Nein | `string[]` | IDs von CLI-Inferenz-Backends, die diesem Plugin gehören. Werden für die automatische Aktivierung beim Start anhand expliziter Konfigurationsreferenzen verwendet. | +| `syntheticAuthRefs` | Nein | `string[]` | Provider- oder CLI-Backend-Referenzen, deren Plugin-eigener Synthetic-Auth-Hook während der kalten Modellerkennung geprüft werden soll, bevor die Laufzeit geladen wird. | +| `nonSecretAuthMarkers` | Nein | `string[]` | Platzhalterwerte für API-Schlüssel, die einem gebündelten Plugin gehören und einen nicht geheimen lokalen, OAuth- oder ambienten Anmeldezustand repräsentieren. | +| `commandAliases` | Nein | `object[]` | Befehlsnamen, die diesem Plugin gehören und vor dem Laden der Laufzeit pluginbewusste Konfigurations- und CLI-Diagnosen erzeugen sollen. | +| `providerAuthEnvVars` | Nein | `Record` | Kostengünstige Metadaten zu Provider-Auth-Umgebungsvariablen, die OpenClaw ohne Laden von Plugin-Code prüfen kann. | +| `providerAuthAliases` | Nein | `Record` | Provider-IDs, die für die Auth-Suche eine andere Provider-ID wiederverwenden sollen, zum Beispiel ein Coding-Provider, der denselben API-Schlüssel und dieselben Auth-Profile wie der Basis-Provider teilt. | +| `channelEnvVars` | Nein | `Record` | Kostengünstige Metadaten zu Kanal-Umgebungsvariablen, die OpenClaw ohne Laden von Plugin-Code prüfen kann. Verwende dies für env-gesteuerte Kanal-Einrichtungs- oder Auth-Oberflächen, die generische Start-/Konfigurationshilfen sehen sollen. | +| `providerAuthChoices` | Nein | `object[]` | Kostengünstige Metadaten zu Auth-Auswahlmöglichkeiten für Onboarding-Auswähler, bevorzugte Provider-Auflösung und einfache CLI-Flag-Verdrahtung. | +| `activation` | Nein | `object` | Kostengünstige Aktivierungshinweise für provider-, befehls-, kanal-, routen- und fähigkeitsgesteuertes Laden. Nur Metadaten; die tatsächliche Laufzeitlogik bleibt im Plugin. | +| `setup` | Nein | `object` | Kostengünstige Setup-/Onboarding-Deskriptoren, die Erkennungs- und Setup-Oberflächen ohne Laden der Plugin-Laufzeit prüfen können. | +| `qaRunners` | Nein | `object[]` | Kostengünstige QA-Runner-Deskriptoren, die vom gemeinsamen `openclaw qa`-Host vor dem Laden der Plugin-Laufzeit verwendet werden. | +| `contracts` | Nein | `object` | Statischer Snapshot gebündelter Fähigkeiten für Sprach-, Echtzeit-Transkriptions-, Echtzeit-Sprach-, Media-Understanding-, Bildgenerierungs-, Musikgenerierungs-, Videogenerierungs-, Web-Fetch-, Web-Suche- und Tool-Besitzerschaft. | +| `channelConfigs` | Nein | `Record` | Manifest-eigene Kanal-Konfigurationsmetadaten, die vor dem Laden der Laufzeit in Erkennungs- und Validierungsoberflächen zusammengeführt werden. | +| `skills` | Nein | `string[]` | Skill-Verzeichnisse, die relativ zum Plugin-Root geladen werden. | +| `name` | Nein | `string` | Menschenlesbarer Plugin-Name. | +| `description` | Nein | `string` | Kurze Zusammenfassung, die in Plugin-Oberflächen angezeigt wird. | +| `version` | Nein | `string` | Informative Plugin-Version. | +| `uiHints` | Nein | `Record` | UI-Beschriftungen, Platzhalter und Sensitivitätshinweise für Konfigurationsfelder. | -## Referenz zu `providerAuthChoices` +## Referenz für `providerAuthChoices` -Jeder Eintrag in `providerAuthChoices` beschreibt eine Onboarding- oder Authentifizierungsoption. -OpenClaw liest diese Informationen, bevor die Provider-Laufzeit geladen wird. +Jeder Eintrag in `providerAuthChoices` beschreibt eine Onboarding- oder Auth-Auswahlmöglichkeit. +OpenClaw liest dies, bevor die Provider-Laufzeit geladen wird. -| Feld | Erforderlich | Typ | Bedeutung | -| --------------------- | ------------ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `provider` | Ja | `string` | Provider-ID, zu der diese Option gehört. | -| `method` | Ja | `string` | ID der Authentifizierungsmethode, an die weitergeleitet werden soll. | -| `choiceId` | Ja | `string` | Stabile ID der Authentifizierungsoption, die von Onboarding- und CLI-Abläufen verwendet wird. | -| `choiceLabel` | Nein | `string` | Benutzerseitige Beschriftung. Wenn sie weggelassen wird, verwendet OpenClaw stattdessen `choiceId`. | -| `choiceHint` | Nein | `string` | Kurzer Hilfetext für die Auswahl. | -| `assistantPriority` | Nein | `number` | Niedrigere Werte werden in assistentengesteuerten interaktiven Auswahlen früher sortiert. | -| `assistantVisibility` | Nein | `"visible"` \| `"manual-only"` | Blendet die Option in Assistenten-Auswahlen aus, erlaubt aber weiterhin die manuelle Auswahl über die CLI. | -| `deprecatedChoiceIds` | Nein | `string[]` | Veraltete Options-IDs, die Benutzer zu dieser Ersatzoption umleiten sollen. | -| `groupId` | Nein | `string` | Optionale Gruppen-ID zum Gruppieren verwandter Optionen. | -| `groupLabel` | Nein | `string` | Benutzerseitige Beschriftung für diese Gruppe. | -| `groupHint` | Nein | `string` | Kurzer Hilfetext für die Gruppe. | -| `optionKey` | Nein | `string` | Interner Optionsschlüssel für einfache Authentifizierungsabläufe mit einem einzelnen Flag. | -| `cliFlag` | Nein | `string` | Name des CLI-Flags, z. B. `--openrouter-api-key`. | -| `cliOption` | Nein | `string` | Vollständige Form der CLI-Option, z. B. `--openrouter-api-key `. | -| `cliDescription` | Nein | `string` | Beschreibung, die in der CLI-Hilfe verwendet wird. | -| `onboardingScopes` | Nein | `Array<"text-inference" \| "image-generation">` | In welchen Onboarding-Oberflächen diese Option erscheinen soll. Wenn das Feld fehlt, ist der Standardwert `["text-inference"]`. | +| Feld | Erforderlich | Typ | Bedeutung | +| --------------------- | ------------ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `provider` | Ja | `string` | Provider-ID, zu der diese Auswahl gehört. | +| `method` | Ja | `string` | Auth-Methoden-ID, an die weitergeleitet wird. | +| `choiceId` | Ja | `string` | Stabile Auth-Auswahl-ID, die von Onboarding- und CLI-Abläufen verwendet wird. | +| `choiceLabel` | Nein | `string` | Für Benutzer sichtbare Bezeichnung. Wenn ausgelassen, verwendet OpenClaw stattdessen `choiceId`. | +| `choiceHint` | Nein | `string` | Kurzer Hilfetext für den Auswähler. | +| `assistantPriority` | Nein | `number` | Niedrigere Werte werden in assistentengesteuerten interaktiven Auswählern früher sortiert. | +| `assistantVisibility` | Nein | `"visible"` \| `"manual-only"` | Blendet die Auswahl in Assistenten-Auswählern aus, erlaubt aber weiterhin die manuelle Auswahl per CLI. | +| `deprecatedChoiceIds` | Nein | `string[]` | Veraltete Auswahl-IDs, die Benutzer auf diese Ersatzauswahl umleiten sollen. | +| `groupId` | Nein | `string` | Optionale Gruppen-ID zum Gruppieren verwandter Auswahlmöglichkeiten. | +| `groupLabel` | Nein | `string` | Für Benutzer sichtbare Bezeichnung dieser Gruppe. | +| `groupHint` | Nein | `string` | Kurzer Hilfetext für die Gruppe. | +| `optionKey` | Nein | `string` | Interner Option-Key für einfache Auth-Abläufe mit nur einem Flag. | +| `cliFlag` | Nein | `string` | Name des CLI-Flags, zum Beispiel `--openrouter-api-key`. | +| `cliOption` | Nein | `string` | Vollständige CLI-Optionsform, zum Beispiel `--openrouter-api-key `. | +| `cliDescription` | Nein | `string` | Beschreibung, die in der CLI-Hilfe verwendet wird. | +| `onboardingScopes` | Nein | `Array<"text-inference" \| "image-generation">` | In welchen Onboarding-Oberflächen diese Auswahl erscheinen soll. Wenn ausgelassen, ist der Standardwert `["text-inference"]`. | -## Referenz zu `commandAliases` +## Referenz für `commandAliases` -Verwenden Sie `commandAliases`, wenn ein Plugin einen Laufzeit-Befehlsnamen besitzt, den Benutzer -versehentlich in `plugins.allow` eintragen oder als CLI-Befehl auf oberster Ebene ausführen möchten. OpenClaw -verwendet diese Metadaten für Diagnosen, ohne Laufzeitcode des Plugins zu importieren. +Verwende `commandAliases`, wenn ein Plugin einen Laufzeit-Befehlsnamen besitzt, den Benutzer versehentlich in `plugins.allow` eintragen oder als Root-CLI-Befehl ausführen könnten. OpenClaw verwendet diese Metadaten für Diagnosen, ohne Plugin-Laufzeitcode zu importieren. ```json { @@ -221,20 +213,16 @@ verwendet diese Metadaten für Diagnosen, ohne Laufzeitcode des Plugins zu impor | Feld | Erforderlich | Typ | Bedeutung | | ------------ | ------------ | ----------------- | ----------------------------------------------------------------------------- | | `name` | Ja | `string` | Befehlsname, der zu diesem Plugin gehört. | -| `kind` | Nein | `"runtime-slash"` | Kennzeichnet den Alias als Chat-Slash-Befehl statt als CLI-Befehl auf oberster Ebene. | -| `cliCommand` | Nein | `string` | Zugehöriger CLI-Befehl auf oberster Ebene, der für CLI-Operationen vorgeschlagen werden soll, falls vorhanden. | +| `kind` | Nein | `"runtime-slash"` | Kennzeichnet den Alias als Chat-Slash-Befehl statt als Root-CLI-Befehl. | +| `cliCommand` | Nein | `string` | Zugehöriger Root-CLI-Befehl, der für CLI-Operationen vorgeschlagen werden soll, falls vorhanden. | -## Referenz zu `activation` +## Referenz für `activation` -Verwenden Sie `activation`, wenn das Plugin kostengünstig deklarieren kann, welche Control-Plane-Ereignisse -es später aktivieren sollen. +Verwende `activation`, wenn das Plugin kostengünstig deklarieren kann, welche Control-Plane-Ereignisse es später aktivieren sollen. -## Referenz zu `qaRunners` +## Referenz für `qaRunners` -Verwenden Sie `qaRunners`, wenn ein Plugin einen oder mehrere Transport-Runner unter dem -gemeinsamen Stamm `openclaw qa` bereitstellt. Halten Sie diese Metadaten kostengünstig und statisch; die Plugin- -Laufzeit bleibt weiterhin für die tatsächliche CLI-Registrierung über eine schlanke -`runtime-api.ts`-Oberfläche zuständig, die `qaRunnerCliRegistrations` exportiert. +Verwende `qaRunners`, wenn ein Plugin einen oder mehrere Transport-Runner unterhalb des gemeinsamen `openclaw qa`-Roots beiträgt. Halte diese Metadaten kostengünstig und statisch; die eigentliche CLI-Registrierung bleibt weiterhin in der Plugin-Laufzeit über eine schlanke `runtime-api.ts`-Oberfläche, die `qaRunnerCliRegistrations` exportiert. ```json { @@ -247,16 +235,12 @@ Laufzeit bleibt weiterhin für die tatsächliche CLI-Registrierung über eine sc } ``` -| Feld | Erforderlich | Typ | Bedeutung | -| ------------- | ------------ | -------- | ---------------------------------------------------------------------- | -| `commandName` | Ja | `string` | Unterbefehl unter `openclaw qa`, zum Beispiel `matrix`. | +| Feld | Erforderlich | Typ | Bedeutung | +| ------------- | ------------ | -------- | --------------------------------------------------------------------- | +| `commandName` | Ja | `string` | Unterbefehl, der unter `openclaw qa` eingehängt wird, zum Beispiel `matrix`. | | `description` | Nein | `string` | Fallback-Hilfetext, der verwendet wird, wenn der gemeinsame Host einen Stub-Befehl benötigt. | -Dieser Block enthält nur Metadaten. Er registriert kein Laufzeitverhalten und -ersetzt nicht `register(...)`, `setupEntry` oder andere Laufzeit-/Plugin-Einstiegspunkte. -Aktuelle Verbraucher verwenden ihn als Eingrenzungshinweis vor einem breiteren Laden von Plugins, daher kosten -fehlende Aktivierungsmetadaten in der Regel nur Performance; sie sollten die Korrektheit -nicht verändern, solange die alten Fallbacks für Manifest-Besitzerschaft noch existieren. +Dieser Block enthält nur Metadaten. Er registriert kein Laufzeitverhalten und ersetzt nicht `register(...)`, `setupEntry` oder andere Laufzeit-/Plugin-Entrypoints. Aktuelle Verbraucher verwenden ihn als Eingrenzungshinweis vor breiterem Plugin-Laden; fehlende Aktivierungsmetadaten kosten daher meist nur Performance und sollten die Korrektheit nicht verändern, solange Fallbacks für veraltete Manifest-Besitzerschaft noch existieren. ```json { @@ -270,28 +254,23 @@ nicht verändern, solange die alten Fallbacks für Manifest-Besitzerschaft noch } ``` -| Feld | Erforderlich | Typ | Bedeutung | -| ---------------- | ------------ | ---------------------------------------------------- | ---------------------------------------------------------------------- | -| `onProviders` | Nein | `string[]` | Provider-IDs, die dieses Plugin aktivieren sollen, wenn sie angefordert werden. | -| `onCommands` | Nein | `string[]` | Befehls-IDs, die dieses Plugin aktivieren sollen. | -| `onChannels` | Nein | `string[]` | Kanal-IDs, die dieses Plugin aktivieren sollen. | -| `onRoutes` | Nein | `string[]` | Routenarten, die dieses Plugin aktivieren sollen. | -| `onCapabilities` | Nein | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Allgemeine Fähigkeitshinweise, die von der Control-Plane-Aktivierungsplanung verwendet werden. | +| Feld | Erforderlich | Typ | Bedeutung | +| ---------------- | ------------ | ---------------------------------------------------- | ---------------------------------------------------------------- | +| `onProviders` | Nein | `string[]` | Provider-IDs, die dieses Plugin bei Anforderung aktivieren sollen. | +| `onCommands` | Nein | `string[]` | Befehls-IDs, die dieses Plugin aktivieren sollen. | +| `onChannels` | Nein | `string[]` | Kanal-IDs, die dieses Plugin aktivieren sollen. | +| `onRoutes` | Nein | `string[]` | Routen-Arten, die dieses Plugin aktivieren sollen. | +| `onCapabilities` | Nein | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Breite Fähigkeitshinweise, die von der Control-Plane-Aktivierungsplanung verwendet werden. | Aktuelle Live-Verbraucher: -- befehlsgetriggerte CLI-Planung greift auf die alten Fallbacks - `commandAliases[].cliCommand` oder `commandAliases[].name` zurück -- kanalgetriggerte Setup-/Kanal-Planung greift auf die alte Besitzerschaft über `channels[]` - zurück, wenn explizite Kanal-Aktivierungsmetadaten fehlen -- providergetriggerte Setup-/Laufzeitplanung greift auf die alte - Besitzerschaft über `providers[]` und `cliBackends[]` auf oberster Ebene zurück, wenn explizite Provider- - Aktivierungsmetadaten fehlen +- befehlsgesteuerte CLI-Planung greift auf veraltete `commandAliases[].cliCommand` oder `commandAliases[].name` zurück +- kanalgetriggerte Setup-/Kanal-Planung greift auf veraltete Besitzerschaft über `channels[]` zurück, wenn explizite Kanal-Aktivierungsmetadaten fehlen +- providergetriggerte Setup-/Laufzeitplanung greift auf veraltete Besitzerschaft über `providers[]` und `cliBackends[]` auf oberster Ebene zurück, wenn explizite Provider-Aktivierungsmetadaten fehlen -## Referenz zu `setup` +## Referenz für `setup` -Verwenden Sie `setup`, wenn Setup- und Onboarding-Oberflächen kostengünstige plugin-eigene Metadaten -benötigen, bevor die Laufzeit geladen wird. +Verwende `setup`, wenn Setup- und Onboarding-Oberflächen kostengünstige plugin-eigene Metadaten benötigen, bevor die Laufzeit geladen wird. ```json { @@ -310,39 +289,30 @@ benötigen, bevor die Laufzeit geladen wird. } ``` -`cliBackends` auf oberster Ebene bleibt gültig und beschreibt weiterhin CLI-Inferenz- -Backends. `setup.cliBackends` ist die setupspezifische Deskriptoroberfläche für -Control-Plane-/Setup-Abläufe, die rein metadatenbasiert bleiben sollen. +`cliBackends` auf oberster Ebene bleibt gültig und beschreibt weiterhin CLI-Inferenz-Backends. `setup.cliBackends` ist die Setup-spezifische Deskriptor-Oberfläche für Control-Plane-/Setup-Abläufe, die reine Metadaten bleiben sollen. -Falls vorhanden, sind `setup.providers` und `setup.cliBackends` die bevorzugte -deskriptorbasierte Nachschlageoberfläche für die Setup-Erkennung. Wenn der Deskriptor nur -das Kandidaten-Plugin eingrenzt und das Setup weiterhin umfangreichere Laufzeit-Hooks zur Setup-Zeit -benötigt, setzen Sie `requiresRuntime: true` und lassen Sie `setup-api` als -Fallback-Ausführungspfad bestehen. +Wenn vorhanden, sind `setup.providers` und `setup.cliBackends` die bevorzugte Deskriptor-First-Lookup-Oberfläche für die Setup-Erkennung. Wenn der Deskriptor das Kandidaten-Plugin nur eingrenzt und das Setup weiterhin umfangreichere Laufzeit-Hooks zur Setup-Zeit benötigt, setze `requiresRuntime: true` und lasse `setup-api` als Fallback-Ausführungspfad bestehen. -Da die Setup-Nachschlageoperation plugin-eigenen `setup-api`-Code ausführen kann, müssen normalisierte -Werte in `setup.providers[].id` und `setup.cliBackends[]` über alle -erkannten Plugins hinweg eindeutig bleiben. Mehrdeutige Besitzerschaft schlägt sicher fehl, anstatt anhand der -Erkennungsreihenfolge einen Gewinner auszuwählen. +Da die Setup-Suche plugin-eigenen `setup-api`-Code ausführen kann, müssen normalisierte Werte in `setup.providers[].id` und `setup.cliBackends[]` über alle erkannten Plugins hinweg eindeutig bleiben. Mehrdeutige Besitzerschaft schlägt fail-closed fehl, anstatt anhand der Erkennungsreihenfolge einen Gewinner auszuwählen. -### Referenz zu `setup.providers` +### Referenz für `setup.providers` -| Feld | Erforderlich | Typ | Bedeutung | -| ------------- | ------------ | ---------- | ----------------------------------------------------------------------------------------- | -| `id` | Ja | `string` | Provider-ID, die während des Setups oder Onboardings bereitgestellt wird. Halten Sie normalisierte IDs global eindeutig. | -| `authMethods` | Nein | `string[]` | Setup-/Authentifizierungsmethoden-IDs, die dieser Provider unterstützt, ohne die vollständige Laufzeit zu laden. | +| Feld | Erforderlich | Typ | Bedeutung | +| ------------- | ------------ | ---------- | ------------------------------------------------------------------------------------------ | +| `id` | Ja | `string` | Provider-ID, die während Setup oder Onboarding bereitgestellt wird. Halte normalisierte IDs global eindeutig. | +| `authMethods` | Nein | `string[]` | Setup-/Auth-Methoden-IDs, die dieser Provider unterstützt, ohne die vollständige Laufzeit zu laden. | | `envVars` | Nein | `string[]` | Umgebungsvariablen, die generische Setup-/Status-Oberflächen prüfen können, bevor die Plugin-Laufzeit geladen wird. | ### `setup`-Felder -| Feld | Erforderlich | Typ | Bedeutung | -| ------------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------- | -| `providers` | Nein | `object[]` | Provider-Setup-Deskriptoren, die während Setup und Onboarding bereitgestellt werden. | -| `cliBackends` | Nein | `string[]` | Backend-IDs zur Setup-Zeit, die für die deskriptorbasierte Setup-Nachschlageoperation verwendet werden. Halten Sie normalisierte IDs global eindeutig. | -| `configMigrations` | Nein | `string[]` | IDs von Konfigurationsmigrationen, die der Setup-Oberfläche dieses Plugins gehören. | -| `requiresRuntime` | Nein | `boolean` | Ob das Setup nach der Deskriptor-Nachschlageoperation weiterhin die Ausführung von `setup-api` benötigt. | +| Feld | Erforderlich | Typ | Bedeutung | +| ------------------ | ------------ | ---------- | ------------------------------------------------------------------------------------------------- | +| `providers` | Nein | `object[]` | Provider-Setup-Deskriptoren, die während Setup und Onboarding bereitgestellt werden. | +| `cliBackends` | Nein | `string[]` | Backend-IDs zur Setup-Zeit, die für Deskriptor-First-Setup-Lookups verwendet werden. Halte normalisierte IDs global eindeutig. | +| `configMigrations` | Nein | `string[]` | IDs von Konfigurationsmigrationen, die der Setup-Oberfläche dieses Plugins gehören. | +| `requiresRuntime` | Nein | `boolean` | Ob das Setup nach dem Deskriptor-Lookup weiterhin eine `setup-api`-Ausführung benötigt. | -## Referenz zu `uiHints` +## Referenz für `uiHints` `uiHints` ist eine Zuordnung von Konfigurationsfeldnamen zu kleinen Rendering-Hinweisen. @@ -361,19 +331,18 @@ Erkennungsreihenfolge einen Gewinner auszuwählen. Jeder Feldhinweis kann Folgendes enthalten: -| Feld | Typ | Bedeutung | -| ------------- | ---------- | ----------------------------------------- | -| `label` | `string` | Benutzerseitige Feldbeschriftung. | -| `help` | `string` | Kurzer Hilfetext. | -| `tags` | `string[]` | Optionale UI-Tags. | -| `advanced` | `boolean` | Kennzeichnet das Feld als erweitert. | +| Feld | Typ | Bedeutung | +| ------------- | ---------- | ------------------------------------------ | +| `label` | `string` | Für Benutzer sichtbare Feldbezeichnung. | +| `help` | `string` | Kurzer Hilfetext. | +| `tags` | `string[]` | Optionale UI-Tags. | +| `advanced` | `boolean` | Kennzeichnet das Feld als erweitert. | | `sensitive` | `boolean` | Kennzeichnet das Feld als geheim oder sensibel. | -| `placeholder` | `string` | Platzhaltertext für Formulareingaben. | +| `placeholder` | `string` | Platzhaltertext für Formulareingaben. | -## Referenz zu `contracts` +## Referenz für `contracts` -Verwenden Sie `contracts` nur für statische Metadaten zur Fähigkeitsbesitzerschaft, die OpenClaw -lesen kann, ohne die Plugin-Laufzeit zu importieren. +Verwende `contracts` nur für statische Metadaten zur Besitzerschaft von Fähigkeiten, die OpenClaw lesen kann, ohne die Plugin-Laufzeit zu importieren. ```json { @@ -393,22 +362,21 @@ lesen kann, ohne die Plugin-Laufzeit zu importieren. Jede Liste ist optional: -| Feld | Typ | Bedeutung | -| -------------------------------- | ---------- | --------------------------------------------------------------------- | -| `speechProviders` | `string[]` | Speech-Provider-IDs, die diesem Plugin gehören. | -| `realtimeTranscriptionProviders` | `string[]` | IDs von Realtime-Transkriptions-Providern, die diesem Plugin gehören. | -| `realtimeVoiceProviders` | `string[]` | IDs von Realtime-Voice-Providern, die diesem Plugin gehören. | -| `mediaUnderstandingProviders` | `string[]` | IDs von Media-Understanding-Providern, die diesem Plugin gehören. | -| `imageGenerationProviders` | `string[]` | IDs von Bildgenerierungs-Providern, die diesem Plugin gehören. | -| `videoGenerationProviders` | `string[]` | IDs von Videogenerierungs-Providern, die diesem Plugin gehören. | -| `webFetchProviders` | `string[]` | IDs von Web-Fetch-Providern, die diesem Plugin gehören. | -| `webSearchProviders` | `string[]` | IDs von Websuch-Providern, die diesem Plugin gehören. | +| Feld | Typ | Bedeutung | +| -------------------------------- | ---------- | ------------------------------------------------------------------- | +| `speechProviders` | `string[]` | IDs von Sprach-Providern, die diesem Plugin gehören. | +| `realtimeTranscriptionProviders` | `string[]` | IDs von Providern für Echtzeit-Transkription, die diesem Plugin gehören. | +| `realtimeVoiceProviders` | `string[]` | IDs von Providern für Echtzeit-Sprachfunktionen, die diesem Plugin gehören. | +| `mediaUnderstandingProviders` | `string[]` | IDs von Providern für Media Understanding, die diesem Plugin gehören. | +| `imageGenerationProviders` | `string[]` | IDs von Bildgenerierungs-Providern, die diesem Plugin gehören. | +| `videoGenerationProviders` | `string[]` | IDs von Videogenerierungs-Providern, die diesem Plugin gehören. | +| `webFetchProviders` | `string[]` | IDs von Web-Fetch-Providern, die diesem Plugin gehören. | +| `webSearchProviders` | `string[]` | IDs von Web-Such-Providern, die diesem Plugin gehören. | | `tools` | `string[]` | Namen von Agent-Tools, die diesem Plugin für gebündelte Vertragsprüfungen gehören. | -## Referenz zu `channelConfigs` +## Referenz für `channelConfigs` -Verwenden Sie `channelConfigs`, wenn ein Kanal-Plugin kostengünstige Konfigurationsmetadaten benötigt, bevor -die Laufzeit geladen wird. +Verwende `channelConfigs`, wenn ein Kanal-Plugin kostengünstige Konfigurationsmetadaten benötigt, bevor die Laufzeit geladen wird. ```json { @@ -437,19 +405,17 @@ die Laufzeit geladen wird. Jeder Kanaleintrag kann Folgendes enthalten: -| Feld | Typ | Bedeutung | -| ------------- | ------------------------ | ----------------------------------------------------------------------------------------- | +| Feld | Typ | Bedeutung | +| ------------- | ------------------------ | ------------------------------------------------------------------------------------------ | | `schema` | `object` | JSON-Schema für `channels.`. Für jeden deklarierten Kanal-Konfigurationseintrag erforderlich. | -| `uiHints` | `Record` | Optionale UI-Beschriftungen/Platzhalter/Sensitivitätshinweise für diesen Abschnitt der Kanalkonfiguration. | -| `label` | `string` | Kanalbeschriftung, die in Auswahl- und Prüfoberflächen zusammengeführt wird, wenn Laufzeitmetadaten noch nicht bereit sind. | -| `description` | `string` | Kurze Kanalbeschreibung für Prüf- und Katalogoberflächen. | +| `uiHints` | `Record` | Optionale UI-Beschriftungen/Platzhalter/Sensitivitätshinweise für diesen Kanal-Konfigurationsabschnitt. | +| `label` | `string` | Kanalbezeichnung, die in Auswähl- und Inspektionsoberflächen zusammengeführt wird, wenn Laufzeitmetadaten noch nicht bereit sind. | +| `description` | `string` | Kurze Kanalbeschreibung für Inspektions- und Katalogoberflächen. | | `preferOver` | `string[]` | Veraltete oder niedriger priorisierte Plugin-IDs, die dieser Kanal in Auswahloberflächen übertreffen soll. | -## Referenz zu `modelSupport` +## Referenz für `modelSupport` -Verwenden Sie `modelSupport`, wenn OpenClaw Ihr Provider-Plugin aus -Kurzschrift-Modell-IDs wie `gpt-5.4` oder `claude-sonnet-4.6` ableiten soll, bevor die Plugin-Laufzeit -geladen wird. +Verwende `modelSupport`, wenn OpenClaw dein Provider-Plugin aus Kurzform-Modell-IDs wie `gpt-5.4` oder `claude-sonnet-4.6` ableiten soll, bevor die Plugin-Laufzeit geladen wird. ```json { @@ -460,76 +426,60 @@ geladen wird. } ``` -OpenClaw wendet folgende Rangfolge an: +OpenClaw verwendet dabei diese Rangfolge: -- explizite Referenzen im Format `provider/model` verwenden die Manifest-Metadaten des besitzenden `providers` +- explizite `provider/model`-Referenzen verwenden die Manifest-Metadaten des besitzenden `providers` - `modelPatterns` haben Vorrang vor `modelPrefixes` -- wenn ein nicht gebündeltes Plugin und ein gebündeltes Plugin beide passen, gewinnt das nicht gebündelte - Plugin +- wenn sowohl ein nicht gebündeltes Plugin als auch ein gebündeltes Plugin übereinstimmen, gewinnt das nicht gebündelte Plugin - verbleibende Mehrdeutigkeiten werden ignoriert, bis der Benutzer oder die Konfiguration einen Provider angibt Felder: -| Feld | Typ | Bedeutung | -| --------------- | ---------- | ------------------------------------------------------------------------------ | -| `modelPrefixes` | `string[]` | Präfixe, die mit `startsWith` gegen Kurzschrift-Modell-IDs abgeglichen werden. | -| `modelPatterns` | `string[]` | Regex-Quellen, die nach dem Entfernen von Profilsuffixen gegen Kurzschrift-Modell-IDs abgeglichen werden. | +| Feld | Typ | Bedeutung | +| --------------- | ---------- | ------------------------------------------------------------------------------------- | +| `modelPrefixes` | `string[]` | Präfixe, die mit `startsWith` mit Kurzform-Modell-IDs abgeglichen werden. | +| `modelPatterns` | `string[]` | Regex-Quellen, die nach Entfernen des Profil-Suffixes mit Kurzform-Modell-IDs abgeglichen werden. | -Veraltete Fähigkeiten-Schlüssel auf oberster Ebene sind deprecated. Verwenden Sie `openclaw doctor --fix`, um -`speechProviders`, `realtimeTranscriptionProviders`, -`realtimeVoiceProviders`, `mediaUnderstandingProviders`, -`imageGenerationProviders`, `videoGenerationProviders`, -`webFetchProviders` und `webSearchProviders` unter `contracts` zu -verschieben; das normale Laden von Manifesten behandelt diese Felder auf oberster Ebene nicht mehr als -Fähigkeitsbesitzerschaft. +Veraltete Capability-Schlüssel auf oberster Ebene sind deprecated. Verwende `openclaw doctor --fix`, um `speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders` und `webSearchProviders` unter `contracts` zu verschieben; das normale Laden des Manifests behandelt diese Felder auf oberster Ebene nicht mehr als Besitzerschaft von Fähigkeiten. ## Manifest im Vergleich zu `package.json` Die beiden Dateien erfüllen unterschiedliche Aufgaben: -| Datei | Verwendung | -| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| `openclaw.plugin.json` | Erkennung, Konfigurationsvalidierung, Metadaten für Authentifizierungsoptionen und UI-Hinweise, die vorhanden sein müssen, bevor Plugin-Code ausgeführt wird | -| `package.json` | npm-Metadaten, Abhängigkeitsinstallation und der Block `openclaw`, der für Einstiegspunkte, Installationssteuerung, Setup oder Katalogmetadaten verwendet wird | +| Datei | Verwende sie für | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `openclaw.plugin.json` | Erkennung, Konfigurationsvalidierung, Metadaten zu Auth-Auswahlmöglichkeiten und UI-Hinweise, die vorhanden sein müssen, bevor Plugin-Code ausgeführt wird | +| `package.json` | npm-Metadaten, Abhängigkeitsinstallation und den `openclaw`-Block, der für Entrypoints, Installations-Gating, Setup oder Katalogmetadaten verwendet wird | -Wenn Sie unsicher sind, wohin ein Metadatenelement gehört, verwenden Sie diese Regel: +Wenn du dir unsicher bist, wohin ein Metadatum gehört, verwende diese Regel: -- wenn OpenClaw es wissen muss, bevor Plugin-Code geladen wird, gehört es in `openclaw.plugin.json` -- wenn es um Packaging, Einstiegsdateien oder das npm-Installationsverhalten geht, gehört es in `package.json` +- wenn OpenClaw es kennen muss, bevor Plugin-Code geladen wird, gehört es in `openclaw.plugin.json` +- wenn es um Packaging, Entry-Dateien oder das npm-Installationsverhalten geht, gehört es in `package.json` ### `package.json`-Felder, die die Erkennung beeinflussen -Einige Metadaten für Plugins vor der Laufzeit liegen absichtlich in `package.json` unter dem Block -`openclaw` statt in `openclaw.plugin.json`. +Einige Plugin-Metadaten vor der Laufzeit befinden sich absichtlich in `package.json` unter dem `openclaw`-Block statt in `openclaw.plugin.json`. Wichtige Beispiele: -| Feld | Bedeutung | -| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| `openclaw.extensions` | Deklariert native Plugin-Einstiegspunkte. | -| `openclaw.setupEntry` | Leichtgewichtiger Einstiegspunkt nur für das Setup, der während des Onboardings und beim verzögerten Kanalstart verwendet wird. | -| `openclaw.channel` | Kostengünstige Metadaten für den Kanalkatalog wie Beschriftungen, Dokumentationspfade, Aliase und Auswahltexte. | -| `openclaw.channel.configuredState` | Kostengünstige Metadaten für den Prüfer des konfigurierten Zustands, der die Frage „existiert bereits ein nur über Umgebungsvariablen eingerichtetes Setup?“ beantworten kann, ohne die vollständige Kanal-Laufzeit zu laden. | -| `openclaw.channel.persistedAuthState` | Kostengünstige Metadaten für den Prüfer des persistenten Authentifizierungszustands, der die Frage „ist bereits irgendwo eine Anmeldung vorhanden?“ beantworten kann, ohne die vollständige Kanal-Laufzeit zu laden. | -| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Installations-/Aktualisierungshinweise für gebündelte und extern veröffentlichte Plugins. | -| `openclaw.install.defaultChoice` | Bevorzugter Installationspfad, wenn mehrere Installationsquellen verfügbar sind. | -| `openclaw.install.minHostVersion` | Minimal unterstützte OpenClaw-Host-Version unter Verwendung einer SemVer-Untergrenze wie `>=2026.3.22`. | -| `openclaw.install.allowInvalidConfigRecovery` | Erlaubt einen eng begrenzten Wiederherstellungspfad zur Neuinstallation gebündelter Plugins, wenn die Konfiguration ungültig ist. | -| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Ermöglicht, dass Setup-only-Kanaloberflächen vor dem vollständigen Kanal-Plugin beim Start geladen werden. | +| Feld | Bedeutung | +| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `openclaw.extensions` | Deklariert native Plugin-Entrypoints. | +| `openclaw.setupEntry` | Leichtgewichtiger Setup-only-Entrypoint, der während Onboarding und verzögertem Kanalstart verwendet wird. | +| `openclaw.channel` | Kostengünstige Kanal-Katalogmetadaten wie Bezeichnungen, Doku-Pfade, Aliasse und Auswahltexte. | +| `openclaw.channel.configuredState` | Leichtgewichtige Metadaten für einen Checker des konfigurierten Zustands, der „existiert bereits ein nur per env eingerichtetes Setup?“ beantworten kann, ohne die vollständige Kanal-Laufzeit zu laden. | +| `openclaw.channel.persistedAuthState` | Leichtgewichtige Metadaten für einen Checker persistierter Auth-Zustände, der „ist bereits irgendwo angemeldet?“ beantworten kann, ohne die vollständige Kanal-Laufzeit zu laden. | +| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Installations-/Update-Hinweise für gebündelte und extern veröffentlichte Plugins. | +| `openclaw.install.defaultChoice` | Bevorzugter Installationspfad, wenn mehrere Installationsquellen verfügbar sind. | +| `openclaw.install.minHostVersion` | Minimale unterstützte OpenClaw-Host-Version, unter Verwendung einer Semver-Untergrenze wie `>=2026.3.22`. | +| `openclaw.install.allowInvalidConfigRecovery` | Erlaubt einen eng begrenzten Wiederherstellungspfad zur Neuinstallation gebündelter Plugins, wenn die Konfiguration ungültig ist. | +| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Ermöglicht, dass Setup-only-Kanaloberflächen beim Start vor dem vollständigen Kanal-Plugin geladen werden. | -`openclaw.install.minHostVersion` wird während der Installation und beim Laden der Manifest- -Registry erzwungen. Ungültige Werte werden abgelehnt; neuere, aber gültige Werte überspringen das -Plugin auf älteren Hosts. +`openclaw.install.minHostVersion` wird während der Installation und beim Laden der Manifest-Registry erzwungen. Ungültige Werte werden abgelehnt; neuere, aber gültige Werte überspringen das Plugin auf älteren Hosts. -`openclaw.install.allowInvalidConfigRecovery` ist absichtlich eng begrenzt. Es -macht nicht beliebige fehlerhafte Konfigurationen installierbar. Derzeit erlaubt es Installations- -Abläufen nur, sich von bestimmten veralteten Upgrade-Fehlern gebündelter Plugins zu erholen, etwa einem -fehlenden Pfad zu einem gebündelten Plugin oder einem veralteten Eintrag `channels.` für dasselbe -gebündelte Plugin. Nicht zusammenhängende Konfigurationsfehler blockieren die Installation weiterhin und schicken Operatoren -zu `openclaw doctor --fix`. +`openclaw.install.allowInvalidConfigRecovery` ist absichtlich eng begrenzt. Es macht nicht beliebige fehlerhafte Konfigurationen installierbar. Derzeit erlaubt es Installationsabläufen nur, sich von bestimmten veralteten Upgrade-Fehlern gebündelter Plugins zu erholen, etwa einem fehlenden gebündelten Plugin-Pfad oder einem veralteten `channels.`-Eintrag für dasselbe gebündelte Plugin. Nicht zusammenhängende Konfigurationsfehler blockieren weiterhin die Installation und verweisen Betreiber auf `openclaw doctor --fix`. -`openclaw.channel.persistedAuthState` ist Paketmetadaten für ein kleines -Prüfmodul: +`openclaw.channel.persistedAuthState` ist Paketmetadaten für ein kleines Checker-Modul: ```json { @@ -545,13 +495,9 @@ Prüfmodul: } ``` -Verwenden Sie es, wenn Setup-, Doctor- oder Prüfabläufe des konfigurierten Zustands eine kostengünstige Ja/Nein- -Authentifizierungsprüfung benötigen, bevor das vollständige Kanal-Plugin geladen wird. Das Zielexportobjekt sollte eine kleine -Funktion sein, die nur den persistenten Zustand liest; leiten Sie es nicht über das vollständige -Kanal-Laufzeit-Barrel. +Verwende dies, wenn Setup-, Doctor- oder Abläufe für den konfigurierten Zustand eine kostengünstige Ja/Nein-Auth-Prüfung benötigen, bevor das vollständige Kanal-Plugin geladen wird. Das Ziel-Export sollte eine kleine Funktion sein, die nur persistierten Zustand liest; führe sie nicht über das vollständige Kanal-Laufzeit-Barrel. -`openclaw.channel.configuredState` folgt derselben Form für kostengünstige -Prüfungen eines nur über Umgebungsvariablen konfigurierten Zustands: +`openclaw.channel.configuredState` folgt derselben Form für kostengünstige Prüfungen eines nur per env konfigurierten Zustands: ```json { @@ -567,65 +513,46 @@ Prüfungen eines nur über Umgebungsvariablen konfigurierten Zustands: } ``` -Verwenden Sie es, wenn ein Kanal den konfigurierten Zustand anhand von Umgebungsvariablen oder anderen kleinen -Nicht-Laufzeit-Eingaben beantworten kann. Wenn die Prüfung die vollständige Konfigurationsauflösung oder die echte -Kanal-Laufzeit benötigt, belassen Sie diese Logik stattdessen im Hook `config.hasConfiguredState` -des Plugins. +Verwende dies, wenn ein Kanal den konfigurierten Zustand aus env oder anderen kleinen Nicht-Laufzeit-Eingaben beantworten kann. Wenn die Prüfung vollständige Konfigurationsauflösung oder die echte Kanal-Laufzeit benötigt, belasse diese Logik stattdessen im Plugin-Hook `config.hasConfiguredState`. ## JSON-Schema-Anforderungen - **Jedes Plugin muss ein JSON-Schema bereitstellen**, auch wenn es keine Konfiguration akzeptiert. - Ein leeres Schema ist zulässig, zum Beispiel `{ "type": "object", "additionalProperties": false }`. -- Schemas werden beim Lesen/Schreiben der Konfiguration validiert, nicht zur Laufzeit. +- Schemata werden beim Lesen/Schreiben der Konfiguration validiert, nicht zur Laufzeit. ## Validierungsverhalten -- Unbekannte Schlüssel in `channels.*` sind **Fehler**, es sei denn, die Kanal-ID wird von - einem Plugin-Manifest deklariert. -- `plugins.entries.`, `plugins.allow`, `plugins.deny` und `plugins.slots.*` - müssen auf **erkennbare** Plugin-IDs verweisen. Unbekannte IDs sind **Fehler**. -- Wenn ein Plugin installiert ist, aber ein fehlerhaftes oder fehlendes Manifest oder Schema hat, - schlägt die Validierung fehl und Doctor meldet den Plugin-Fehler. -- Wenn eine Plugin-Konfiguration vorhanden ist, das Plugin aber **deaktiviert** ist, bleibt die Konfiguration erhalten und - in Doctor sowie in den Logs wird eine **Warnung** angezeigt. +- Unbekannte `channels.*`-Schlüssel sind **Fehler**, es sei denn, die Kanal-ID ist durch ein Plugin-Manifest deklariert. +- `plugins.entries.`, `plugins.allow`, `plugins.deny` und `plugins.slots.*` müssen auf **erkennbare** Plugin-IDs verweisen. Unbekannte IDs sind **Fehler**. +- Wenn ein Plugin installiert ist, aber ein fehlerhaftes oder fehlendes Manifest oder Schema hat, schlägt die Validierung fehl und Doctor meldet den Plugin-Fehler. +- Wenn eine Plugin-Konfiguration existiert, das Plugin aber **deaktiviert** ist, bleibt die Konfiguration erhalten und in Doctor sowie den Logs wird eine **Warnung** angezeigt. -Die vollständige `plugins.*`-Schema-Referenz finden Sie unter [Konfigurationsreferenz](/de/gateway/configuration). +Siehe [Konfigurationsreferenz](/de/gateway/configuration) für das vollständige `plugins.*`-Schema. ## Hinweise -- Das Manifest ist **für native OpenClaw-Plugins erforderlich**, einschließlich lokaler Dateisystem-Ladevorgänge. -- Die Laufzeit lädt das Plugin-Modul weiterhin separat; das Manifest dient nur - der Erkennung und Validierung. -- Native Manifeste werden mit JSON5 geparst, daher werden Kommentare, nachgestellte Kommas und - nicht in Anführungszeichen gesetzte Schlüssel akzeptiert, solange der endgültige Wert weiterhin ein Objekt ist. -- Nur dokumentierte Manifestfelder werden vom Manifest-Loader gelesen. Vermeiden Sie es, - hier benutzerdefinierte Schlüssel auf oberster Ebene hinzuzufügen. -- `providerAuthEnvVars` ist der kostengünstige Metadatenpfad für Authentifizierungsprüfungen, die Validierung von - Umgebungsmarkern und ähnliche Oberflächen zur Provider-Authentifizierung, die die Plugin- - Laufzeit nicht starten sollten, nur um Umgebungsvariablennamen zu prüfen. -- `providerAuthAliases` ermöglicht es Provider-Varianten, die - Authentifizierungs-Umgebungsvariablen, Authentifizierungsprofile, konfigurationsgestützte Authentifizierung und die - Onboarding-Option für API-Schlüssel eines anderen Providers wiederzuverwenden, ohne diese Beziehung im Core fest zu codieren. -- `channelEnvVars` ist der kostengünstige Metadatenpfad für Shell-Umgebungsfallbacks, Setup- - Aufforderungen und ähnliche Kanaloberflächen, die die Plugin-Laufzeit nicht starten sollten, - nur um Umgebungsvariablennamen zu prüfen. -- `providerAuthChoices` ist der kostengünstige Metadatenpfad für Auswahlen von Authentifizierungsoptionen, - die Auflösung von `--auth-choice`, die Zuordnung bevorzugter Provider und die einfache Registrierung von - CLI-Flags für das Onboarding, bevor die Provider-Laufzeit geladen wird. Informationen zu Laufzeit- - Wizard-Metadaten, die Provider-Code erfordern, finden Sie unter - [Provider-Laufzeit-Hooks](/de/plugins/architecture#provider-runtime-hooks). -- Exklusive Plugin-Arten werden über `plugins.slots.*` ausgewählt. - - `kind: "memory"` wird durch `plugins.slots.memory` ausgewählt. - - `kind: "context-engine"` wird durch `plugins.slots.contextEngine` - ausgewählt (Standard: eingebautes `legacy`). -- `channels`, `providers`, `cliBackends` und `skills` können weggelassen werden, wenn ein - Plugin sie nicht benötigt. -- Wenn Ihr Plugin von nativen Modulen abhängt, dokumentieren Sie die Build-Schritte und alle - Anforderungen an Zulassungslisten des Paketmanagers (zum Beispiel pnpm `allow-build-scripts` - - `pnpm rebuild `). +- Das Manifest ist **für native OpenClaw Plugins erforderlich**, einschließlich lokaler Dateisystem-Ladevorgänge. +- Die Laufzeit lädt das Plugin-Modul weiterhin separat; das Manifest dient nur der Erkennung und Validierung. +- Native Manifeste werden mit JSON5 geparst, daher sind Kommentare, nachgestellte Kommas und Schlüssel ohne Anführungszeichen zulässig, solange der endgültige Wert weiterhin ein Objekt ist. +- Nur dokumentierte Manifest-Felder werden vom Manifest-Loader gelesen. Vermeide es, hier benutzerdefinierte Schlüssel auf oberster Ebene hinzuzufügen. +- `providerAuthEnvVars` ist der kostengünstige Metadatenpfad für Auth-Prüfungen, die Validierung von env-Markern und ähnliche Provider-Auth-Oberflächen, die die Plugin-Laufzeit nicht starten sollten, nur um env-Namen zu prüfen. +- `providerAuthAliases` ermöglicht es Provider-Varianten, die Auth-Umgebungsvariablen, Auth-Profile, konfigurationsgestützte Authentifizierung und die API-Key-Onboarding-Auswahl eines anderen Providers wiederzuverwenden, ohne diese Beziehung im Core fest zu codieren. +- `providerEndpoints` ermöglicht es Provider-Plugins, einfache Metadaten zum Abgleich von Endpoint-Host/`baseUrl` zu besitzen. Verwende es nur für Endpoint-Klassen, die der Core bereits unterstützt; das Laufzeitverhalten bleibt weiterhin im Plugin. +- `syntheticAuthRefs` ist der kostengünstige Metadatenpfad für plugin-eigene Synthetic-Auth-Hooks, die für die kalte Modellerkennung sichtbar sein müssen, bevor die Laufzeit-Registry existiert. Liste nur Referenzen auf, deren Laufzeit-Provider oder CLI-Backend tatsächlich `resolveSyntheticAuth` implementiert. +- `nonSecretAuthMarkers` ist der kostengünstige Metadatenpfad für Platzhalter-API-Schlüssel, die einem gebündelten Plugin gehören, etwa Marker für lokale, OAuth- oder ambiente Anmeldedaten. Der Core behandelt diese für die Anzeige von Authentifizierung und Secret-Audits als nicht geheim, ohne den besitzenden Provider fest zu codieren. +- `channelEnvVars` ist der kostengünstige Metadatenpfad für Shell-env-Fallback, Setup-Prompts und ähnliche Kanal-Oberflächen, die die Plugin-Laufzeit nicht starten sollten, nur um env-Namen zu prüfen. +- `providerAuthChoices` ist der kostengünstige Metadatenpfad für Auth-Auswahl-Auswähler, die Auflösung von `--auth-choice`, bevorzugte Provider-Zuordnung und die einfache CLI-Flag-Registrierung für das Onboarding, bevor die Provider-Laufzeit geladen wird. Für Laufzeit-Wizard-Metadaten, die Provider-Code erfordern, siehe [Provider-Laufzeit-Hooks](/de/plugins/architecture#provider-runtime-hooks). +- Exklusive Plugin-Typen werden über `plugins.slots.*` ausgewählt. + - `kind: "memory"` wird über `plugins.slots.memory` ausgewählt. + - `kind: "context-engine"` wird über `plugins.slots.contextEngine` ausgewählt + (Standard: eingebautes `legacy`). +- `channels`, `providers`, `cliBackends` und `skills` können weggelassen werden, wenn ein Plugin sie nicht benötigt. +- Wenn dein Plugin von nativen Modulen abhängt, dokumentiere die Build-Schritte und alle Anforderungen an Allowlists des Paketmanagers, zum Beispiel pnpm `allow-build-scripts` + - `pnpm rebuild `. ## Verwandt -- [Plugins erstellen](/de/plugins/building-plugins) — Erste Schritte mit Plugins +- [Plugins erstellen](/de/plugins/building-plugins) — erste Schritte mit Plugins - [Plugin-Architektur](/de/plugins/architecture) — interne Architektur -- [SDK-Überblick](/de/plugins/sdk-overview) — Referenz zum Plugin-SDK +- [SDK-Übersicht](/de/plugins/sdk-overview) — Referenz zum Plugin-SDK diff --git a/docs/de/plugins/sdk-migration.md b/docs/de/plugins/sdk-migration.md index 81aa7e34e..ae12f0dcb 100644 --- a/docs/de/plugins/sdk-migration.md +++ b/docs/de/plugins/sdk-migration.md @@ -3,31 +3,31 @@ read_when: - Sie sehen die Warnung `OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED` - Sie sehen die Warnung `OPENCLAW_EXTENSION_API_DEPRECATED` - Sie aktualisieren ein Plugin auf die moderne Plugin-Architektur - - Sie warten ein externes OpenClaw Plugin + - Sie pflegen ein externes OpenClaw Plugin sidebarTitle: Migrate to SDK summary: Migrieren Sie von der veralteten Abwärtskompatibilitätsschicht zum modernen Plugin SDK -title: Migration des Plugin SDK +title: Plugin SDK-Migration x-i18n: - generated_at: "2026-04-17T06:22:53Z" + generated_at: "2026-04-19T01:11:10Z" model: gpt-5.4 provider: openai - source_hash: f0283f949eec358a12a0709db846cde2a1509f28e5c60db6e563cb8a540b979d + source_hash: e0df202ed35b3e72bfec1d23201d0e83294fe09cec2caf6e276835098491a899 source_path: plugins/sdk-migration.md workflow: 15 --- -# Migration des Plugin SDK +# Plugin SDK-Migration -OpenClaw ist von einer breiten Abwärtskompatibilitätsschicht zu einer modernen Plugin-Architektur mit fokussierten, dokumentierten Imports übergegangen. Wenn Ihr Plugin vor der neuen Architektur erstellt wurde, hilft Ihnen dieser Leitfaden bei der Migration. +OpenClaw ist von einer breiten Abwärtskompatibilitätsschicht zu einer modernen Plugin-Architektur mit gezielten, dokumentierten Imports übergegangen. Wenn Ihr Plugin vor der neuen Architektur erstellt wurde, hilft Ihnen dieser Leitfaden bei der Migration. ## Was sich ändert -Das alte Plugin-System stellte zwei weit offene Oberflächen bereit, über die Plugins alles importieren konnten, was sie von einem einzigen Einstiegspunkt aus benötigten: +Das alte Plugin-System stellte zwei weit offene Oberflächen bereit, über die Plugins alles importieren konnten, was sie über einen einzigen Einstiegspunkt benötigten: -- **`openclaw/plugin-sdk/compat`** — ein einzelner Import, der Dutzende von Hilfsfunktionen erneut exportierte. Er wurde eingeführt, um ältere hook-basierte Plugins funktionsfähig zu halten, während die neue Plugin-Architektur aufgebaut wurde. +- **`openclaw/plugin-sdk/compat`** — ein einzelner Import, der Dutzende von Hilfsfunktionen re-exportierte. Er wurde eingeführt, um ältere hook-basierte Plugins weiter funktionsfähig zu halten, während die neue Plugin-Architektur entwickelt wurde. - **`openclaw/extension-api`** — eine Brücke, die Plugins direkten Zugriff auf hostseitige Hilfsfunktionen wie den eingebetteten Agent-Runner gab. -Beide Oberflächen sind jetzt **veraltet**. Sie funktionieren zur Laufzeit noch, aber neue Plugins dürfen sie nicht verwenden, und bestehende Plugins sollten migrieren, bevor sie mit der nächsten Hauptversion entfernt werden. +Beide Oberflächen sind jetzt **veraltet**. Sie funktionieren zur Laufzeit weiterhin, aber neue Plugins dürfen sie nicht verwenden, und bestehende Plugins sollten vor der nächsten Hauptversion migrieren, die sie entfernt. Die Abwärtskompatibilitätsschicht wird in einer zukünftigen Hauptversion entfernt. @@ -39,50 +39,50 @@ Beide Oberflächen sind jetzt **veraltet**. Sie funktionieren zur Laufzeit noch, Der alte Ansatz verursachte Probleme: - **Langsamer Start** — das Importieren einer Hilfsfunktion lud Dutzende nicht zusammenhängender Module -- **Zirkuläre Abhängigkeiten** — breite Re-Exports machten es leicht, Import-Zyklen zu erzeugen +- **Zirkuläre Abhängigkeiten** — breite Re-Exports machten es leicht, Importzyklen zu erzeugen - **Unklare API-Oberfläche** — es gab keine Möglichkeit zu erkennen, welche Exporte stabil und welche intern waren -Das moderne Plugin SDK behebt dies: Jeder Importpfad (`openclaw/plugin-sdk/\`) ist ein kleines, in sich geschlossenes Modul mit einem klaren Zweck und einem dokumentierten Vertrag. +Das moderne Plugin SDK behebt dies: Jeder Importpfad (`openclaw/plugin-sdk/\`) ist ein kleines, in sich geschlossenes Modul mit einem klaren Zweck und dokumentiertem Vertrag. -Veraltete Convenience-Seams für Provider bei gebündelten Kanälen sind ebenfalls entfernt worden. Imports wie `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, kanalmarkenspezifische Helper-Seams und `openclaw/plugin-sdk/telegram-core` waren private Mono-Repo-Abkürzungen, keine stabilen Plugin-Verträge. Verwenden Sie stattdessen schmale generische SDK-Subpfade. Behalten Sie innerhalb des gebündelten Plugin-Workspace Provider-eigene Hilfsfunktionen im jeweiligen `api.ts` oder `runtime-api.ts` dieses Plugins. +Veraltete Komfort-Schnittstellen für Provider in gebündelten Kanälen sind ebenfalls entfernt. Imports wie `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, kanalmarkierte Hilfs-Schnittstellen und `openclaw/plugin-sdk/telegram-core` waren private Mono-Repo-Abkürzungen, keine stabilen Plugin-Verträge. Verwenden Sie stattdessen schmale generische SDK-Unterpfade. Innerhalb des gebündelten Plugin-Workspaces sollten provider-eigene Hilfsfunktionen im eigenen `api.ts` oder `runtime-api.ts` dieses Plugins bleiben. Aktuelle Beispiele für gebündelte Provider: -- Anthropic behält Claude-spezifische Stream-Hilfsfunktionen in seinem eigenen `api.ts`- / `contract-api.ts`-Seam -- OpenAI behält Provider-Builder, Hilfsfunktionen für Standardmodelle und Echtzeit-Provider-Builder in seinem eigenen `api.ts` -- OpenRouter behält Provider-Builder sowie Onboarding-/Konfigurationshilfsfunktionen in seinem eigenen `api.ts` +- Anthropic hält Claude-spezifische Stream-Hilfsfunktionen in seiner eigenen `api.ts`- / `contract-api.ts`-Schnittstelle +- OpenAI hält Provider-Builder, Hilfsfunktionen für Standardmodelle und Realtime-Provider-Builder in seiner eigenen `api.ts` +- OpenRouter hält Provider-Builder sowie Onboarding-/Konfigurationshilfsfunktionen in seiner eigenen `api.ts` ## So migrieren Sie - - Channel-Plugins mit Approval-Unterstützung stellen natives Approval-Verhalten jetzt über + + Kanal-Plugins mit Approval-Unterstützung stellen natives Approval-Verhalten jetzt über `approvalCapability.nativeRuntime` plus die gemeinsame Laufzeitkontext-Registry bereit. Wichtige Änderungen: - Ersetzen Sie `approvalCapability.handler.loadRuntime(...)` durch `approvalCapability.nativeRuntime` - - Verschieben Sie approval-spezifische Authentifizierung/Zustellung von der veralteten Verkabelung `plugin.auth` / + - Verschieben Sie Approval-spezifische Authentifizierung/Zustellung aus der veralteten Verdrahtung `plugin.auth` / `plugin.approvals` auf `approvalCapability` - - `ChannelPlugin.approvals` wurde aus dem öffentlichen Vertrag für Channel-Plugins - entfernt; verschieben Sie Felder für Zustellung/natives Verhalten/Rendering auf `approvalCapability` - - `plugin.auth` bleibt nur für Channel-Anmelde-/Abmeldeabläufe erhalten; Approval-Auth-Hooks - dort werden vom Core nicht mehr gelesen - - Registrieren Sie Channel-eigene Laufzeitobjekte wie Clients, Tokens oder Bolt-Apps - über `openclaw/plugin-sdk/channel-runtime-context` - - Senden Sie aus nativen Approval-Handlern keine plugin-eigenen Hinweise zur Umleitung mehr; - der Core übernimmt jetzt Hinweise zu Weiterleitungen aus tatsächlichen Zustellungsergebnissen + - `ChannelPlugin.approvals` wurde aus dem öffentlichen Kanal-Plugin-Vertrag entfernt; + verschieben Sie delivery/native/render-Felder auf `approvalCapability` + - `plugin.auth` bleibt nur für Kanal-Login-/Logout-Abläufe bestehen; Approval-Authentifizierungs- + Hooks dort werden von Core nicht mehr gelesen + - Registrieren Sie kanal-eigene Laufzeitobjekte wie Clients, Tokens oder Bolt- + Apps über `openclaw/plugin-sdk/channel-runtime-context` + - Senden Sie keine plugin-eigenen Umleitungs-Hinweise aus nativen Approval-Handlern; + Core verwaltet jetzt routed-elsewhere-Hinweise aus tatsächlichen Zustellungsergebnissen - Wenn Sie `channelRuntime` an `createChannelManager(...)` übergeben, stellen Sie eine - echte `createPluginRuntime().channel`-Oberfläche bereit. Partielle Stubs werden abgelehnt. + echte `createPluginRuntime().channel`-Oberfläche bereit. Teilweise Stubs werden abgelehnt. Siehe `/plugins/sdk-channel-plugins` für das aktuelle Layout der Approval-Capability. - Wenn Ihr Plugin `openclaw/plugin-sdk/windows-spawn` verwendet, - schlagen nicht aufgelöste Windows-Wrapper `.cmd`/`.bat` jetzt standardmäßig fehl, es sei denn, Sie übergeben ausdrücklich + Wenn Ihr Plugin `openclaw/plugin-sdk/windows-spawn` verwendet, schlagen nicht aufgelöste Windows- + `.cmd`-/`.bat`-Wrapper jetzt standardmäßig fehl, es sei denn, Sie übergeben explizit `allowShellFallback: true`. ```typescript @@ -103,8 +103,8 @@ Aktuelle Beispiele für gebündelte Provider: - - Durchsuchen Sie Ihr Plugin nach Imports von einer der beiden veralteten Oberflächen: + + Durchsuchen Sie Ihr Plugin nach Imports aus einer der beiden veralteten Oberflächen: ```bash grep -r "plugin-sdk/compat" my-plugin/ @@ -113,8 +113,8 @@ Aktuelle Beispiele für gebündelte Provider: - - Jeder Export von der alten Oberfläche lässt sich einem spezifischen modernen Importpfad zuordnen: + + Jeder Export aus der alten Oberfläche entspricht einem bestimmten modernen Importpfad: ```typescript // Before (deprecated backwards-compatibility layer) @@ -130,7 +130,8 @@ Aktuelle Beispiele für gebündelte Provider: import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth"; ``` - Verwenden Sie für hostseitige Hilfsfunktionen die injizierte Plugin-Laufzeit, statt direkt zu importieren: + Verwenden Sie für hostseitige Hilfsfunktionen die injizierte Plugin-Laufzeit, anstatt + direkt zu importieren: ```typescript // Before (deprecated extension-api bridge) @@ -141,7 +142,7 @@ Aktuelle Beispiele für gebündelte Provider: const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt }); ``` - Dasselbe Muster gilt für andere veraltete Bridge-Hilfsfunktionen: + Dasselbe Muster gilt für andere veraltete Brücken-Hilfsfunktionen: | Alter Import | Modernes Äquivalent | | --- | --- | @@ -151,7 +152,7 @@ Aktuelle Beispiele für gebündelte Provider: | `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` | | `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` | | `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` | - | Hilfsfunktionen für den Sitzungsspeicher | `api.runtime.agent.session.*` | + | session store helpers | `api.runtime.agent.session.*` | @@ -165,180 +166,185 @@ Aktuelle Beispiele für gebündelte Provider: ## Referenz der Importpfade - + | Importpfad | Zweck | Wichtige Exporte | | --- | --- | --- | | `plugin-sdk/plugin-entry` | Kanonische Hilfsfunktion für Plugin-Einstiegspunkte | `definePluginEntry` | - | `plugin-sdk/core` | Veralteter übergreifender Re-Export für Definitionen/Builder von Channel-Einstiegspunkten | `defineChannelPluginEntry`, `createChatChannelPlugin` | + | `plugin-sdk/core` | Veralteter übergreifender Re-Export für Kanal-Einstiegsdefinitionen/-Builder | `defineChannelPluginEntry`, `createChatChannelPlugin` | | `plugin-sdk/config-schema` | Export des Root-Konfigurationsschemas | `OpenClawSchema` | | `plugin-sdk/provider-entry` | Hilfsfunktion für Einstiegspunkte mit einem einzelnen Provider | `defineSingleProviderPluginEntry` | - | `plugin-sdk/channel-core` | Fokussierte Definitionen und Builder für Channel-Einstiegspunkte | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | + | `plugin-sdk/channel-core` | Gezielt ausgerichtete Kanal-Einstiegsdefinitionen und -Builder | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | | `plugin-sdk/setup` | Gemeinsame Hilfsfunktionen für den Setup-Assistenten | Allowlist-Eingabeaufforderungen, Builder für Setup-Status | - | `plugin-sdk/setup-runtime` | Laufzeithilfsfunktionen für das Setup | Import-sichere Setup-Patch-Adapter, Hilfsfunktionen für Lookup-Hinweise, `promptResolvedAllowFrom`, `splitSetupEntries`, delegierte Setup-Proxys | + | `plugin-sdk/setup-runtime` | Laufzeit-Hilfsfunktionen zur Setup-Zeit | Importsichere Setup-Patch-Adapter, Hilfsfunktionen für Lookup-Hinweise, `promptResolvedAllowFrom`, `splitSetupEntries`, delegierte Setup-Proxys | | `plugin-sdk/setup-adapter-runtime` | Hilfsfunktionen für Setup-Adapter | `createEnvPatchedAccountSetupAdapter` | - | `plugin-sdk/setup-tools` | Hilfsfunktionen für Setup-Tools | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Hilfsfunktionen für mehrere Accounts | Hilfsfunktionen für Account-Liste/Konfiguration/Action-Gates | - | `plugin-sdk/account-id` | Hilfsfunktionen für Account-IDs | `DEFAULT_ACCOUNT_ID`, Normalisierung von Account-IDs | - | `plugin-sdk/account-resolution` | Hilfsfunktionen für Account-Lookups | Hilfsfunktionen für Account-Lookup und Default-Fallback | - | `plugin-sdk/account-helpers` | Schmale Hilfsfunktionen für Accounts | Hilfsfunktionen für Account-Liste/Account-Aktionen | - | `plugin-sdk/channel-setup` | Adapter für den Setup-Assistenten | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard` sowie `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | + | `plugin-sdk/setup-tools` | Hilfsfunktionen für Setup-Tooling | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | + | `plugin-sdk/account-core` | Hilfsfunktionen für mehrere Konten | Hilfsfunktionen für Kontolisten/Konfiguration/Action-Gates | + | `plugin-sdk/account-id` | Hilfsfunktionen für Konto-IDs | `DEFAULT_ACCOUNT_ID`, Normalisierung von Konto-IDs | + | `plugin-sdk/account-resolution` | Hilfsfunktionen für die Kontoermittlung | Hilfsfunktionen für Kontoermittlung + Standard-Fallback | + | `plugin-sdk/account-helpers` | Schmale Hilfsfunktionen für Konten | Hilfsfunktionen für Kontolisten/Kontoaktionen | + | `plugin-sdk/channel-setup` | Adapter für den Setup-Assistenten | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | | `plugin-sdk/channel-pairing` | Primitive Bausteine für DM-Pairing | `createChannelPairingController` | - | `plugin-sdk/channel-reply-pipeline` | Verdrahtung von Antwortpräfix und Schreibanzeige | `createChannelReplyPipeline` | + | `plugin-sdk/channel-reply-pipeline` | Verdrahtung für Antwort-Präfix + Tippen | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | Fabriken für Konfigurationsadapter | `createHybridChannelConfigAdapter` | - | `plugin-sdk/channel-config-schema` | Builder für Konfigurationsschemas | Typen für Channel-Konfigurationsschemas | - | `plugin-sdk/telegram-command-config` | Hilfsfunktionen für die Telegram-Befehlskonfiguration | Normalisierung von Befehlsnamen, Kürzen von Beschreibungen, Validierung von Duplikaten/Konflikten | + | `plugin-sdk/channel-config-schema` | Builder für Konfigurationsschemas | Typen für Kanal-Konfigurationsschemas | + | `plugin-sdk/telegram-command-config` | Hilfsfunktionen für Telegram-Befehlskonfiguration | Normalisierung von Befehlsnamen, Kürzen von Beschreibungen, Validierung von Duplikaten/Konflikten | | `plugin-sdk/channel-policy` | Auflösung von Gruppen-/DM-Richtlinien | `resolveChannelGroupRequireMention` | - | `plugin-sdk/channel-lifecycle` | Nachverfolgung des Account-Status | `createAccountStatusSink` | - | `plugin-sdk/inbound-envelope` | Hilfsfunktionen für eingehende Envelopes | Gemeinsame Hilfsfunktionen für Routing- und Envelope-Builder | - | `plugin-sdk/inbound-reply-dispatch` | Hilfsfunktionen für eingehende Antworten | Gemeinsame Hilfsfunktionen zum Aufzeichnen und Dispatchen | - | `plugin-sdk/messaging-targets` | Parsing von Nachrichtenzielen | Hilfsfunktionen zum Parsen/Abgleichen von Zielen | + | `plugin-sdk/channel-lifecycle` | Verfolgung des Kontostatus | `createAccountStatusSink` | + | `plugin-sdk/inbound-envelope` | Hilfsfunktionen für eingehende Umschläge | Gemeinsame Hilfsfunktionen für Routing + Umschlag-Builder | + | `plugin-sdk/inbound-reply-dispatch` | Hilfsfunktionen für eingehende Antworten | Gemeinsame Hilfsfunktionen zum Aufzeichnen und Weiterleiten | + | `plugin-sdk/messaging-targets` | Parsen von Messaging-Zielen | Hilfsfunktionen zum Parsen/Abgleichen von Zielen | | `plugin-sdk/outbound-media` | Hilfsfunktionen für ausgehende Medien | Gemeinsames Laden ausgehender Medien | - | `plugin-sdk/outbound-runtime` | Laufzeithilfsfunktionen für ausgehende Nachrichten | Hilfsfunktionen für ausgehende Identität/Sende-Delegation | - | `plugin-sdk/thread-bindings-runtime` | Hilfsfunktionen für Thread-Bindings | Hilfsfunktionen für den Lebenszyklus und Adapter von Thread-Bindings | - | `plugin-sdk/agent-media-payload` | Veraltete Hilfsfunktionen für Media Payloads | Builder für Agent-Media-Payloads für veraltete Feldlayouts | - | `plugin-sdk/channel-runtime` | Veralteter Kompatibilitäts-Shim | Nur veraltete Utilities für Channel-Laufzeit | + | `plugin-sdk/outbound-runtime` | Laufzeit-Hilfsfunktionen für ausgehende Vorgänge | Hilfsfunktionen für ausgehende Identität/Sende-Delegierung | + | `plugin-sdk/thread-bindings-runtime` | Hilfsfunktionen für Thread-Bindings | Hilfsfunktionen für Lebenszyklus und Adapter von Thread-Bindings | + | `plugin-sdk/agent-media-payload` | Veraltete Hilfsfunktionen für Medien-Payloads | Agent-Medien-Payload-Builder für veraltete Feldlayouts | + | `plugin-sdk/channel-runtime` | Veralteter Kompatibilitäts-Shim | Nur veraltete Kanal-Laufzeit-Utilities | | `plugin-sdk/channel-send-result` | Typen für Sendeergebnisse | Typen für Antwortergebnisse | | `plugin-sdk/runtime-store` | Persistenter Plugin-Speicher | `createPluginRuntimeStore` | - | `plugin-sdk/runtime` | Umfassende Laufzeithilfsfunktionen | Hilfsfunktionen für Laufzeit/Logging/Backups/Plugin-Installation | - | `plugin-sdk/runtime-env` | Schmale Hilfsfunktionen für die Laufzeitumgebung | Logger-/Runtime-Env-, Timeout-, Retry- und Backoff-Hilfsfunktionen | - | `plugin-sdk/plugin-runtime` | Gemeinsame Plugin-Laufzeithilfsfunktionen | Hilfsfunktionen für Plugin-Befehle/Hooks/HTTP/Interaktivität | + | `plugin-sdk/runtime` | Breite Laufzeit-Hilfsfunktionen | Hilfsfunktionen für Laufzeit/Logging/Backups/Plugin-Installation | + | `plugin-sdk/runtime-env` | Schmale Hilfsfunktionen für die Laufzeitumgebung | Logger-/Laufzeitumgebungs-, Timeout-, Retry- und Backoff-Hilfsfunktionen | + | `plugin-sdk/plugin-runtime` | Gemeinsame Plugin-Laufzeit-Hilfsfunktionen | Hilfsfunktionen für Plugin-Befehle/Hooks/HTTP/interaktive Funktionen | | `plugin-sdk/hook-runtime` | Hilfsfunktionen für Hook-Pipelines | Gemeinsame Hilfsfunktionen für Webhook-/interne Hook-Pipelines | | `plugin-sdk/lazy-runtime` | Hilfsfunktionen für verzögerte Laufzeit | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` | - | `plugin-sdk/process-runtime` | Hilfsfunktionen für Prozesse | Gemeinsame `exec`-Hilfsfunktionen | - | `plugin-sdk/cli-runtime` | CLI-Laufzeithilfsfunktionen | Hilfsfunktionen für Befehlsformatierung, Wartezeiten, Versionen | - | `plugin-sdk/gateway-runtime` | Hilfsfunktionen für Gateway | Hilfsfunktionen für Gateway-Client und Patches für Channel-Status | - | `plugin-sdk/config-runtime` | Hilfsfunktionen für Konfiguration | Hilfsfunktionen zum Laden/Schreiben von Konfiguration | - | `plugin-sdk/telegram-command-config` | Hilfsfunktionen für Telegram-Befehle | Fallback-stabile Hilfsfunktionen zur Telegram-Befehlsvalidierung, wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist | - | `plugin-sdk/approval-runtime` | Hilfsfunktionen für Approval-Prompts | Payload-Hilfsfunktionen für Exec-/Plugin-Approvals, Hilfsfunktionen für Approval-Capability/Profile, native Approval-Routing-/Laufzeithilfsfunktionen | - | `plugin-sdk/approval-auth-runtime` | Hilfsfunktionen für Approval-Authentifizierung | Approver-Auflösung, Same-Chat-Action-Authentifizierung | + | `plugin-sdk/process-runtime` | Prozess-Hilfsfunktionen | Gemeinsame Exec-Hilfsfunktionen | + | `plugin-sdk/cli-runtime` | CLI-Laufzeit-Hilfsfunktionen | Hilfsfunktionen für Befehlsformatierung, Wartezeiten und Versionen | + | `plugin-sdk/gateway-runtime` | Gateway-Hilfsfunktionen | Hilfsfunktionen für Gateway-Client und Kanalstatus-Patches | + | `plugin-sdk/config-runtime` | Konfigurations-Hilfsfunktionen | Hilfsfunktionen zum Laden/Schreiben von Konfiguration | + | `plugin-sdk/telegram-command-config` | Hilfsfunktionen für Telegram-Befehle | Telegram-Befehlsvalidierungs-Hilfsfunktionen mit stabilem Fallback, wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist | + | `plugin-sdk/approval-runtime` | Hilfsfunktionen für Approval-Aufforderungen | Hilfsfunktionen für Exec-/Plugin-Approval-Payload, Approval-Capability/-Profile, natives Approval-Routing/-Laufzeit | + | `plugin-sdk/approval-auth-runtime` | Hilfsfunktionen für Approval-Authentifizierung | Approver-Auflösung, Authentifizierung von Same-Chat-Aktionen | | `plugin-sdk/approval-client-runtime` | Hilfsfunktionen für Approval-Clients | Hilfsfunktionen für native Exec-Approval-Profile/-Filter | - | `plugin-sdk/approval-delivery-runtime` | Hilfsfunktionen für Approval-Zustellung | Native Adapter für Approval-Capability/Zustellung | - | `plugin-sdk/approval-gateway-runtime` | Hilfsfunktionen für Approval-Gateway | Gemeinsame Hilfsfunktion für die Auflösung von Approval-Gateway | - | `plugin-sdk/approval-handler-adapter-runtime` | Hilfsfunktionen für Approval-Adapter | Leichtgewichtige Hilfsfunktionen zum Laden nativer Approval-Adapter für heiße Channel-Einstiegspunkte | - | `plugin-sdk/approval-handler-runtime` | Hilfsfunktionen für Approval-Handler | Umfassendere Laufzeithilfsfunktionen für Approval-Handler; bevorzugen Sie die schmaleren Adapter-/Gateway-Seams, wenn diese ausreichen | - | `plugin-sdk/approval-native-runtime` | Hilfsfunktionen für Approval-Ziele | Hilfsfunktionen für native Approval-Ziele/Account-Bindings | - | `plugin-sdk/approval-reply-runtime` | Hilfsfunktionen für Approval-Antworten | Payload-Hilfsfunktionen für Exec-/Plugin-Approval-Antworten | - | `plugin-sdk/channel-runtime-context` | Hilfsfunktionen für den Channel-Runtime-Context | Generische Hilfsfunktionen zum Registrieren/Abrufen/Beobachten des Channel-Runtime-Context | - | `plugin-sdk/security-runtime` | Hilfsfunktionen für Sicherheit | Gemeinsame Hilfsfunktionen für Trust, DM-Gating, externe Inhalte und Secret-Erfassung | - | `plugin-sdk/ssrf-policy` | Hilfsfunktionen für SSRF-Richtlinien | Hilfsfunktionen für Host-Allowlist und Richtlinien für private Netzwerke | - | `plugin-sdk/ssrf-runtime` | SSRF-Laufzeithilfsfunktionen | Hilfsfunktionen für Pinned Dispatcher, geschütztes Fetch, SSRF-Richtlinien | + | `plugin-sdk/approval-delivery-runtime` | Hilfsfunktionen für Approval-Zustellung | Native Adapter für Approval-Capability/-Zustellung | + | `plugin-sdk/approval-gateway-runtime` | Hilfsfunktionen für Approval-Gateway | Gemeinsame Hilfsfunktion zur Approval-Gateway-Auflösung | + | `plugin-sdk/approval-handler-adapter-runtime` | Hilfsfunktionen für Approval-Adapter | Leichtgewichtige Hilfsfunktionen zum Laden nativer Approval-Adapter für Hot-Channel-Einstiegspunkte | + | `plugin-sdk/approval-handler-runtime` | Hilfsfunktionen für Approval-Handler | Breitere Laufzeit-Hilfsfunktionen für Approval-Handler; bevorzugen Sie die schmaleren Adapter-/Gateway-Schnittstellen, wenn sie ausreichen | + | `plugin-sdk/approval-native-runtime` | Hilfsfunktionen für Approval-Ziele | Hilfsfunktionen für native Approval-Ziel-/Kontobindung | + | `plugin-sdk/approval-reply-runtime` | Hilfsfunktionen für Approval-Antworten | Hilfsfunktionen für Exec-/Plugin-Approval-Antwort-Payload | + | `plugin-sdk/channel-runtime-context` | Hilfsfunktionen für Kanal-Laufzeitkontext | Generische Hilfsfunktionen zum Registrieren/Abrufen/Beobachten von Kanal-Laufzeitkontext | + | `plugin-sdk/security-runtime` | Sicherheits-Hilfsfunktionen | Gemeinsame Hilfsfunktionen für Vertrauen, DM-Gating, externe Inhalte und Secret-Erfassung | + | `plugin-sdk/ssrf-policy` | Hilfsfunktionen für SSRF-Richtlinien | Hilfsfunktionen für Host-Allowlist und Private-Network-Richtlinien | + | `plugin-sdk/ssrf-runtime` | SSRF-Laufzeit-Hilfsfunktionen | Hilfsfunktionen für Pinned Dispatcher, Guarded Fetch, SSRF-Richtlinien | | `plugin-sdk/collection-runtime` | Hilfsfunktionen für begrenzte Caches | `pruneMapToMaxSize` | | `plugin-sdk/diagnostic-runtime` | Hilfsfunktionen für Diagnostic-Gating | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` | | `plugin-sdk/error-runtime` | Hilfsfunktionen für Fehlerformatierung | `formatUncaughtError`, `isApprovalNotFoundError`, Hilfsfunktionen für Fehlergraphen | - | `plugin-sdk/fetch-runtime` | Hilfsfunktionen für umschlossenes Fetch/Proxy | `resolveFetch`, Proxy-Hilfsfunktionen | + | `plugin-sdk/fetch-runtime` | Hilfsfunktionen für Wrapped Fetch/Proxys | `resolveFetch`, Proxy-Hilfsfunktionen | | `plugin-sdk/host-runtime` | Hilfsfunktionen für Host-Normalisierung | `normalizeHostname`, `normalizeScpRemoteHost` | - | `plugin-sdk/retry-runtime` | Hilfsfunktionen für Retry | `RetryConfig`, `retryAsync`, Policy-Runner | - | `plugin-sdk/allow-from` | Formatierung der Allowlist | `formatAllowFromLowercase` | + | `plugin-sdk/retry-runtime` | Retry-Hilfsfunktionen | `RetryConfig`, `retryAsync`, Policy-Runner | + | `plugin-sdk/allow-from` | Allowlist-Formatierung | `formatAllowFromLowercase` | | `plugin-sdk/allowlist-resolution` | Zuordnung von Allowlist-Eingaben | `mapAllowlistResolutionInputs` | - | `plugin-sdk/command-auth` | Command-Gating- und Befehlsoberflächen-Hilfsfunktionen | `resolveControlCommandGate`, Hilfsfunktionen für Sender-Autorisierung, Hilfsfunktionen für Befehlsregistry | + | `plugin-sdk/command-auth` | Hilfsfunktionen für Command-Gating und Befehlsoberflächen | `resolveControlCommandGate`, Hilfsfunktionen für Sender-Autorisierung, Hilfsfunktionen für Befehlsregistry | | `plugin-sdk/command-status` | Renderer für Befehlsstatus/-hilfe | `buildCommandsMessage`, `buildCommandsMessagePaginated`, `buildHelpMessage` | - | `plugin-sdk/secret-input` | Parsing von Secret-Eingaben | Hilfsfunktionen für Secret-Eingaben | + | `plugin-sdk/secret-input` | Parsen von Secret-Eingaben | Hilfsfunktionen für Secret-Eingaben | | `plugin-sdk/webhook-ingress` | Hilfsfunktionen für Webhook-Anfragen | Utilities für Webhook-Ziele | - | `plugin-sdk/webhook-request-guards` | Hilfsfunktionen für Guards von Webhook-Request-Bodies | Hilfsfunktionen zum Lesen/Begrenzen von Request-Bodies | - | `plugin-sdk/reply-runtime` | Gemeinsame Antwortlaufzeit | Eingehender Dispatch, Heartbeat, Antwortplanung, Chunking | - | `plugin-sdk/reply-dispatch-runtime` | Schmale Hilfsfunktionen für Antwort-Dispatch | Hilfsfunktionen für Finalisierung und Provider-Dispatch | + | `plugin-sdk/webhook-request-guards` | Hilfsfunktionen für Guards des Webhook-Bodys | Hilfsfunktionen zum Lesen/Begrenzen des Request-Bodys | + | `plugin-sdk/reply-runtime` | Gemeinsame Antwort-Laufzeit | Eingehende Dispatches, Heartbeat, Antwortplanung, Chunking | + | `plugin-sdk/reply-dispatch-runtime` | Schmale Hilfsfunktionen für Antwort-Dispatch | Hilfsfunktionen zum Finalisieren + Provider-Dispatch | | `plugin-sdk/reply-history` | Hilfsfunktionen für Antwortverlauf | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | Planung von Antwortreferenzen | `createReplyReferencePlanner` | | `plugin-sdk/reply-chunking` | Hilfsfunktionen für Antwort-Chunks | Hilfsfunktionen für Text-/Markdown-Chunking | - | `plugin-sdk/session-store-runtime` | Hilfsfunktionen für Sitzungsspeicher | Hilfsfunktionen für Speicherpfade und `updated-at` | - | `plugin-sdk/state-paths` | Hilfsfunktionen für Statuspfade | Hilfsfunktionen für State- und OAuth-Verzeichnisse | - | `plugin-sdk/routing` | Hilfsfunktionen für Routing/Sitzungsschlüssel | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, Hilfsfunktionen zur Normalisierung von Sitzungsschlüsseln | - | `plugin-sdk/status-helpers` | Hilfsfunktionen für Channel-Status | Builder für Zusammenfassungen von Channel-/Account-Status, Standards für Laufzeitstatus, Hilfsfunktionen für Issue-Metadaten | - | `plugin-sdk/target-resolver-runtime` | Hilfsfunktionen für Target Resolver | Gemeinsame Hilfsfunktionen für Target Resolver | + | `plugin-sdk/session-store-runtime` | Hilfsfunktionen für Session Store | Hilfsfunktionen für Store-Pfad + updated-at | + | `plugin-sdk/state-paths` | Hilfsfunktionen für State-Pfade | Hilfsfunktionen für State- und OAuth-Verzeichnisse | + | `plugin-sdk/routing` | Hilfsfunktionen für Routing/Session-Schlüssel | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, Hilfsfunktionen zur Normalisierung von Session-Schlüsseln | + | `plugin-sdk/status-helpers` | Hilfsfunktionen für Kanalstatus | Builder für Kanal-/Kontostatuszusammenfassungen, Standardwerte für Laufzeitstatus, Hilfsfunktionen für Issue-Metadaten | + | `plugin-sdk/target-resolver-runtime` | Hilfsfunktionen für Zielauflösung | Gemeinsame Hilfsfunktionen für Zielauflösung | | `plugin-sdk/string-normalization-runtime` | Hilfsfunktionen für String-Normalisierung | Hilfsfunktionen für Slug-/String-Normalisierung | - | `plugin-sdk/request-url` | Hilfsfunktionen für Request-URLs | Extrahieren von URL-Strings aus Request-ähnlichen Eingaben | + | `plugin-sdk/request-url` | Hilfsfunktionen für Request-URLs | String-URLs aus Request-ähnlichen Eingaben extrahieren | | `plugin-sdk/run-command` | Hilfsfunktionen für zeitgesteuerte Befehle | Timed Command Runner mit normalisiertem stdout/stderr | - | `plugin-sdk/param-readers` | Param-Reader | Allgemeine Param-Reader für Tools/CLI | - | `plugin-sdk/tool-payload` | Extraktion von Tool-Payloads | Extrahieren normalisierter Payloads aus Tool-Ergebnisobjekten | - | `plugin-sdk/tool-send` | Extraktion von Tool-Sendeinformationen | Extrahieren kanonischer Zielfeldwerte für Sendungen aus Tool-Argumenten | + | `plugin-sdk/param-readers` | Param-Reader | Gemeinsame Param-Reader für Tool/CLI | + | `plugin-sdk/tool-payload` | Extraktion von Tool-Payloads | Normalisierte Payloads aus Tool-Ergebnisobjekten extrahieren | + | `plugin-sdk/tool-send` | Extraktion von Tool-Sendewerten | Kanonische Sendefeld-Ziele aus Tool-Argumenten extrahieren | | `plugin-sdk/temp-path` | Hilfsfunktionen für temporäre Pfade | Gemeinsame Hilfsfunktionen für temporäre Download-Pfade | - | `plugin-sdk/logging-core` | Hilfsfunktionen für Logging | Subsystem-Logger und Redaction-Hilfsfunktionen | + | `plugin-sdk/logging-core` | Logging-Hilfsfunktionen | Hilfsfunktionen für Subsystem-Logger und Redaction | | `plugin-sdk/markdown-table-runtime` | Hilfsfunktionen für Markdown-Tabellen | Hilfsfunktionen für Modi von Markdown-Tabellen | | `plugin-sdk/reply-payload` | Typen für Nachrichtenantworten | Typen für Antwort-Payloads | - | `plugin-sdk/provider-setup` | Kuratierte Hilfsfunktionen für das Setup lokaler/self-hosted Provider | Hilfsfunktionen für Discovery/Konfiguration selbst gehosteter Provider | - | `plugin-sdk/self-hosted-provider-setup` | Fokussierte Hilfsfunktionen für das Setup selbst gehosteter OpenAI-kompatibler Provider | Dieselben Hilfsfunktionen für Discovery/Konfiguration selbst gehosteter Provider | - | `plugin-sdk/provider-auth-runtime` | Hilfsfunktionen für Provider-Authentifizierung zur Laufzeit | Hilfsfunktionen für die Auflösung von Runtime-API-Keys | + | `plugin-sdk/provider-setup` | Kuratierte Hilfsfunktionen für das Setup lokaler/self-hosted Provider | Hilfsfunktionen für Erkennung/Konfiguration self-hosted Provider | + | `plugin-sdk/self-hosted-provider-setup` | Gezielt ausgerichtete Hilfsfunktionen für das Setup OpenAI-kompatibler self-hosted Provider | Dieselben Hilfsfunktionen für Erkennung/Konfiguration self-hosted Provider | + | `plugin-sdk/provider-auth-runtime` | Hilfsfunktionen für Provider-Laufzeit-Authentifizierung | Hilfsfunktionen für Laufzeit-API-Key-Auflösung | | `plugin-sdk/provider-auth-api-key` | Hilfsfunktionen für die Einrichtung von Provider-API-Keys | Hilfsfunktionen für API-Key-Onboarding/Profilschreibung | | `plugin-sdk/provider-auth-result` | Hilfsfunktionen für Provider-Authentifizierungsergebnisse | Standard-Builder für OAuth-Authentifizierungsergebnisse | | `plugin-sdk/provider-auth-login` | Hilfsfunktionen für interaktive Provider-Anmeldung | Gemeinsame Hilfsfunktionen für interaktive Anmeldung | - | `plugin-sdk/provider-env-vars` | Hilfsfunktionen für Provider-Umgebungsvariablen | Hilfsfunktionen für das Lookup von Provider-Auth-Umgebungsvariablen | - | `plugin-sdk/provider-model-shared` | Gemeinsame Hilfsfunktionen für Provider-Modelle/Wiedergabe | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Replay-Policy-Builder, Hilfsfunktionen für Provider-Endpunkte und Hilfsfunktionen zur Normalisierung von Modell-IDs | + | `plugin-sdk/provider-env-vars` | Hilfsfunktionen für Provider-Umgebungsvariablen | Hilfsfunktionen für die Suche nach Provider-Authentifizierungs-Umgebungsvariablen | + | `plugin-sdk/provider-model-shared` | Gemeinsame Hilfsfunktionen für Provider-Modelle/-Replay | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Builder für Replay-Richtlinien, Hilfsfunktionen für Provider-Endpunkte und Hilfsfunktionen zur Modell-ID-Normalisierung | | `plugin-sdk/provider-catalog-shared` | Gemeinsame Hilfsfunktionen für Provider-Kataloge | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | | `plugin-sdk/provider-onboard` | Patches für Provider-Onboarding | Hilfsfunktionen für Onboarding-Konfiguration | - | `plugin-sdk/provider-http` | Hilfsfunktionen für Provider-HTTP | Generische Hilfsfunktionen für Provider-HTTP/Endpoint-Capabilities | + | `plugin-sdk/provider-http` | Hilfsfunktionen für Provider-HTTP | Generische Hilfsfunktionen für Provider-HTTP/Endpunkt-Capabilities | | `plugin-sdk/provider-web-fetch` | Hilfsfunktionen für Provider-Web-Fetch | Hilfsfunktionen für Registrierung/Cache von Web-Fetch-Providern | - | `plugin-sdk/provider-web-search-config-contract` | Hilfsfunktionen für die Web-Search-Konfiguration von Providern | Schmale Hilfsfunktionen für Web-Search-Konfiguration/Credentials für Provider, die keine Plugin-Enable-Verdrahtung benötigen | - | `plugin-sdk/provider-web-search-contract` | Hilfsfunktionen für den Web-Search-Vertrag von Providern | Schmale Hilfsfunktionen für Verträge zu Web-Search-Konfiguration/Credentials wie `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` sowie bereichsspezifische Setter/Getter für Credentials | + | `plugin-sdk/provider-web-search-config-contract` | Hilfsfunktionen für Provider-Web-Search-Konfiguration | Schmale Hilfsfunktionen für Web-Search-Konfiguration/Credentials für Provider, die keine Verdrahtung zur Plugin-Aktivierung benötigen | + | `plugin-sdk/provider-web-search-contract` | Hilfsfunktionen für Provider-Web-Search-Verträge | Schmale Hilfsfunktionen für Web-Search-Konfigurations-/Credential-Verträge wie `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` und bereichsbezogene Setter/Getter für Credentials | | `plugin-sdk/provider-web-search` | Hilfsfunktionen für Provider-Web-Search | Hilfsfunktionen für Registrierung/Cache/Laufzeit von Web-Search-Providern | - | `plugin-sdk/provider-tools` | Hilfsfunktionen für Provider-Tool-/Schema-Kompatibilität | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung + Diagnostik sowie xAI-Kompatibilitäts-Hilfsfunktionen wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | - | `plugin-sdk/provider-usage` | Hilfsfunktionen für Provider-Nutzung | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` und andere Hilfsfunktionen für Provider-Nutzung | + | `plugin-sdk/provider-tools` | Hilfsfunktionen für Provider-Tool-/Schema-Kompatibilität | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung + Diagnosefunktionen sowie xAI-Kompatibilitätsfunktionen wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | + | `plugin-sdk/provider-usage` | Hilfsfunktionen für Provider-Nutzung | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` und weitere Hilfsfunktionen für Provider-Nutzung | | `plugin-sdk/provider-stream` | Hilfsfunktionen für Provider-Stream-Wrapper | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Typen für Stream-Wrapper sowie gemeinsame Hilfsfunktionen für Wrapper von Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | - | `plugin-sdk/keyed-async-queue` | Geordnete asynchrone Queue | `KeyedAsyncQueue` | - | `plugin-sdk/media-runtime` | Gemeinsame Hilfsfunktionen für Medien | Hilfsfunktionen für Medienabruf/-umwandlung/-speicherung sowie Builder für Media Payloads | + | `plugin-sdk/provider-transport-runtime` | Hilfsfunktionen für Provider-Transport | Hilfsfunktionen für nativen Provider-Transport wie Guarded Fetch, Transport-Nachrichtentransformationen und beschreibbare Transport-Event-Streams | + | `plugin-sdk/keyed-async-queue` | Geordnete asynchrone Warteschlange | `KeyedAsyncQueue` | + | `plugin-sdk/media-runtime` | Gemeinsame Hilfsfunktionen für Medien | Hilfsfunktionen für Medienabruf/-transformation/-speicherung plus Builder für Medien-Payloads | | `plugin-sdk/media-generation-runtime` | Gemeinsame Hilfsfunktionen für Mediengenerierung | Gemeinsame Hilfsfunktionen für Failover, Kandidatenauswahl und Meldungen bei fehlenden Modellen für Bild-/Video-/Musikgenerierung | - | `plugin-sdk/media-understanding` | Hilfsfunktionen für Media Understanding | Typen für Media-Understanding-Provider sowie providerseitige Exporte von Hilfsfunktionen für Bilder/Audio | - | `plugin-sdk/text-runtime` | Gemeinsame Hilfsfunktionen für Text | Entfernen assistentensichtbaren Texts, Hilfsfunktionen für Markdown-Rendering/-Chunking/-Tabellen, Hilfsfunktionen für Redaction, Hilfsfunktionen für Directive-Tags, Safe-Text-Utilities und zugehörige Text-/Logging-Hilfsfunktionen | - | `plugin-sdk/text-chunking` | Hilfsfunktionen für Text-Chunking | Hilfsfunktion für ausgehendes Text-Chunking | - | `plugin-sdk/speech` | Hilfsfunktionen für Speech | Typen für Speech-Provider sowie providerseitige Hilfsfunktionen für Directives, Registry und Validierung | - | `plugin-sdk/speech-core` | Gemeinsamer Speech-Core | Typen für Speech-Provider, Registry, Directives, Normalisierung | - | `plugin-sdk/realtime-transcription` | Hilfsfunktionen für Realtime-Transkription | Typen für Provider und Hilfsfunktionen für die Registry | - | `plugin-sdk/realtime-voice` | Hilfsfunktionen für Realtime-Voice | Typen für Provider und Hilfsfunktionen für die Registry | + | `plugin-sdk/media-understanding` | Hilfsfunktionen für Medienverständnis | Typen für Medienverständnis-Provider plus providerseitige Exporte von Bild-/Audio-Hilfsfunktionen | + | `plugin-sdk/text-runtime` | Gemeinsame Hilfsfunktionen für Text | Hilfsfunktionen zum Entfernen von für Assistenten sichtbarem Text, Markdown-Rendering/-Chunking/-Tabellen-Hilfsfunktionen, Redaction-Hilfsfunktionen, Hilfsfunktionen für Directive-Tags, Safe-Text-Utilities und verwandte Text-/Logging-Hilfsfunktionen | + | `plugin-sdk/text-chunking` | Hilfsfunktionen für Text-Chunking | Hilfsfunktion für das Chunking ausgehender Texte | + | `plugin-sdk/speech` | Hilfsfunktionen für Sprache | Typen für Sprach-Provider plus providerseitige Hilfsfunktionen für Direktiven, Registry und Validierung | + | `plugin-sdk/speech-core` | Gemeinsamer Speech Core | Typen für Sprach-Provider, Registry, Direktiven, Normalisierung | + | `plugin-sdk/realtime-transcription` | Hilfsfunktionen für Realtime-Transkription | Hilfsfunktionen für Provider-Typen und Registry | + | `plugin-sdk/realtime-voice` | Hilfsfunktionen für Realtime-Voice | Hilfsfunktionen für Provider-Typen und Registry | | `plugin-sdk/image-generation-core` | Gemeinsamer Core für Bildgenerierung | Hilfsfunktionen für Typen, Failover, Auth und Registry der Bildgenerierung | - | `plugin-sdk/music-generation` | Hilfsfunktionen für Musikgenerierung | Typen für Provider/Requests/Ergebnisse der Musikgenerierung | - | `plugin-sdk/music-generation-core` | Gemeinsamer Core für Musikgenerierung | Hilfsfunktionen für Typen, Failover, Provider-Lookup und Parsing von Model-Refs der Musikgenerierung | - | `plugin-sdk/video-generation` | Hilfsfunktionen für Videogenerierung | Typen für Provider/Requests/Ergebnisse der Videogenerierung | - | `plugin-sdk/video-generation-core` | Gemeinsamer Core für Videogenerierung | Hilfsfunktionen für Typen, Failover, Provider-Lookup und Parsing von Model-Refs der Videogenerierung | - | `plugin-sdk/interactive-runtime` | Hilfsfunktionen für interaktive Antworten | Normalisierung/Reduktion interaktiver Antwort-Payloads | - | `plugin-sdk/channel-config-primitives` | Primitive Bausteine für Channel-Konfiguration | Schmale Primitive für Channel-Konfigurationsschemas | - | `plugin-sdk/channel-config-writes` | Hilfsfunktionen für Schreibvorgänge in der Channel-Konfiguration | Hilfsfunktionen für Autorisierung beim Schreiben von Channel-Konfiguration | - | `plugin-sdk/channel-plugin-common` | Gemeinsames Channel-Prelude | Gemeinsame Prelude-Exporte für Channel-Plugins | - | `plugin-sdk/channel-status` | Hilfsfunktionen für Channel-Status | Gemeinsame Hilfsfunktionen für Snapshots/Zusammenfassungen des Channel-Status | - | `plugin-sdk/allowlist-config-edit` | Hilfsfunktionen für Allowlist-Konfiguration | Hilfsfunktionen zum Bearbeiten/Lesen der Allowlist-Konfiguration | + | `plugin-sdk/music-generation` | Hilfsfunktionen für Musikgenerierung | Typen für Musikgenerierungs-Provider/-Anfragen/-Ergebnisse | + | `plugin-sdk/music-generation-core` | Gemeinsamer Core für Musikgenerierung | Hilfsfunktionen für Typen, Failover, Provider-Lookup und Modell-Ref-Parsing der Musikgenerierung | + | `plugin-sdk/video-generation` | Hilfsfunktionen für Videogenerierung | Typen für Videogenerierungs-Provider/-Anfragen/-Ergebnisse | + | `plugin-sdk/video-generation-core` | Gemeinsamer Core für Videogenerierung | Hilfsfunktionen für Typen, Failover, Provider-Lookup und Modell-Ref-Parsing der Videogenerierung | + | `plugin-sdk/interactive-runtime` | Hilfsfunktionen für interaktive Antworten | Normalisierung/Reduktion von Payloads interaktiver Antworten | + | `plugin-sdk/channel-config-primitives` | Primitive Bausteine für Kanal-Konfiguration | Schmale Primitive für Kanal-Konfigurationsschemas | + | `plugin-sdk/channel-config-writes` | Hilfsfunktionen für Kanal-Konfigurationsschreibvorgänge | Hilfsfunktionen für die Autorisierung von Kanal-Konfigurationsschreibvorgängen | + | `plugin-sdk/channel-plugin-common` | Gemeinsames Kanal-Präludium | Exporte des gemeinsamen Kanal-Plugin-Präludiums | + | `plugin-sdk/channel-status` | Hilfsfunktionen für Kanalstatus | Gemeinsame Hilfsfunktionen für Snapshots/Zusammenfassungen des Kanalstatus | + | `plugin-sdk/allowlist-config-edit` | Hilfsfunktionen für Allowlist-Konfiguration | Hilfsfunktionen zum Bearbeiten/Lesen von Allowlist-Konfigurationen | | `plugin-sdk/group-access` | Hilfsfunktionen für Gruppenzugriff | Gemeinsame Hilfsfunktionen für Entscheidungen zum Gruppenzugriff | - | `plugin-sdk/direct-dm` | Hilfsfunktionen für direkte DMs | Gemeinsame Hilfsfunktionen für Auth/Guards bei direkten DMs | - | `plugin-sdk/extension-shared` | Gemeinsame Hilfsfunktionen für Erweiterungen | Primitive Hilfsfunktionen für passive Channels/Status und Ambient-Proxy | - | `plugin-sdk/webhook-targets` | Hilfsfunktionen für Webhook-Ziele | Registry für Webhook-Ziele und Hilfsfunktionen für die Installation von Routen | + | `plugin-sdk/direct-dm` | Hilfsfunktionen für direkte DMs | Gemeinsame Hilfsfunktionen für Authentifizierung/Guards bei direkten DMs | + | `plugin-sdk/extension-shared` | Gemeinsame Hilfsfunktionen für Erweiterungen | Primitive Hilfsfunktionen für passive Kanäle/Status und ambient Proxy | + | `plugin-sdk/webhook-targets` | Hilfsfunktionen für Webhook-Ziele | Hilfsfunktionen für Registry und Routeninstallation von Webhook-Zielen | | `plugin-sdk/webhook-path` | Hilfsfunktionen für Webhook-Pfade | Hilfsfunktionen zur Normalisierung von Webhook-Pfaden | | `plugin-sdk/web-media` | Gemeinsame Hilfsfunktionen für Web-Medien | Hilfsfunktionen zum Laden entfernter/lokaler Medien | | `plugin-sdk/zod` | Zod-Re-Export | Re-exportiertes `zod` für Plugin-SDK-Konsumenten | - | `plugin-sdk/memory-core` | Gebündelte Hilfsfunktionen für Memory-Core | Oberfläche mit Hilfsfunktionen für Memory-Manager/Konfiguration/Dateien/CLI | - | `plugin-sdk/memory-core-engine-runtime` | Laufzeit-Fassade für Memory-Engine | Laufzeit-Fassade für Memory-Index/Suche | - | `plugin-sdk/memory-core-host-engine-foundation` | Host-Foundation-Engine für Memory | Exporte der Host-Foundation-Engine für Memory | - | `plugin-sdk/memory-core-host-engine-embeddings` | Host-Embedding-Engine für Memory | Embedding-Verträge für Memory, Registry-Zugriff, lokaler Provider und generische Hilfsfunktionen für Batch/Remote; konkrete Remote-Provider liegen in den jeweils zuständigen Plugins | - | `plugin-sdk/memory-core-host-engine-qmd` | Host-QMD-Engine für Memory | Exporte der Host-QMD-Engine für Memory | - | `plugin-sdk/memory-core-host-engine-storage` | Host-Storage-Engine für Memory | Exporte der Host-Storage-Engine für Memory | - | `plugin-sdk/memory-core-host-multimodal` | Host-Hilfsfunktionen für multimodales Memory | Host-Hilfsfunktionen für multimodales Memory | - | `plugin-sdk/memory-core-host-query` | Host-Hilfsfunktionen für Memory-Abfragen | Host-Hilfsfunktionen für Memory-Abfragen | - | `plugin-sdk/memory-core-host-secret` | Host-Hilfsfunktionen für Memory-Secrets | Host-Hilfsfunktionen für Memory-Secrets | - | `plugin-sdk/memory-core-host-events` | Hilfsfunktionen für das Host-Event-Journal von Memory | Hilfsfunktionen für das Host-Event-Journal von Memory | - | `plugin-sdk/memory-core-host-status` | Host-Hilfsfunktionen für Memory-Status | Host-Hilfsfunktionen für Memory-Status | - | `plugin-sdk/memory-core-host-runtime-cli` | Host-CLI-Laufzeit für Memory | Host-CLI-Laufzeithilfsfunktionen für Memory | - | `plugin-sdk/memory-core-host-runtime-core` | Host-Core-Laufzeit für Memory | Host-Core-Laufzeithilfsfunktionen für Memory | - | `plugin-sdk/memory-core-host-runtime-files` | Host-Hilfsfunktionen für Memory-Dateien/Laufzeit | Host-Hilfsfunktionen für Memory-Dateien/Laufzeit | - | `plugin-sdk/memory-host-core` | Alias für die Host-Core-Laufzeit von Memory | Vendor-neutraler Alias für Host-Core-Laufzeithilfsfunktionen von Memory | - | `plugin-sdk/memory-host-events` | Alias für das Host-Event-Journal von Memory | Vendor-neutraler Alias für Hilfsfunktionen des Host-Event-Journals von Memory | - | `plugin-sdk/memory-host-files` | Alias für Host-Dateien/Laufzeit von Memory | Vendor-neutraler Alias für Host-Hilfsfunktionen für Memory-Dateien/Laufzeit | - | `plugin-sdk/memory-host-markdown` | Hilfsfunktionen für verwaltetes Markdown | Gemeinsame Hilfsfunktionen für verwaltetes Markdown bei Memory-nahen Plugins | - | `plugin-sdk/memory-host-search` | Fassade für Active Memory-Suche | Verzögerte Laufzeit-Fassade des Search-Managers für Active Memory | - | `plugin-sdk/memory-host-status` | Alias für Host-Status von Memory | Vendor-neutraler Alias für Host-Hilfsfunktionen für Memory-Status | - | `plugin-sdk/memory-lancedb` | Gebündelte Hilfsfunktionen für Memory-LanceDB | Oberfläche mit Hilfsfunktionen für Memory-LanceDB | + | `plugin-sdk/memory-core` | Gebündelte Hilfsfunktionen für memory-core | Hilfsoberfläche für Memory-Manager/Konfiguration/Datei/CLI | + | `plugin-sdk/memory-core-engine-runtime` | Laufzeit-Fassade der Memory-Engine | Laufzeit-Fassade für Memory-Index/Suche | + | `plugin-sdk/memory-core-host-engine-foundation` | Foundation-Engine des Memory-Hosts | Exporte der Foundation-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-embeddings` | Embedding-Engine des Memory-Hosts | Memory-Embedding-Verträge, Registry-Zugriff, lokaler Provider und generische Batch-/Remote-Hilfsfunktionen; konkrete Remote-Provider befinden sich in ihren jeweiligen Plugins | + | `plugin-sdk/memory-core-host-engine-qmd` | QMD-Engine des Memory-Hosts | Exporte der QMD-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-storage` | Storage-Engine des Memory-Hosts | Exporte der Storage-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-multimodal` | Multimodale Hilfsfunktionen des Memory-Hosts | Multimodale Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-core-host-query` | Query-Hilfsfunktionen des Memory-Hosts | Query-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-core-host-secret` | Secret-Hilfsfunktionen des Memory-Hosts | Secret-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-core-host-events` | Hilfsfunktionen für Event-Journale des Memory-Hosts | Hilfsfunktionen für Event-Journale des Memory-Hosts | + | `plugin-sdk/memory-core-host-status` | Hilfsfunktionen für Status des Memory-Hosts | Hilfsfunktionen für Status des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-cli` | CLI-Laufzeit des Memory-Hosts | CLI-Laufzeit-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-core` | Core-Laufzeit des Memory-Hosts | Core-Laufzeit-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-files` | Datei-/Laufzeit-Hilfsfunktionen des Memory-Hosts | Datei-/Laufzeit-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-host-core` | Alias der Core-Laufzeit des Memory-Hosts | Anbieterneutraler Alias für Core-Laufzeit-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-host-events` | Alias des Event-Journals des Memory-Hosts | Anbieterneutraler Alias für Hilfsfunktionen des Event-Journals des Memory-Hosts | + | `plugin-sdk/memory-host-files` | Alias für Datei-/Laufzeit des Memory-Hosts | Anbieterneutraler Alias für Datei-/Laufzeit-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-host-markdown` | Hilfsfunktionen für verwaltetes Markdown | Gemeinsame Hilfsfunktionen für verwaltetes Markdown für memory-nahe Plugins | + | `plugin-sdk/memory-host-search` | Fassade für Active Memory-Suche | Lazy Laufzeit-Fassade für den Suchmanager von Active Memory | + | `plugin-sdk/memory-host-status` | Alias für Status des Memory-Hosts | Anbieterneutraler Alias für Status-Hilfsfunktionen des Memory-Hosts | + | `plugin-sdk/memory-lancedb` | Gebündelte Hilfsfunktionen für memory-lancedb | Hilfsoberfläche für memory-lancedb | | `plugin-sdk/testing` | Test-Utilities | Test-Hilfsfunktionen und Mocks | -Diese Tabelle ist absichtlich die gängige Migrations-Teilmenge und nicht die vollständige SDK-Oberfläche. Die vollständige Liste mit mehr als 200 Einstiegspunkten befindet sich in +Diese Tabelle ist absichtlich die gängige Migrations-Teilmenge und nicht die vollständige SDK- +Oberfläche. Die vollständige Liste mit über 200 Einstiegspunkten befindet sich in `scripts/lib/plugin-sdk-entrypoints.json`. -Diese Liste enthält weiterhin einige Helper-Seams für gebündelte Plugins wie +Diese Liste enthält weiterhin einige Hilfs-Schnittstellen für gebündelte Plugins wie `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, -`plugin-sdk/zalo-setup` und `plugin-sdk/matrix*`. Diese bleiben für die Wartung gebündelter Plugins und aus Kompatibilitätsgründen exportiert, werden aber bewusst aus der gängigen Migrationstabelle ausgelassen und sind nicht das empfohlene Ziel für neuen Plugin-Code. +`plugin-sdk/zalo-setup` und `plugin-sdk/matrix*`. Diese bleiben für die Wartung +gebündelter Plugins und aus Kompatibilitätsgründen exportiert, werden aber bewusst +nicht in die gängige Migrationstabelle aufgenommen und sind nicht das empfohlene Ziel für +neuen Plugin-Code. -Dieselbe Regel gilt für andere Familien gebündelter Hilfsfunktionen wie: +Dieselbe Regel gilt für andere Familien gebündelter Hilfsfunktionen, zum Beispiel: - Browser-Support-Hilfsfunktionen: `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` - Matrix: `plugin-sdk/matrix*` - LINE: `plugin-sdk/line*` - IRC: `plugin-sdk/irc*` -- gebündelte Helper-/Plugin-Oberflächen wie `plugin-sdk/googlechat`, +- gebündelte Hilfs-/Plugin-Oberflächen wie `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles*`, `plugin-sdk/mattermost*`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, @@ -347,19 +353,19 @@ Dieselbe Regel gilt für andere Familien gebündelter Hilfsfunktionen wie: `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership` und `plugin-sdk/voice-call` -`plugin-sdk/github-copilot-token` stellt derzeit die schmale Token-Helper-Oberfläche +`plugin-sdk/github-copilot-token` stellt derzeit die schmale Token-Hilfsoberfläche `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` bereit. Verwenden Sie den schmalsten Import, der zur Aufgabe passt. Wenn Sie einen Export nicht finden können, -prüfen Sie den Quellcode unter `src/plugin-sdk/` oder fragen Sie in Discord. +prüfen Sie den Quellcode unter `src/plugin-sdk/` oder fragen Sie in Discord nach. ## Zeitplan für die Entfernung | Wann | Was passiert | | ---------------------- | ----------------------------------------------------------------------- | | **Jetzt** | Veraltete Oberflächen geben Laufzeitwarnungen aus | -| **Nächste Hauptversion** | Veraltete Oberflächen werden entfernt; Plugins, die sie noch verwenden, schlagen fehl | +| **Nächste Hauptversion** | Veraltete Oberflächen werden entfernt; Plugins, die sie weiterhin verwenden, schlagen fehl | Alle Core-Plugins wurden bereits migriert. Externe Plugins sollten vor der nächsten Hauptversion migrieren. @@ -374,11 +380,11 @@ OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run Dies ist ein temporärer Notausgang, keine dauerhafte Lösung. -## Verwandte Themen +## Verwandt - [Erste Schritte](/de/plugins/building-plugins) — Erstellen Sie Ihr erstes Plugin -- [SDK-Überblick](/de/plugins/sdk-overview) — vollständige Referenz für Subpfad-Imports -- [Channel-Plugins](/de/plugins/sdk-channel-plugins) — Erstellen von Channel-Plugins +- [SDK-Überblick](/de/plugins/sdk-overview) — vollständige Referenz für Unterpfad-Imports +- [Kanal-Plugins](/de/plugins/sdk-channel-plugins) — Erstellen von Kanal-Plugins - [Provider-Plugins](/de/plugins/sdk-provider-plugins) — Erstellen von Provider-Plugins - [Plugin-Interna](/de/plugins/architecture) — tiefer Einblick in die Architektur -- [Plugin-Manifest](/de/plugins/manifest) — Referenz für das Manifest-Schema +- [Plugin-Manifest](/de/plugins/manifest) — Referenz des Manifest-Schemas diff --git a/docs/de/plugins/sdk-overview.md b/docs/de/plugins/sdk-overview.md index b967d89cc..1b5d3899d 100644 --- a/docs/de/plugins/sdk-overview.md +++ b/docs/de/plugins/sdk-overview.md @@ -1,60 +1,60 @@ --- read_when: - - Sie müssen wissen, aus welchem SDK-Subpfad importiert werden soll. - - Sie möchten eine Referenz für alle Registrierungsmethoden in `OpenClawPluginApi`. - - Sie suchen nach einem bestimmten SDK-Export. + - Sie müssen wissen, aus welchem SDK-Subpfad importiert werden soll + - Sie möchten eine Referenz für alle Registrierungsmethoden in OpenClawPluginApi + - Sie suchen einen bestimmten SDK-Export heraus sidebarTitle: SDK Overview -summary: Import-Map, API-Referenz zur Registrierung und SDK-Architektur -title: Plugin SDK-Überblick +summary: Import-Map, Referenz zur Registrierungs-API und SDK-Architektur +title: Plugin SDK – Übersicht x-i18n: - generated_at: "2026-04-18T06:12:46Z" + generated_at: "2026-04-19T01:11:24Z" model: gpt-5.4 provider: openai - source_hash: 05d3d0022cca32d29c76f6cea01cdf4f88ac69ef0ef3d7fb8a60fbf9a6b9b331 + source_hash: 522c2c542bc0ea4793541fda18931b963ad71f07e9c83e4f22f05184eb1ba91a source_path: plugins/sdk-overview.md workflow: 15 --- -# Plugin SDK-Überblick +# Plugin SDK – Übersicht Das Plugin SDK ist der typisierte Vertrag zwischen Plugins und dem Core. Diese Seite ist die -Referenz dafür, **was importiert werden soll** und **was Sie registrieren können**. +Referenz für **was importiert werden soll** und **was registriert werden kann**. **Suchen Sie nach einer Schritt-für-Schritt-Anleitung?** - - Erstes Plugin? Beginnen Sie mit [Erste Schritte](/de/plugins/building-plugins) - - Channel-Plugin? Siehe [Channel Plugins](/de/plugins/sdk-channel-plugins) + - Erstes Plugin? Beginnen Sie mit [Getting Started](/de/plugins/building-plugins) + - Kanal-Plugin? Siehe [Channel Plugins](/de/plugins/sdk-channel-plugins) - Provider-Plugin? Siehe [Provider Plugins](/de/plugins/sdk-provider-plugins) ## Importkonvention -Importieren Sie immer aus einem bestimmten Subpfad: +Importieren Sie immer aus einem spezifischen Subpfad: ```typescript import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"; import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; ``` -Jeder Subpfad ist ein kleines, in sich geschlossenes Modul. Dadurch bleibt der Start schnell und -Probleme mit zirkulären Abhängigkeiten werden vermieden. Für Channel-spezifische Entry-/Build-Helper -sollten Sie `openclaw/plugin-sdk/channel-core` bevorzugen; verwenden Sie `openclaw/plugin-sdk/core` für -die breitere übergeordnete Oberfläche und gemeinsame Helper wie +Jeder Subpfad ist ein kleines, in sich geschlossenes Modul. Das hält den Start schnell und +verhindert Probleme mit zirkulären Abhängigkeiten. Für kanalspezifische Entry-/Build-Helfer +bevorzugen Sie `openclaw/plugin-sdk/channel-core`; verwenden Sie `openclaw/plugin-sdk/core` für +die breitere Oberflächen-API und gemeinsame Helfer wie `buildChannelConfigSchema`. -Fügen Sie keine providerbenannten Convenience-Seams wie +Fügen Sie keine providerbenannten Convenience-Seams hinzu und hängen Sie nicht von solchen ab, wie `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp` oder -helper-Seams mit Channel-Branding hinzu und hängen Sie auch nicht davon ab. Gebündelte Plugins sollten generische +kanalgebrandeten Helper-Seams. Gebündelte Plugins sollten generische SDK-Subpfade innerhalb ihrer eigenen `api.ts`- oder `runtime-api.ts`-Barrels zusammensetzen, und der Core sollte entweder diese pluginlokalen Barrels verwenden oder einen schmalen generischen SDK- -Vertrag hinzufügen, wenn der Bedarf wirklich kanalübergreifend ist. +Vertrag hinzufügen, wenn der Bedarf tatsächlich kanalübergreifend ist. -Die generierte Export-Map enthält weiterhin eine kleine Menge an Helper-Seams für gebündelte Plugins +Die generierte Export-Map enthält weiterhin eine kleine Menge gebündelter Plugin-Helper-Seams wie `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` und `plugin-sdk/matrix*`. Diese Subpfade existieren nur für die Wartung gebündelter Plugins und zur Kompatibilität; sie werden -absichtlich aus der untenstehenden allgemeinen Tabelle ausgelassen und sind nicht der empfohlene +in der gemeinsamen Tabelle unten bewusst ausgelassen und sind nicht der empfohlene Importpfad für neue Drittanbieter-Plugins. ## Subpfad-Referenz @@ -63,257 +63,258 @@ Die am häufigsten verwendeten Subpfade, nach Zweck gruppiert. Die generierte vo mehr als 200 Subpfaden befindet sich in `scripts/lib/plugin-sdk-entrypoints.json`. Reservierte Helper-Subpfade für gebündelte Plugins erscheinen weiterhin in dieser generierten Liste. -Behandeln Sie diese als Implementierungsdetail-/Kompatibilitätsoberflächen, es sei denn, eine Dokumentationsseite -kennzeichnet ausdrücklich einen davon als öffentlich. +Behandeln Sie diese als Implementierungsdetail-/Kompatibilitätsoberflächen, sofern nicht eine Dokuseite +eine davon ausdrücklich als öffentlich bewirbt. ### Plugin-Entry -| Subpfad | Wichtige Exporte | -| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -| `plugin-sdk/plugin-entry` | `definePluginEntry` | +| Subpfad | Wichtige Exporte | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `plugin-sdk/plugin-entry` | `definePluginEntry` | | `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` | -| `plugin-sdk/config-schema` | `OpenClawSchema` | -| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | +| `plugin-sdk/config-schema` | `OpenClawSchema` | +| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - + | Subpfad | Wichtige Exporte | | --- | --- | | `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | - | `plugin-sdk/config-schema` | Root-`openclaw.json`-Zod-Schema-Export (`OpenClawSchema`) | + | `plugin-sdk/config-schema` | Root-`openclaw.json`-Zod-Schemaexport (`OpenClawSchema`) | | `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | - | `plugin-sdk/setup` | Gemeinsame Helper für Setup-Assistenten, Allowlist-Aufforderungen, Builder für den Setup-Status | + | `plugin-sdk/setup` | Gemeinsame Setup-Wizard-Helfer, Allowlist-Eingabeaufforderungen, Builder für Setup-Status | | `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` | | `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` | | `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Helper für Multi-Account-Konfiguration/Aktions-Gates, Default-Account-Fallback-Helper | - | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, Helper zur Normalisierung von Account-IDs | - | `plugin-sdk/account-resolution` | Helper für Account-Lookup + Default-Fallback | - | `plugin-sdk/account-helpers` | Schmale Helper für Account-Listen/Account-Aktionen | + | `plugin-sdk/account-core` | Hilfen für Multi-Account-Konfiguration/Aktions-Gates, Hilfen für Default-Account-Fallback | + | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, Hilfen zur Normalisierung von Account-IDs | + | `plugin-sdk/account-resolution` | Account-Lookup + Hilfen für Default-Fallback | + | `plugin-sdk/account-helpers` | Schmale Hilfen für Account-Liste/Account-Aktionen | | `plugin-sdk/channel-pairing` | `createChannelPairingController` | | `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` | - | `plugin-sdk/channel-config-schema` | Typen für Channel-Konfigurationsschemata | - | `plugin-sdk/telegram-command-config` | Helper zur Normalisierung/Validierung benutzerdefinierter Telegram-Befehle mit Fallback auf gebündelte Verträge | - | `plugin-sdk/command-gating` | Schmale Helper für Gates zur Befehlsautorisierung | + | `plugin-sdk/channel-config-schema` | Typen für Kanalkonfigurationsschemas | + | `plugin-sdk/telegram-command-config` | Hilfen zur Normalisierung/Validierung benutzerdefinierter Telegram-Befehle mit gebündeltem Vertrags-Fallback | + | `plugin-sdk/command-gating` | Schmale Hilfen für Command-Autorisierungs-Gates | | `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` | | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` | - | `plugin-sdk/inbound-envelope` | Gemeinsame Helper für eingehende Routen und Envelope-Builder | - | `plugin-sdk/inbound-reply-dispatch` | Gemeinsame Helper zum Erfassen und Verteilen eingehender Daten | - | `plugin-sdk/messaging-targets` | Helper zum Parsen/Abgleichen von Zielen | - | `plugin-sdk/outbound-media` | Gemeinsame Helper zum Laden ausgehender Medien | - | `plugin-sdk/outbound-runtime` | Helper für ausgehende Identität/Sende-Delegates | - | `plugin-sdk/poll-runtime` | Schmale Helper zur Normalisierung von Polls | - | `plugin-sdk/thread-bindings-runtime` | Helper für den Lebenszyklus von Thread-Bindings und Adapter | - | `plugin-sdk/agent-media-payload` | Veralteter Payload-Builder für Agent-Medien | - | `plugin-sdk/conversation-runtime` | Helper für Conversation-/Thread-Binding, Pairing und konfigurierte Bindings | - | `plugin-sdk/runtime-config-snapshot` | Helper für Runtime-Konfigurations-Snapshots | - | `plugin-sdk/runtime-group-policy` | Helper zur Auflösung von Runtime-Gruppenrichtlinien | - | `plugin-sdk/channel-status` | Gemeinsame Helper für Snapshots/Zusammenfassungen des Channel-Status | - | `plugin-sdk/channel-config-primitives` | Schmale Primitive für Channel-Konfigurationsschemata | - | `plugin-sdk/channel-config-writes` | Helper zur Autorisierung von Channel-Konfigurationsschreibvorgängen | - | `plugin-sdk/channel-plugin-common` | Gemeinsame Prelude-Exporte für Channel-Plugins | - | `plugin-sdk/allowlist-config-edit` | Helper zum Bearbeiten/Lesen von Allowlist-Konfigurationen | - | `plugin-sdk/group-access` | Gemeinsame Helper für Entscheidungen zum Gruppenzugriff | - | `plugin-sdk/direct-dm` | Gemeinsame Helper für Auth/Guards bei Direct-DM | - | `plugin-sdk/interactive-runtime` | Helper zur Normalisierung/Reduktion interaktiver Antwort-Payloads | - | `plugin-sdk/channel-inbound` | Kompatibilitäts-Barrel für Inbound-Debounce, Mention-Matching, Mention-Policy-Helper und Envelope-Helper | - | `plugin-sdk/channel-mention-gating` | Schmale Mention-Policy-Helper ohne die breitere Inbound-Runtime-Oberfläche | - | `plugin-sdk/channel-location` | Helper für Channel-Standortkontext und -Formatierung | - | `plugin-sdk/channel-logging` | Channel-Logging-Helper für eingehende Drops und Fehler bei Typing/Ack | + | `plugin-sdk/inbound-envelope` | Gemeinsame Hilfen für eingehende Routen + Envelope-Builder | + | `plugin-sdk/inbound-reply-dispatch` | Gemeinsame Hilfen zum Erfassen und Dispatchen eingehender Daten | + | `plugin-sdk/messaging-targets` | Hilfen zum Parsen/Abgleichen von Zielen | + | `plugin-sdk/outbound-media` | Gemeinsame Hilfen zum Laden ausgehender Medien | + | `plugin-sdk/outbound-runtime` | Hilfen für ausgehende Identität/Sende-Delegation | + | `plugin-sdk/poll-runtime` | Schmale Hilfen zur Umfrage-Normalisierung | + | `plugin-sdk/thread-bindings-runtime` | Hilfen für Lebenszyklus und Adapter von Thread-Bindings | + | `plugin-sdk/agent-media-payload` | Legacy-Builder für Agent-Medien-Payloads | + | `plugin-sdk/conversation-runtime` | Hilfen für Konversations-/Thread-Binding, Pairing und konfigurierte Bindings | + | `plugin-sdk/runtime-config-snapshot` | Hilfsfunktion für Runtime-Konfigurations-Snapshots | + | `plugin-sdk/runtime-group-policy` | Hilfen zur Auflösung von Runtime-Gruppenrichtlinien | + | `plugin-sdk/channel-status` | Gemeinsame Hilfen für Snapshots/Zusammenfassungen des Kanalstatus | + | `plugin-sdk/channel-config-primitives` | Schmale Primitive für Kanalkonfigurationsschemas | + | `plugin-sdk/channel-config-writes` | Hilfen für die Autorisierung von Kanalkonfigurations-Schreibvorgängen | + | `plugin-sdk/channel-plugin-common` | Gemeinsame Prelude-Exporte für Kanal-Plugins | + | `plugin-sdk/allowlist-config-edit` | Hilfen zum Bearbeiten/Lesen von Allowlist-Konfigurationen | + | `plugin-sdk/group-access` | Gemeinsame Hilfen für Entscheidungen zum Gruppenzugriff | + | `plugin-sdk/direct-dm` | Gemeinsame Hilfen für Auth/Guards bei direkten DMs | + | `plugin-sdk/interactive-runtime` | Hilfen zur Normalisierung/Reduktion interaktiver Antwort-Payloads | + | `plugin-sdk/channel-inbound` | Kompatibilitäts-Barrel für Inbound-Debounce, Mention-Abgleich, Mention-Policy-Helfer und Envelope-Helfer | + | `plugin-sdk/channel-mention-gating` | Schmale Mention-Policy-Helfer ohne die breitere Inbound-Runtime-Oberfläche | + | `plugin-sdk/channel-location` | Hilfen für Kanallokationskontext und Formatierung | + | `plugin-sdk/channel-logging` | Kanal-Logging-Helfer für eingehende Drops und Fehler bei Typing/Ack | | `plugin-sdk/channel-send-result` | Antwortergebnis-Typen | | `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` | - | `plugin-sdk/channel-targets` | Helper zum Parsen/Abgleichen von Zielen | - | `plugin-sdk/channel-contract` | Typen für Channel-Verträge | - | `plugin-sdk/channel-feedback` | Wiring für Feedback/Reaktionen | - | `plugin-sdk/channel-secret-runtime` | Schmale Helper für Secret-Verträge wie `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment` und Secret-Zieltypen | + | `plugin-sdk/channel-targets` | Hilfen zum Parsen/Abgleichen von Zielen | + | `plugin-sdk/channel-contract` | Kanalvertragstypen | + | `plugin-sdk/channel-feedback` | Verdrahtung von Feedback/Reaktionen | + | `plugin-sdk/channel-secret-runtime` | Schmale Secret-Contract-Helfer wie `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment` und Secret-Zieltypen | | Subpfad | Wichtige Exporte | | --- | --- | | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - | `plugin-sdk/provider-setup` | Kuratierte Setup-Helper für lokale/selbstgehostete Provider | - | `plugin-sdk/self-hosted-provider-setup` | Fokussierte Setup-Helper für selbstgehostete OpenAI-kompatible Provider | + | `plugin-sdk/provider-setup` | Kuratierte Setup-Helfer für lokale/selbst gehostete Provider | + | `plugin-sdk/self-hosted-provider-setup` | Fokussierte Setup-Helfer für OpenAI-kompatible selbst gehostete Provider | | `plugin-sdk/cli-backend` | CLI-Backend-Standards + Watchdog-Konstanten | - | `plugin-sdk/provider-auth-runtime` | Helper zur API-Key-Auflösung zur Laufzeit für Provider-Plugins | - | `plugin-sdk/provider-auth-api-key` | Helper für API-Key-Onboarding/Profilschreibvorgänge wie `upsertApiKeyProfile` | - | `plugin-sdk/provider-auth-result` | Standard-Builder für OAuth-Authentifizierungsergebnisse | - | `plugin-sdk/provider-auth-login` | Gemeinsame Helper für interaktive Logins bei Provider-Plugins | - | `plugin-sdk/provider-env-vars` | Helper für den Lookup von Umgebungsvariablen für Provider-Authentifizierung | + | `plugin-sdk/provider-auth-runtime` | Runtime-Hilfen zur Auflösung von API-Schlüsseln für Provider-Plugins | + | `plugin-sdk/provider-auth-api-key` | Hilfen für API-Schlüssel-Onboarding/Profilschreibvorgänge wie `upsertApiKeyProfile` | + | `plugin-sdk/provider-auth-result` | Standard-Builder für OAuth-Auth-Ergebnisse | + | `plugin-sdk/provider-auth-login` | Gemeinsame Hilfen für interaktive Anmeldung bei Provider-Plugins | + | `plugin-sdk/provider-env-vars` | Hilfen zum Lookup von Auth-Umgebungsvariablen für Provider | | `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` | - | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Builder für Replay-Richtlinien, Provider-Endpunkt-Helper und Helper zur Normalisierung von Modell-IDs wie `normalizeNativeXaiModelId` | + | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, gemeinsame Builder für Replay-Richtlinien, Hilfen für Provider-Endpunkte und Hilfen zur Normalisierung von Modell-IDs wie `normalizeNativeXaiModelId` | | `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-http` | Generische Helper für HTTP-/Endpunktfunktionen von Providern | - | `plugin-sdk/provider-web-fetch-contract` | Schmale Helper für Verträge zur Web-Fetch-Konfiguration/-Auswahl wie `enablePluginInConfig` und `WebFetchProviderPlugin` | - | `plugin-sdk/provider-web-fetch` | Helper für Registrierung/Cache von Web-Fetch-Providern | - | `plugin-sdk/provider-web-search-config-contract` | Schmale Helper für Konfiguration/Zugangsdaten der Websuche für Provider, die keine Plugin-Aktivierungsverdrahtung benötigen | - | `plugin-sdk/provider-web-search-contract` | Schmale Helper für Verträge zu Websuch-Konfiguration/Zugangsdaten wie `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` und bereichsbezogene Setter/Getter für Zugangsdaten | - | `plugin-sdk/provider-web-search` | Helper für Registrierung/Cache/Runtimes von Websuch-Providern | - | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Bereinigung + Diagnostik von Gemini-Schemata und xAI-Kompatibilitäts-Helper wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | + | `plugin-sdk/provider-http` | Generische Hilfen für HTTP/Endpunkt-Fähigkeiten von Providern | + | `plugin-sdk/provider-web-fetch-contract` | Schmale Vertragshilfen für Konfiguration/Auswahl von Web-Fetch wie `enablePluginInConfig` und `WebFetchProviderPlugin` | + | `plugin-sdk/provider-web-fetch` | Hilfen für Registrierung/Cache von Web-Fetch-Providern | + | `plugin-sdk/provider-web-search-config-contract` | Schmale Hilfen für Web-Search-Konfiguration/Credentials für Provider, die keine Plugin-Enable-Verdrahtung benötigen | + | `plugin-sdk/provider-web-search-contract` | Schmale Vertragshilfen für Web-Search-Konfiguration/Credentials wie `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` und bereichsspezifische Setter/Getter für Credentials | + | `plugin-sdk/provider-web-search` | Hilfen für Registrierung/Cache/Runtime von Web-Search-Providern | + | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini-Schema-Bereinigung + Diagnose sowie xAI-Kompatibilitätshilfen wie `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | | `plugin-sdk/provider-usage` | `fetchClaudeUsage` und ähnliche | - | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Stream-Wrapper-Typen und gemeinsame Wrapper-Helper für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | - | `plugin-sdk/provider-onboard` | Helper für Onboarding-Konfigurations-Patches | - | `plugin-sdk/global-singleton` | Prozesslokale Singleton-/Map-/Cache-Helper | + | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, Stream-Wrapper-Typen und gemeinsame Wrapper-Helfer für Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-transport-runtime` | Native Hilfen für Provider-Transport wie guarded fetch, Transportnachrichten-Transformationen und beschreibbare Transport-Event-Streams | + | `plugin-sdk/provider-onboard` | Hilfen zum Patchen der Onboarding-Konfiguration | + | `plugin-sdk/global-singleton` | Hilfen für prozesslokale Singletons/Maps/Caches | - + | Subpfad | Wichtige Exporte | | --- | --- | - | `plugin-sdk/command-auth` | `resolveControlCommandGate`, Helper für die Befehlsregistrierung, Helper für die Sender-Autorisierung | + | `plugin-sdk/command-auth` | `resolveControlCommandGate`, Hilfen für Befehlsregister, Hilfen für Sender-Autorisierung | | `plugin-sdk/command-status` | Builder für Befehls-/Hilfenachrichten wie `buildCommandsMessagePaginated` und `buildHelpMessage` | - | `plugin-sdk/approval-auth-runtime` | Helper für die Auflösung von Genehmigenden und die Authentifizierung chatgleicher Aktionen | - | `plugin-sdk/approval-client-runtime` | Helper für native Ausführungsfreigabeprofile/-filter | - | `plugin-sdk/approval-delivery-runtime` | Native Adapter für Genehmigungsfunktionen/-zustellung | - | `plugin-sdk/approval-gateway-runtime` | Gemeinsamer Helper zur Auflösung des Genehmigungs-Gateway | - | `plugin-sdk/approval-handler-adapter-runtime` | Leichtgewichtige Helper zum Laden nativer Genehmigungsadapter für schnelle Channel-Entrypoints | - | `plugin-sdk/approval-handler-runtime` | Breitere Runtime-Helper für Genehmigungshandler; bevorzugen Sie die schmaleren Adapter-/Gateway-Seams, wenn diese ausreichen | - | `plugin-sdk/approval-native-runtime` | Native Helper für Genehmigungsziele und Account-Bindings | - | `plugin-sdk/approval-reply-runtime` | Helper für Antwort-Payloads von Ausführungs-/Plugin-Genehmigungen | - | `plugin-sdk/command-auth-native` | Native Befehlsauthentifizierung + native Session-Ziel-Helper | - | `plugin-sdk/command-detection` | Gemeinsame Helper zur Befehlserkennung | - | `plugin-sdk/command-surface` | Helper zur Normalisierung von Befehls-Textkörpern und Befehlsoberflächen | + | `plugin-sdk/approval-auth-runtime` | Hilfen für Approver-Auflösung und Action-Auth im selben Chat | + | `plugin-sdk/approval-client-runtime` | Hilfen für native Ausführungsfreigabe-Profile/-Filter | + | `plugin-sdk/approval-delivery-runtime` | Native Adapter für Freigabefähigkeiten/-zustellung | + | `plugin-sdk/approval-gateway-runtime` | Gemeinsame Hilfsfunktion für die Auflösung des Freigabe-Gateways | + | `plugin-sdk/approval-handler-adapter-runtime` | Leichtgewichtige Hilfen zum Laden nativer Freigabe-Adapter für Hot-Channel-Entrypoints | + | `plugin-sdk/approval-handler-runtime` | Breitere Runtime-Helfer für Freigabe-Handler; bevorzugen Sie die schmaleren Adapter-/Gateway-Seams, wenn diese ausreichen | + | `plugin-sdk/approval-native-runtime` | Hilfen für native Freigabeziele + Account-Bindings | + | `plugin-sdk/approval-reply-runtime` | Hilfen für Antwort-Payloads bei Ausführungs-/Plugin-Freigaben | + | `plugin-sdk/command-auth-native` | Native Befehlsauthentifizierung + native Hilfen für Session-Ziele | + | `plugin-sdk/command-detection` | Gemeinsame Hilfen zur Befehlserkennung | + | `plugin-sdk/command-surface` | Hilfen zur Normalisierung von Befehls-Body und zur Befehlsoberfläche | | `plugin-sdk/allow-from` | `formatAllowFromLowercase` | - | `plugin-sdk/channel-secret-runtime` | Schmale Helper zur Sammlung von Secret-Verträgen für Channel-/Plugin-Secret-Oberflächen | - | `plugin-sdk/secret-ref-runtime` | Schmale `coerceSecretRef`- und SecretRef-Typing-Helper für Secret-Vertrags-/Konfigurations-Parsing | - | `plugin-sdk/security-runtime` | Gemeinsame Helper für Vertrauen, DM-Gating, externe Inhalte und Secret-Sammlung | - | `plugin-sdk/ssrf-policy` | Helper für Host-Allowlists und SSRF-Richtlinien für private Netzwerke | - | `plugin-sdk/ssrf-dispatcher` | Schmale Helper für angeheftete Dispatcher ohne die breite Infra-Runtime-Oberfläche | - | `plugin-sdk/ssrf-runtime` | Helper für angeheftete Dispatcher, SSRF-geschütztes Fetch und SSRF-Richtlinien | - | `plugin-sdk/secret-input` | Helper zum Parsen von Secret-Eingaben | - | `plugin-sdk/webhook-ingress` | Helper für Webhook-Anfragen/-Ziele | - | `plugin-sdk/webhook-request-guards` | Helper für Größe/Timeout von Anfragetextkörpern | + | `plugin-sdk/channel-secret-runtime` | Schmale Hilfen zur Secret-Contract-Sammlung für Secret-Oberflächen von Kanälen/Plugins | + | `plugin-sdk/secret-ref-runtime` | Schmale Hilfen für `coerceSecretRef` und SecretRef-Typisierung für Secret-Contract-/Konfigurations-Parsing | + | `plugin-sdk/security-runtime` | Gemeinsame Hilfen für Vertrauen, DM-Gating, externe Inhalte und Secret-Sammlung | + | `plugin-sdk/ssrf-policy` | Hilfen für Host-Allowlist und SSRF-Richtlinien für private Netzwerke | + | `plugin-sdk/ssrf-dispatcher` | Schmale Hilfen für angeheftete Dispatcher ohne die breite Infra-Runtime-Oberfläche | + | `plugin-sdk/ssrf-runtime` | Angehefteter Dispatcher, SSRF-geschütztes Fetch und Hilfen für SSRF-Richtlinien | + | `plugin-sdk/secret-input` | Hilfen zum Parsen geheimer Eingaben | + | `plugin-sdk/webhook-ingress` | Hilfen für Webhook-Anfragen/Ziele | + | `plugin-sdk/webhook-request-guards` | Hilfen für Größe/Timeout von Request-Bodys | | Subpfad | Wichtige Exporte | | --- | --- | - | `plugin-sdk/runtime` | Breite Runtime-/Logging-/Backup-/Plugin-Installations-Helper | - | `plugin-sdk/runtime-env` | Schmale Helper für Runtime-Umgebung, Logger, Timeout, Retry und Backoff | - | `plugin-sdk/channel-runtime-context` | Generische Helper für Registrierung und Lookup von Channel-Runtime-Kontexten | + | `plugin-sdk/runtime` | Breite Runtime-/Logging-/Backup-/Plugin-Install-Helfer | + | `plugin-sdk/runtime-env` | Schmale Hilfen für Runtime-Umgebung, Logger, Timeout, Retry und Backoff | + | `plugin-sdk/channel-runtime-context` | Generische Hilfen für Registrierung und Lookup von Channel-Runtime-Kontexten | | `plugin-sdk/runtime-store` | `createPluginRuntimeStore` | - | `plugin-sdk/plugin-runtime` | Gemeinsame Helper für Plugin-Befehle/-Hooks/-HTTP/-Interaktivität | - | `plugin-sdk/hook-runtime` | Gemeinsame Helper für Webhook-/interne Hook-Pipelines | - | `plugin-sdk/lazy-runtime` | Helper für lazy Runtime-Importe/-Bindings wie `createLazyRuntimeModule`, `createLazyRuntimeMethod` und `createLazyRuntimeSurface` | - | `plugin-sdk/process-runtime` | Helper für Prozessausführung | - | `plugin-sdk/cli-runtime` | Helper für CLI-Formatierung, Warten und Versionen | - | `plugin-sdk/gateway-runtime` | Gateway-Client- und Channel-Status-Patch-Helper | - | `plugin-sdk/config-runtime` | Helper zum Laden/Schreiben von Konfigurationen | + | `plugin-sdk/plugin-runtime` | Gemeinsame Hilfen für Plugin-Befehle/-Hooks/-HTTP/-Interaktionen | + | `plugin-sdk/hook-runtime` | Gemeinsame Hilfen für Pipelines interner/Webhook-Hooks | + | `plugin-sdk/lazy-runtime` | Hilfen für Lazy-Runtime-Import/-Binding wie `createLazyRuntimeModule`, `createLazyRuntimeMethod` und `createLazyRuntimeSurface` | + | `plugin-sdk/process-runtime` | Hilfen für die Prozessausführung | + | `plugin-sdk/cli-runtime` | Hilfen für CLI-Formatierung, Warten und Version | + | `plugin-sdk/gateway-runtime` | Hilfen für Gateway-Client und Kanalstatus-Patches | + | `plugin-sdk/config-runtime` | Hilfen zum Laden/Schreiben von Konfigurationen | | `plugin-sdk/telegram-command-config` | Normalisierung von Telegram-Befehlsnamen/-beschreibungen und Prüfungen auf Duplikate/Konflikte, auch wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist | | `plugin-sdk/text-autolink-runtime` | Erkennung von Autolinks für Dateireferenzen ohne das breite `text-runtime`-Barrel | - | `plugin-sdk/approval-runtime` | Helper für Ausführungs-/Plugin-Genehmigungen, Builder für Genehmigungsfunktionen, Auth-/Profil-Helper, native Routing-/Runtime-Helper | - | `plugin-sdk/reply-runtime` | Gemeinsame Helper für Inbound-/Antwort-Runtime, Chunking, Dispatch, Heartbeat, Antwortplanung | - | `plugin-sdk/reply-dispatch-runtime` | Schmale Helper für Antwort-Dispatch/-Finalisierung | - | `plugin-sdk/reply-history` | Gemeinsame Helper für Antwortverläufe in kurzen Zeitfenstern wie `buildHistoryContext`, `recordPendingHistoryEntry` und `clearHistoryEntriesIfEnabled` | + | `plugin-sdk/approval-runtime` | Hilfen für Ausführungs-/Plugin-Freigabe, Builder für Freigabefähigkeiten, Auth-/Profil-Helfer, native Routing-/Runtime-Helfer | + | `plugin-sdk/reply-runtime` | Gemeinsame Inbound-/Reply-Runtime-Helfer, Chunking, Dispatch, Heartbeat, Reply-Planer | + | `plugin-sdk/reply-dispatch-runtime` | Schmale Hilfen für Reply-Dispatch/-Finalisierung | + | `plugin-sdk/reply-history` | Gemeinsame Hilfen für kurzfristigen Antwortverlauf wie `buildHistoryContext`, `recordPendingHistoryEntry` und `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Schmale Helper für Text-/Markdown-Chunking | - | `plugin-sdk/session-store-runtime` | Helper für Pfad und `updated-at` des Session Store | - | `plugin-sdk/state-paths` | Helper für Pfade zu Zustand/OAuth-Verzeichnissen | - | `plugin-sdk/routing` | Helper für Route-/Session-Key-/Account-Bindings wie `resolveAgentRoute`, `buildAgentSessionKey` und `resolveDefaultAgentBoundAccountId` | - | `plugin-sdk/status-helpers` | Gemeinsame Helper für Zusammenfassungen des Channel-/Account-Status, Standards für Runtime-Zustände und Helper für Problemmetadaten | - | `plugin-sdk/target-resolver-runtime` | Gemeinsame Helper zur Zielauflösung | - | `plugin-sdk/string-normalization-runtime` | Helper zur Slug-/String-Normalisierung | + | `plugin-sdk/reply-chunking` | Schmale Hilfen für Text-/Markdown-Chunking | + | `plugin-sdk/session-store-runtime` | Hilfen für Session-Store-Pfade + `updated-at` | + | `plugin-sdk/state-paths` | Hilfen für Pfade zu Status-/OAuth-Verzeichnissen | + | `plugin-sdk/routing` | Hilfen für Route-/Session-Key-/Account-Bindings wie `resolveAgentRoute`, `buildAgentSessionKey` und `resolveDefaultAgentBoundAccountId` | + | `plugin-sdk/status-helpers` | Gemeinsame Hilfen für Zusammenfassungen des Kanal-/Account-Status, Runtime-Status-Standards und Issue-Metadaten | + | `plugin-sdk/target-resolver-runtime` | Gemeinsame Hilfen für Target-Resolver | + | `plugin-sdk/string-normalization-runtime` | Hilfen zur Slug-/String-Normalisierung | | `plugin-sdk/request-url` | String-URLs aus Fetch-/Request-ähnlichen Eingaben extrahieren | - | `plugin-sdk/run-command` | Zeitgesteuerter Befehlsrunner mit normalisierten stdout-/stderr-Ergebnissen | - | `plugin-sdk/param-readers` | Gängige Leser für Tool-/CLI-Parameter | + | `plugin-sdk/run-command` | Zeitgesteuerter Command-Runner mit normalisierten `stdout`-/`stderr`-Ergebnissen | + | `plugin-sdk/param-readers` | Gängige Param-Reader für Tools/CLI | | `plugin-sdk/tool-payload` | Normalisierte Payloads aus Tool-Ergebnisobjekten extrahieren | - | `plugin-sdk/tool-send` | Kanonische Sendeziel-Felder aus Tool-Argumenten extrahieren | - | `plugin-sdk/temp-path` | Gemeinsame Helper für temporäre Download-Pfade | - | `plugin-sdk/logging-core` | Helper für Subsystem-Logger und Schwärzung | - | `plugin-sdk/markdown-table-runtime` | Helper für Markdown-Tabellenmodi | - | `plugin-sdk/json-store` | Kleine Helper zum Lesen/Schreiben von JSON-Zuständen | - | `plugin-sdk/file-lock` | Reentrante Dateisperr-Helper | - | `plugin-sdk/persistent-dedupe` | Helper für festplattenbasierte Dedupe-Caches | - | `plugin-sdk/acp-runtime` | ACP-Runtime-/Session- und Antwort-Dispatch-Helper | + | `plugin-sdk/tool-send` | Kanonische Sendefelder für Ziele aus Tool-Argumenten extrahieren | + | `plugin-sdk/temp-path` | Gemeinsame Hilfen für Temp-Download-Pfade | + | `plugin-sdk/logging-core` | Hilfen für Subsystem-Logger und Redaction | + | `plugin-sdk/markdown-table-runtime` | Hilfen für den Markdown-Tabellenmodus | + | `plugin-sdk/json-store` | Kleine Hilfen zum Lesen/Schreiben von JSON-Status | + | `plugin-sdk/file-lock` | Hilfen für reentrante Dateisperren | + | `plugin-sdk/persistent-dedupe` | Hilfen für festplattenbasierte Dedupe-Caches | + | `plugin-sdk/acp-runtime` | Hilfen für ACP-Runtime/Session und Reply-Dispatch | | `plugin-sdk/acp-binding-resolve-runtime` | Schreibgeschützte ACP-Binding-Auflösung ohne Lifecycle-Startup-Importe | - | `plugin-sdk/agent-config-primitives` | Schmale Primitive für Runtime-Konfigurationsschemata von Agents | - | `plugin-sdk/boolean-param` | Nachsichtiger Leser für boolesche Parameter | - | `plugin-sdk/dangerous-name-runtime` | Helper zur Auflösung von Abgleichen gefährlicher Namen | - | `plugin-sdk/device-bootstrap` | Helper für Device-Bootstrap und Pairing-Token | - | `plugin-sdk/extension-shared` | Gemeinsame Primitive für Passive-Channel-, Status- und Ambient-Proxy-Helper | - | `plugin-sdk/models-provider-runtime` | Helper für `/models`-Befehle und Provider-Antworten | - | `plugin-sdk/skill-commands-runtime` | Helper für die Auflistung von Skills-Befehlen | - | `plugin-sdk/native-command-registry` | Helper zum Registrieren/Erstellen/Serialisieren nativer Befehle | - | `plugin-sdk/agent-harness` | Experimentelle Oberfläche für vertrauenswürdige Plugins für Low-Level-Agent-Harnesses: Harness-Typen, Helper zum Steuern/Abbrechen aktiver Ausführungen, OpenClaw-Tool-Bridge-Helper und Hilfsfunktionen für Versuchsergebnisse | - | `plugin-sdk/provider-zai-endpoint` | Helper zur Erkennung von Z.A.I-Endpunkten | - | `plugin-sdk/infra-runtime` | Helper für Systemereignisse/Heartbeat | - | `plugin-sdk/collection-runtime` | Kleine Helper für begrenzte Caches | - | `plugin-sdk/diagnostic-runtime` | Helper für Diagnose-Flags und -Ereignisse | - | `plugin-sdk/error-runtime` | Helper für Fehlergraphen, Formatierung, gemeinsame Fehlerklassifizierung, `isApprovalNotFoundError` | - | `plugin-sdk/fetch-runtime` | Helper für umhülltes Fetch, Proxy und angehefteten Lookup | - | `plugin-sdk/runtime-fetch` | Dispatcher-bewusstes Runtime-Fetch ohne Importe für Proxy/geschütztes Fetch | - | `plugin-sdk/response-limit-runtime` | Begrenzter Leser für Antworttextkörper ohne die breite Medien-Runtime-Oberfläche | - | `plugin-sdk/session-binding-runtime` | Aktueller Zustand von Conversation-Bindings ohne Routing für konfigurierte Bindings oder Pairing-Stores | - | `plugin-sdk/session-store-runtime` | Helper zum Lesen des Session Store ohne breite Importe für Konfigurationsschreibvorgänge/Wartung | - | `plugin-sdk/context-visibility-runtime` | Auflösung der Kontextsichtigkeit und Filterung ergänzender Kontexte ohne breite Importe für Konfiguration/Sicherheit | - | `plugin-sdk/string-coerce-runtime` | Schmale Helper zum Umwandeln und Normalisieren primitiver Records/Strings ohne Markdown-/Logging-Importe | - | `plugin-sdk/host-runtime` | Helper zur Normalisierung von Hostnamen und SCP-Hosts | - | `plugin-sdk/retry-runtime` | Helper für Retry-Konfiguration und Retry-Runner | - | `plugin-sdk/agent-runtime` | Helper für Agent-Verzeichnis/Identität/Workspace | - | `plugin-sdk/directory-runtime` | Konfigurationsgestützte Verzeichnisabfrage/-Deduplizierung | + | `plugin-sdk/agent-config-primitives` | Schmale Primitive für Agent-Runtime-Konfigurationsschemas | + | `plugin-sdk/boolean-param` | Toleranter Boolean-Param-Reader | + | `plugin-sdk/dangerous-name-runtime` | Hilfen zur Auflösung gefährlicher Namensabgleiche | + | `plugin-sdk/device-bootstrap` | Hilfen für Device-Bootstrap und Pairing-Token | + | `plugin-sdk/extension-shared` | Gemeinsame Primitive für passive Kanäle, Status und Ambient-Proxy-Helfer | + | `plugin-sdk/models-provider-runtime` | Hilfen für `/models`-Befehle/Provider-Antworten | + | `plugin-sdk/skill-commands-runtime` | Hilfen zum Auflisten von Skill-Befehlen | + | `plugin-sdk/native-command-registry` | Hilfen für Build/Serialisierung nativer Befehlsregister | + | `plugin-sdk/agent-harness` | Experimentelle Trusted-Plugin-Oberfläche für Agent-Harnesses auf niedriger Ebene: Harness-Typen, Hilfen zum Steuern/Abbrechen aktiver Läufe, OpenClaw-Tool-Bridge-Helfer und Utilities für Versuchsresultate | + | `plugin-sdk/provider-zai-endpoint` | Hilfen zur Erkennung von Z.AI-Endpunkten | + | `plugin-sdk/infra-runtime` | Hilfen für Systemereignisse/Heartbeat | + | `plugin-sdk/collection-runtime` | Kleine Hilfen für begrenzte Caches | + | `plugin-sdk/diagnostic-runtime` | Hilfen für Diagnose-Flags und -Ereignisse | + | `plugin-sdk/error-runtime` | Fehlergraph, Formatierung, gemeinsame Hilfen zur Fehlerklassifizierung, `isApprovalNotFoundError` | + | `plugin-sdk/fetch-runtime` | Hilfen für Wrapped Fetch, Proxy und angeheftete Lookups | + | `plugin-sdk/runtime-fetch` | Dispatcher-bewusstes Runtime-Fetch ohne Proxy-/Guarded-Fetch-Importe | + | `plugin-sdk/response-limit-runtime` | Reader für begrenzte Response-Bodys ohne die breite Media-Runtime-Oberfläche | + | `plugin-sdk/session-binding-runtime` | Aktueller Status von Konversations-Bindings ohne Routing konfigurierte Bindings oder Pairing-Stores | + | `plugin-sdk/session-store-runtime` | Hilfen zum Lesen von Session-Stores ohne breite Konfigurationsschreib-/Wartungsimporte | + | `plugin-sdk/context-visibility-runtime` | Auflösung der Kontextsichtigkeit und Filtern ergänzender Kontexte ohne breite Konfigurations-/Sicherheitsimporte | + | `plugin-sdk/string-coerce-runtime` | Schmale Hilfen zur Coercion und Normalisierung primitiver Records/Strings ohne Markdown-/Logging-Importe | + | `plugin-sdk/host-runtime` | Hilfen zur Normalisierung von Hostnamen und SCP-Hosts | + | `plugin-sdk/retry-runtime` | Hilfen für Retry-Konfiguration und Retry-Runner | + | `plugin-sdk/agent-runtime` | Hilfen für Agent-Verzeichnis, Identität und Workspace | + | `plugin-sdk/directory-runtime` | Konfigurationsgestützte Verzeichnisabfrage/Deduplizierung | | `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` | - + | Subpfad | Wichtige Exporte | | --- | --- | - | `plugin-sdk/media-runtime` | Gemeinsame Helper für Medien-Fetch/Transformation/Speicherung sowie Builder für Medien-Payloads | - | `plugin-sdk/media-generation-runtime` | Gemeinsame Helper für Failover bei Mediengenerierung, Kandidatenauswahl und Meldungen für fehlende Modelle | - | `plugin-sdk/media-understanding` | Typen für Provider zum Medienverständnis sowie bild-/audioseitige Helper-Exporte für Provider | - | `plugin-sdk/text-runtime` | Gemeinsame Helper für Text/Markdown/Logging wie das Entfernen von für den Assistenten sichtbarem Text, Helper für Markdown-Rendering/Chunking/Tabellen, Helper für Schwärzung, Helper für Direktiven-Tags und Hilfsfunktionen für sicheren Text | - | `plugin-sdk/text-chunking` | Helper für Chunking ausgehender Texte | - | `plugin-sdk/speech` | Typen für Sprach-Provider sowie richtlinien-, registrierungs- und validierungsseitige Helper für Provider | - | `plugin-sdk/speech-core` | Gemeinsame Typen für Sprach-Provider sowie gemeinsame Helper für Registrierung, Direktiven und Normalisierung | - | `plugin-sdk/realtime-transcription` | Typen für Provider für Echtzeit-Transkription und Registrierungs-Helper | - | `plugin-sdk/realtime-voice` | Typen für Provider für Echtzeit-Sprache und Registrierungs-Helper | - | `plugin-sdk/image-generation` | Typen für Bildgenerierungs-Provider | - | `plugin-sdk/image-generation-core` | Gemeinsame Typen für Bildgenerierung sowie Helper für Failover, Auth und Registrierung | - | `plugin-sdk/music-generation` | Typen für Musikgenerierungs-Provider/-Anfrage/-Ergebnis | - | `plugin-sdk/music-generation-core` | Gemeinsame Typen für Musikgenerierung sowie Helper für Failover, Provider-Lookup und Parsing von Modell-Referenzen | - | `plugin-sdk/video-generation` | Typen für Videogenerierungs-Provider/-Anfrage/-Ergebnis | - | `plugin-sdk/video-generation-core` | Gemeinsame Typen für Videogenerierung sowie Helper für Failover, Provider-Lookup und Parsing von Modell-Referenzen | - | `plugin-sdk/webhook-targets` | Registrierungs- und Routeninstallations-Helper für Webhook-Ziele | - | `plugin-sdk/webhook-path` | Helper zur Normalisierung von Webhook-Pfaden | - | `plugin-sdk/web-media` | Gemeinsame Helper zum Laden entfernter/lokaler Medien | - | `plugin-sdk/zod` | Re-exportiertes `zod` für Verbraucher des Plugin SDK | + | `plugin-sdk/media-runtime` | Gemeinsame Hilfen für Medienabruf/-umwandlung/-speicherung sowie Builder für Medien-Payloads | + | `plugin-sdk/media-generation-runtime` | Gemeinsame Hilfen für Media-Generation-Failover, Kandidatenauswahl und Meldungen für fehlende Modelle | + | `plugin-sdk/media-understanding` | Provider-Typen für Media Understanding sowie providerseitige Image-/Audio-Helper-Exporte | + | `plugin-sdk/text-runtime` | Gemeinsame Hilfen für Text/Markdown/Logging wie das Entfernen agentensichtbaren Texts, Hilfen für Markdown-Rendering/-Chunking/-Tabellen, Redaction-Helfer, Directive-Tag-Helfer und Safe-Text-Utilities | + | `plugin-sdk/text-chunking` | Hilfsfunktion für Outbound-Text-Chunking | + | `plugin-sdk/speech` | Speech-Provider-Typen sowie providerseitige Hilfen für Directive, Registry und Validierung | + | `plugin-sdk/speech-core` | Gemeinsame Hilfen für Speech-Provider-Typen, Registry, Directive und Normalisierung | + | `plugin-sdk/realtime-transcription` | Provider-Typen und Registry-Helfer für Realtime-Transkription | + | `plugin-sdk/realtime-voice` | Provider-Typen und Registry-Helfer für Realtime-Voice | + | `plugin-sdk/image-generation` | Provider-Typen für Bildgenerierung | + | `plugin-sdk/image-generation-core` | Gemeinsame Hilfen für Bildgenerierungs-Typen, Failover, Auth und Registry | + | `plugin-sdk/music-generation` | Provider-/Request-/Ergebnistypen für Musikgenerierung | + | `plugin-sdk/music-generation-core` | Gemeinsame Hilfen für Musikgenerierungs-Typen, Failover-Helfer, Provider-Lookup und Model-Ref-Parsing | + | `plugin-sdk/video-generation` | Provider-/Request-/Ergebnistypen für Videogenerierung | + | `plugin-sdk/video-generation-core` | Gemeinsame Hilfen für Videogenerierungs-Typen, Failover-Helfer, Provider-Lookup und Model-Ref-Parsing | + | `plugin-sdk/webhook-targets` | Hilfen für Webhook-Zielregister und Routeninstallation | + | `plugin-sdk/webhook-path` | Hilfen zur Normalisierung von Webhook-Pfaden | + | `plugin-sdk/web-media` | Gemeinsame Hilfen zum Laden entfernter/lokaler Medien | + | `plugin-sdk/zod` | Re-exportiertes `zod` für Plugin-SDK-Nutzer | | `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` | | Subpfad | Wichtige Exporte | | --- | --- | - | `plugin-sdk/memory-core` | Gebündelte `memory-core`-Helper-Oberfläche für Manager-/Konfigurations-/Datei-/CLI-Helper | - | `plugin-sdk/memory-core-engine-runtime` | Runtime-Fassade für Memory-Index/Suche | - | `plugin-sdk/memory-core-host-engine-foundation` | Exporte der Foundation-Engine für den Memory-Host | - | `plugin-sdk/memory-core-host-engine-embeddings` | Embedding-Verträge für den Memory-Host, Registry-Zugriff, lokaler Provider und generische Batch-/Remote-Helper | - | `plugin-sdk/memory-core-host-engine-qmd` | Exporte der QMD-Engine für den Memory-Host | - | `plugin-sdk/memory-core-host-engine-storage` | Exporte der Storage-Engine für den Memory-Host | - | `plugin-sdk/memory-core-host-multimodal` | Multimodale Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-query` | Query-Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-secret` | Secret-Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-events` | Event-Journal-Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-status` | Status-Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-runtime-cli` | CLI-Runtime-Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-runtime-core` | Core-Runtime-Helper für den Memory-Host | - | `plugin-sdk/memory-core-host-runtime-files` | Datei-/Runtime-Helper für den Memory-Host | - | `plugin-sdk/memory-host-core` | Herstellerneutraler Alias für Core-Runtime-Helper des Memory-Host | - | `plugin-sdk/memory-host-events` | Herstellerneutraler Alias für Event-Journal-Helper des Memory-Host | - | `plugin-sdk/memory-host-files` | Herstellerneutraler Alias für Datei-/Runtime-Helper des Memory-Host | - | `plugin-sdk/memory-host-markdown` | Gemeinsame Managed-Markdown-Helper für speichernahe Plugins | - | `plugin-sdk/memory-host-search` | Active Memory-Runtime-Fassade für den Zugriff auf den Suchmanager | - | `plugin-sdk/memory-host-status` | Herstellerneutraler Alias für Status-Helper des Memory-Host | + | `plugin-sdk/memory-core` | Gebündelte `memory-core`-Helper-Oberfläche für Hilfen zu Manager/Konfiguration/Datei/CLI | + | `plugin-sdk/memory-core-engine-runtime` | Runtime-Fassade für Memory-Index/-Suche | + | `plugin-sdk/memory-core-host-engine-foundation` | Exporte der Foundation-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-embeddings` | Embedding-Verträge des Memory-Hosts, Registry-Zugriff, lokaler Provider und generische Batch-/Remote-Helfer | + | `plugin-sdk/memory-core-host-engine-qmd` | Exporte der QMD-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-engine-storage` | Exporte der Storage-Engine des Memory-Hosts | + | `plugin-sdk/memory-core-host-multimodal` | Multimodale Hilfen des Memory-Hosts | + | `plugin-sdk/memory-core-host-query` | Query-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-core-host-secret` | Secret-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-core-host-events` | Hilfen für Event-Journale des Memory-Hosts | + | `plugin-sdk/memory-core-host-status` | Status-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-cli` | CLI-Runtime-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-core` | Core-Runtime-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-core-host-runtime-files` | Datei-/Runtime-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-host-core` | Herstellerneutraler Alias für Core-Runtime-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-host-events` | Herstellerneutraler Alias für Hilfen für Event-Journale des Memory-Hosts | + | `plugin-sdk/memory-host-files` | Herstellerneutraler Alias für Datei-/Runtime-Hilfen des Memory-Hosts | + | `plugin-sdk/memory-host-markdown` | Gemeinsame Hilfen für verwaltetes Markdown für speichernahe Plugins | + | `plugin-sdk/memory-host-search` | Active Memory-Runtime-Fassade für den Zugriff auf Search-Manager | + | `plugin-sdk/memory-host-status` | Herstellerneutraler Alias für Status-Hilfen des Memory-Hosts | | `plugin-sdk/memory-lancedb` | Gebündelte `memory-lancedb`-Helper-Oberfläche | - - | Familie | Aktuelle Subpfade | Verwendungszweck | + + | Familie | Aktuelle Subpfade | Beabsichtigte Verwendung | | --- | --- | --- | - | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Support-Helper für das gebündelte Browser-Plugin (`browser-support` bleibt das Kompatibilitäts-Barrel) | - | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Gebündelte Matrix-Helper-/Runtime-Oberfläche | - | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Gebündelte LINE-Helper-/Runtime-Oberfläche | - | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Gebündelte IRC-Helper-Oberfläche | - | Channel-spezifische Helper | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Gebündelte Channel-Kompatibilitäts-/Helper-Seams | - | Auth-/Plugin-spezifische Helper | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Gebündelte Feature-/Plugin-Helper-Seams; `plugin-sdk/github-copilot-token` exportiert derzeit `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` | + | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Gebündelte Support-Helfer für Browser-Plugins (`browser-support` bleibt das Kompatibilitäts-Barrel) | + | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Gebündelte Helper-/Runtime-Oberfläche für Matrix | + | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Gebündelte Helper-/Runtime-Oberfläche für LINE | + | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Gebündelte Helper-Oberfläche für IRC | + | Kanalspezifische Helfer | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Gebündelte Kompatibilitäts-/Helper-Seams für Kanäle | + | Auth-/pluginspezifische Helfer | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Gebündelte Feature-/Plugin-Helper-Seams; `plugin-sdk/github-copilot-token` exportiert derzeit `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` und `resolveCopilotApiToken` | @@ -322,59 +323,59 @@ kennzeichnet ausdrücklich einen davon als öffentlich. Der Callback `register(api)` erhält ein `OpenClawPluginApi`-Objekt mit diesen Methoden: -### Funktionsregistrierung +### Fähigkeitsregistrierung -| Methode | Was sie registriert | -| ------------------------------------------------ | --------------------------------------- | -| `api.registerProvider(...)` | Textinferenz (LLM) | -| `api.registerAgentHarness(...)` | Experimenteller Low-Level-Agent-Executor | -| `api.registerCliBackend(...)` | Lokales CLI-Inferenz-Backend | -| `api.registerChannel(...)` | Messaging-Channel | -| `api.registerSpeechProvider(...)` | Text-to-Speech-/STT-Synthese | -| `api.registerRealtimeTranscriptionProvider(...)` | Streaming-Echtzeittranskription | -| `api.registerRealtimeVoiceProvider(...)` | Duplex-Echtzeit-Sprachsitzungen | -| `api.registerMediaUnderstandingProvider(...)` | Bild-/Audio-/Videoanalyse | -| `api.registerImageGenerationProvider(...)` | Bildgenerierung | -| `api.registerMusicGenerationProvider(...)` | Musikgenerierung | -| `api.registerVideoGenerationProvider(...)` | Videogenerierung | -| `api.registerWebFetchProvider(...)` | Web-Fetch-/Scrape-Provider | -| `api.registerWebSearchProvider(...)` | Websuche | +| Methode | Was registriert wird | +| ------------------------------------------------ | ------------------------------------- | +| `api.registerProvider(...)` | Textinferenz (LLM) | +| `api.registerAgentHarness(...)` | Experimenteller Agent-Executor auf niedriger Ebene | +| `api.registerCliBackend(...)` | Lokales CLI-Inferenz-Backend | +| `api.registerChannel(...)` | Messaging-Kanal | +| `api.registerSpeechProvider(...)` | Text-to-Speech- / STT-Synthese | +| `api.registerRealtimeTranscriptionProvider(...)` | Streaming-Echtzeittranskription | +| `api.registerRealtimeVoiceProvider(...)` | Duplex-Echtzeit-Sprachsitzungen | +| `api.registerMediaUnderstandingProvider(...)` | Bild-/Audio-/Videoanalyse | +| `api.registerImageGenerationProvider(...)` | Bildgenerierung | +| `api.registerMusicGenerationProvider(...)` | Musikgenerierung | +| `api.registerVideoGenerationProvider(...)` | Videogenerierung | +| `api.registerWebFetchProvider(...)` | Web-Fetch-/Scrape-Provider | +| `api.registerWebSearchProvider(...)` | Websuche | ### Tools und Befehle -| Methode | Was sie registriert | -| ------------------------------- | ----------------------------------------------- | +| Methode | Was registriert wird | +| ------------------------------ | ---------------------------------------------- | | `api.registerTool(tool, opts?)` | Agent-Tool (erforderlich oder `{ optional: true }`) | -| `api.registerCommand(def)` | Benutzerdefinierter Befehl (umgeht das LLM) | +| `api.registerCommand(def)` | Benutzerdefinierter Befehl (umgeht das LLM) | ### Infrastruktur -| Methode | Was sie registriert | -| ---------------------------------------------- | -------------------------------------- | -| `api.registerHook(events, handler, opts?)` | Event-Hook | -| `api.registerHttpRoute(params)` | Gateway-HTTP-Endpunkt | -| `api.registerGatewayMethod(name, handler)` | Gateway-RPC-Methode | -| `api.registerCli(registrar, opts?)` | CLI-Unterbefehl | -| `api.registerService(service)` | Hintergrunddienst | -| `api.registerInteractiveHandler(registration)` | Interaktiver Handler | -| `api.registerMemoryPromptSupplement(builder)` | Additiver promptnaher Memory-Abschnitt | -| `api.registerMemoryCorpusSupplement(adapter)` | Additiver Memory-Such-/Lese-Korpus | +| Methode | Was registriert wird | +| --------------------------------------------- | ------------------------------------- | +| `api.registerHook(events, handler, opts?)` | Ereignis-Hook | +| `api.registerHttpRoute(params)` | Gateway-HTTP-Endpunkt | +| `api.registerGatewayMethod(name, handler)` | Gateway-RPC-Methode | +| `api.registerCli(registrar, opts?)` | CLI-Unterbefehl | +| `api.registerService(service)` | Hintergrunddienst | +| `api.registerInteractiveHandler(registration)` | Interaktiver Handler | +| `api.registerMemoryPromptSupplement(builder)` | Additiver speicherbezogener Prompt-Abschnitt | +| `api.registerMemoryCorpusSupplement(adapter)` | Additiver Such-/Lese-Korpus für Memory | Reservierte Core-Admin-Namespaces (`config.*`, `exec.approvals.*`, `wizard.*`, `update.*`) bleiben immer `operator.admin`, auch wenn ein Plugin versucht, einen -engeren Geltungsbereich für Gateway-Methoden zuzuweisen. Bevorzugen Sie pluginspezifische Präfixe für +engeren Geltungsbereich für eine Gateway-Methode zuzuweisen. Bevorzugen Sie pluginspezifische Präfixe für plugin-eigene Methoden. ### CLI-Registrierungsmetadaten -`api.registerCli(registrar, opts?)` akzeptiert zwei Arten von Metadaten auf oberster Ebene: +`api.registerCli(registrar, opts?)` akzeptiert zwei Arten von Metadaten der obersten Ebene: - `commands`: explizite Befehlswurzeln, die dem Registrar gehören -- `descriptors`: Parse-Zeit-Befehlsdeskriptoren, die für Root-CLI-Hilfe, - Routing und lazy Plugin-CLI-Registrierung verwendet werden +- `descriptors`: Befehlsdeskriptoren zur Parse-Zeit, verwendet für CLI-Hilfe der Root-Ebene, + Routing und Lazy-Registrierung von Plugin-CLI -Wenn Sie möchten, dass ein Plugin-Befehl im normalen Root-CLI-Pfad lazy geladen bleibt, -geben Sie `descriptors` an, die jede Befehlswurzel auf oberster Ebene abdecken, die von diesem +Wenn ein Plugin-Befehl im normalen Root-CLI-Pfad lazy geladen bleiben soll, +geben Sie `descriptors` an, die jede Befehlswurzel der obersten Ebene abdecken, die von diesem Registrar bereitgestellt wird. ```typescript @@ -387,7 +388,7 @@ api.registerCli( descriptors: [ { name: "matrix", - description: "Matrix-Konten, Verifizierung, Geräte und Profilstatus verwalten", + description: "Manage Matrix accounts, verification, devices, and profile state", hasSubcommands: true, }, ], @@ -395,68 +396,68 @@ api.registerCli( ); ``` -Verwenden Sie `commands` allein nur dann, wenn Sie keine lazy Root-CLI-Registrierung benötigen. -Dieser eager Kompatibilitätspfad bleibt unterstützt, installiert aber keine -deskriptorbasierten Platzhalter für lazy Laden zur Parse-Zeit. +Verwenden Sie `commands` allein nur dann, wenn Sie keine Lazy-Registrierung in der Root-CLI benötigen. +Dieser eager Kompatibilitätspfad wird weiterhin unterstützt, installiert jedoch keine +deskriptorgestützten Platzhalter für das Lazy Loading zur Parse-Zeit. ### CLI-Backend-Registrierung Mit `api.registerCliBackend(...)` kann ein Plugin die Standardkonfiguration für ein lokales -KI-CLI-Backend wie `codex-cli` übernehmen. +KI-CLI-Backend wie `codex-cli` besitzen. -- Die Backend-`id` wird zum Provider-Präfix in Modellreferenzen wie `codex-cli/gpt-5`. -- Die Backend-`config` verwendet dieselbe Form wie `agents.defaults.cliBackends.`. -- Die Benutzerkonfiguration hat weiterhin Vorrang. OpenClaw merged `agents.defaults.cliBackends.` über den - Plugin-Standard, bevor die CLI ausgeführt wird. -- Verwenden Sie `normalizeConfig`, wenn ein Backend nach dem Merge Kompatibilitäts-Umschreibungen benötigt - (zum Beispiel zur Normalisierung alter Flag-Formen). +- Die `id` des Backends wird zum Provider-Präfix in Modell-Refs wie `codex-cli/gpt-5`. +- Das `config` des Backends verwendet dieselbe Form wie `agents.defaults.cliBackends.`. +- Benutzerkonfiguration hat weiterhin Vorrang. OpenClaw merged `agents.defaults.cliBackends.` über den + Plugin-Standardwert, bevor die CLI ausgeführt wird. +- Verwenden Sie `normalizeConfig`, wenn ein Backend nach dem Merge Kompatibilitätsumschreibungen benötigt + (z. B. zum Normalisieren alter Flag-Formen). ### Exklusive Slots -| Methode | Was sie registriert | -| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `api.registerContextEngine(id, factory)` | Kontext-Engine (immer nur eine aktiv). Der Callback `assemble()` erhält `availableTools` und `citationsMode`, damit die Engine Prompt-Ergänzungen anpassen kann. | -| `api.registerMemoryCapability(capability)` | Einheitliche Memory-Funktion | -| `api.registerMemoryPromptSection(builder)` | Builder für Memory-Prompt-Abschnitte | -| `api.registerMemoryFlushPlan(resolver)` | Resolver für Memory-Flush-Pläne | -| `api.registerMemoryRuntime(runtime)` | Memory-Runtime-Adapter | +| Methode | Was registriert wird | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `api.registerContextEngine(id, factory)` | Context Engine (jeweils nur eine aktiv). Der Callback `assemble()` erhält `availableTools` und `citationsMode`, damit die Engine Prompt-Ergänzungen passend anpassen kann. | +| `api.registerMemoryCapability(capability)` | Einheitliche Memory-Fähigkeit | +| `api.registerMemoryPromptSection(builder)` | Builder für Memory-Prompt-Abschnitte | +| `api.registerMemoryFlushPlan(resolver)` | Resolver für Memory-Flush-Pläne | +| `api.registerMemoryRuntime(runtime)` | Memory-Runtime-Adapter | ### Memory-Embedding-Adapter -| Methode | Was sie registriert | -| ---------------------------------------------- | ----------------------------------------------- | +| Methode | Was registriert wird | +| --------------------------------------------- | -------------------------------------------- | | `api.registerMemoryEmbeddingProvider(adapter)` | Memory-Embedding-Adapter für das aktive Plugin | - `registerMemoryCapability` ist die bevorzugte exklusive Memory-Plugin-API. - `registerMemoryCapability` kann auch `publicArtifacts.listArtifacts(...)` bereitstellen, - sodass Begleit-Plugins exportierte Memory-Artefakte über - `openclaw/plugin-sdk/memory-host-core` nutzen können, statt in das private - Layout eines bestimmten Memory-Plugins einzugreifen. + damit Companion-Plugins exportierte Memory-Artefakte über + `openclaw/plugin-sdk/memory-host-core` nutzen können, statt in das private Layout + eines bestimmten Memory-Plugins hineinzugreifen. - `registerMemoryPromptSection`, `registerMemoryFlushPlan` und - `registerMemoryRuntime` sind alte, kompatibilitätsorientierte exklusive Memory-Plugin-APIs. -- Mit `registerMemoryEmbeddingProvider` kann das aktive Memory-Plugin eine - oder mehrere Embedding-Adapter-IDs registrieren (zum Beispiel `openai`, `gemini` oder eine benutzerdefinierte - ID, die von einem Plugin definiert wurde). + `registerMemoryRuntime` sind legacy-kompatible exklusive Memory-Plugin-APIs. +- `registerMemoryEmbeddingProvider` ermöglicht es dem aktiven Memory-Plugin, eine oder + mehrere Embedding-Adapter-IDs zu registrieren (zum Beispiel `openai`, `gemini` oder eine + benutzerdefinierte, plugindefinierte ID). - Benutzerkonfiguration wie `agents.defaults.memorySearch.provider` und - `agents.defaults.memorySearch.fallback` wird gegen diese registrierten + `agents.defaults.memorySearch.fallback` wird anhand dieser registrierten Adapter-IDs aufgelöst. ### Ereignisse und Lebenszyklus -| Methode | Was sie tut | -| -------------------------------------------- | --------------------------- | +| Methode | Was sie bewirkt | +| ------------------------------------------- | --------------------------- | | `api.on(hookName, handler, opts?)` | Typisierter Lebenszyklus-Hook | -| `api.onConversationBindingResolved(handler)` | Callback für Conversation-Binding | +| `api.onConversationBindingResolved(handler)` | Callback für Konversations-Bindings | -### Hook-Entscheidungssemantik +### Semantik von Hook-Entscheidungen -- `before_tool_call`: Die Rückgabe von `{ block: true }` ist endgültig. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. -- `before_tool_call`: Die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (wie beim Weglassen von `block`), nicht als Überschreibung. -- `before_install`: Die Rückgabe von `{ block: true }` ist endgültig. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. -- `before_install`: Die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (wie beim Weglassen von `block`), nicht als Überschreibung. -- `reply_dispatch`: Die Rückgabe von `{ handled: true, ... }` ist endgültig. Sobald ein Handler den Dispatch beansprucht, werden Handler mit niedrigerer Priorität und der Standard-Dispatch-Pfad des Modells übersprungen. -- `message_sending`: Die Rückgabe von `{ cancel: true }` ist endgültig. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. -- `message_sending`: Die Rückgabe von `{ cancel: false }` wird als keine Entscheidung behandelt (wie beim Weglassen von `cancel`), nicht als Überschreibung. +- `before_tool_call`: Die Rückgabe von `{ block: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. +- `before_tool_call`: Die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (genau wie das Weglassen von `block`), nicht als Überschreibung. +- `before_install`: Die Rückgabe von `{ block: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. +- `before_install`: Die Rückgabe von `{ block: false }` wird als keine Entscheidung behandelt (genau wie das Weglassen von `block`), nicht als Überschreibung. +- `reply_dispatch`: Die Rückgabe von `{ handled: true, ... }` ist final. Sobald ein Handler den Dispatch beansprucht, werden Handler mit niedrigerer Priorität und der standardmäßige Model-Dispatch-Pfad übersprungen. +- `message_sending`: Die Rückgabe von `{ cancel: true }` ist final. Sobald ein Handler dies setzt, werden Handler mit niedrigerer Priorität übersprungen. +- `message_sending`: Die Rückgabe von `{ cancel: false }` wird als keine Entscheidung behandelt (genau wie das Weglassen von `cancel`), nicht als Überschreibung. ### API-Objektfelder @@ -466,13 +467,13 @@ KI-CLI-Backend wie `codex-cli` übernehmen. | `api.name` | `string` | Anzeigename | | `api.version` | `string?` | Plugin-Version (optional) | | `api.description` | `string?` | Plugin-Beschreibung (optional) | -| `api.source` | `string` | Plugin-Quellpfad | -| `api.rootDir` | `string?` | Plugin-Root-Verzeichnis (optional) | -| `api.config` | `OpenClawConfig` | Aktueller Konfigurations-Snapshot (aktiver In-Memory-Runtime-Snapshot, falls verfügbar) | +| `api.source` | `string` | Quellpfad des Plugins | +| `api.rootDir` | `string?` | Root-Verzeichnis des Plugins (optional) | +| `api.config` | `OpenClawConfig` | Aktueller Konfigurations-Snapshot (aktiver In-Memory-Runtime-Snapshot, wenn verfügbar) | | `api.pluginConfig` | `Record` | Plugin-spezifische Konfiguration aus `plugins.entries..config` | -| `api.runtime` | `PluginRuntime` | [Runtime-Helper](/de/plugins/sdk-runtime) | -| `api.logger` | `PluginLogger` | Bereichsbezogener Logger (`debug`, `info`, `warn`, `error`) | -| `api.registrationMode` | `PluginRegistrationMode` | Aktueller Lademodus; `"setup-runtime"` ist das leichtgewichtige Vorstart-/Setup-Zeitfenster vor dem vollständigen Entry | +| `api.runtime` | `PluginRuntime` | [Runtime-Helfer](/de/plugins/sdk-runtime) | +| `api.logger` | `PluginLogger` | Bereichsspezifischer Logger (`debug`, `info`, `warn`, `error`) | +| `api.registrationMode` | `PluginRegistrationMode` | Aktueller Lademodus; `"setup-runtime"` ist das leichtgewichtige Startup-/Setup-Fenster vor dem vollständigen Entry | | `api.resolvePath(input)` | `(string) => string` | Pfad relativ zum Plugin-Root auflösen | ## Interne Modulkonvention @@ -481,49 +482,49 @@ Verwenden Sie innerhalb Ihres Plugins lokale Barrel-Dateien für interne Importe ``` my-plugin/ - api.ts # Öffentliche Exporte für externe Verbraucher + api.ts # Öffentliche Exporte für externe Nutzer runtime-api.ts # Nur interne Runtime-Exporte index.ts # Plugin-Entry-Point setup-entry.ts # Leichtgewichtiger Entry nur für Setup (optional) ``` - Importieren Sie Ihr eigenes Plugin niemals über `openclaw/plugin-sdk/` - aus Produktionscode. Leiten Sie interne Importe über `./api.ts` oder + Importieren Sie Ihr eigenes Plugin im Produktivcode niemals über `openclaw/plugin-sdk/`. + Leiten Sie interne Importe über `./api.ts` oder `./runtime-api.ts`. Der SDK-Pfad ist nur der externe Vertrag. Per Fassade geladene öffentliche Oberflächen gebündelter Plugins (`api.ts`, `runtime-api.ts`, `index.ts`, `setup-entry.ts` und ähnliche öffentliche Entry-Dateien) bevorzugen jetzt den aktiven Runtime-Konfigurations-Snapshot, wenn OpenClaw bereits läuft. Falls noch kein Runtime- -Snapshot existiert, greifen sie auf die aufgelöste Konfigurationsdatei auf dem Datenträger zurück. +Snapshot existiert, greifen sie auf die auf der Festplatte aufgelöste Konfigurationsdatei zurück. -Provider-Plugins können auch ein schmales pluginlokales Vertrags-Barrel bereitstellen, wenn ein -Helper absichtlich provider-spezifisch ist und noch nicht in einen generischen SDK-Subpfad -gehört. Aktuelles gebündeltes Beispiel: Der Anthropic-Provider hält seine Claude- -Stream-Helper in seiner eigenen öffentlichen `api.ts`-/`contract-api.ts`-Naht, statt +Provider-Plugins können außerdem ein schmales pluginlokales Vertrags-Barrel bereitstellen, wenn ein +Helfer bewusst provider-spezifisch ist und noch nicht in einen generischen SDK-Subpfad gehört. +Aktuelles gebündeltes Beispiel: Der Anthropic-Provider hält seine Claude- +Stream-Helfer in seiner eigenen öffentlichen `api.ts`- / `contract-api.ts`-Seam, statt Anthropic-Beta-Header- und `service_tier`-Logik in einen generischen -`plugin-sdk/*`-Vertrag zu verschieben. +`plugin-sdk/*`-Vertrag zu überführen. Weitere aktuelle gebündelte Beispiele: - `@openclaw/openai-provider`: `api.ts` exportiert Provider-Builder, - Standardmodell-Helper und Realtime-Provider-Builder + Hilfen für Standardmodelle und Builder für Realtime-Provider - `@openclaw/openrouter-provider`: `api.ts` exportiert den Provider-Builder sowie - Onboarding-/Konfigurations-Helper + Onboarding-/Konfigurations-Helfer - Produktionscode von Erweiterungen sollte auch Importe von `openclaw/plugin-sdk/` - vermeiden. Wenn ein Helper wirklich gemeinsam genutzt wird, verschieben Sie ihn in einen neutralen SDK-Subpfad + Produktivcode von Extensions sollte auch Importe von `openclaw/plugin-sdk/` + vermeiden. Wenn ein Helfer wirklich gemeinsam genutzt wird, verschieben Sie ihn in einen neutralen SDK-Subpfad wie `openclaw/plugin-sdk/speech`, `.../provider-model-shared` oder eine andere - funktionsorientierte Oberfläche, statt zwei Plugins miteinander zu koppeln. + fähigkeitsorientierte Oberfläche, statt zwei Plugins miteinander zu koppeln. ## Verwandt - [Entry Points](/de/plugins/sdk-entrypoints) — Optionen für `definePluginEntry` und `defineChannelPluginEntry` -- [Runtime Helpers](/de/plugins/sdk-runtime) — vollständige Referenz für den `api.runtime`-Namespace -- [Setup and Config](/de/plugins/sdk-setup) — Paketierung, Manifeste, Konfigurationsschemata -- [Testing](/de/plugins/sdk-testing) — Test-Hilfsprogramme und Lint-Regeln +- [Runtime Helpers](/de/plugins/sdk-runtime) — vollständige Referenz für den Namespace `api.runtime` +- [Setup and Config](/de/plugins/sdk-setup) — Paketierung, Manifeste, Konfigurationsschemas +- [Testing](/de/plugins/sdk-testing) — Test-Utilities und Lint-Regeln - [SDK Migration](/de/plugins/sdk-migration) — Migration von veralteten Oberflächen -- [Plugin Internals](/de/plugins/architecture) — tiefergehende Architektur und Funktionsmodell +- [Plugin Internals](/de/plugins/architecture) — Detaillierte Architektur und Fähigkeitsmodell diff --git a/docs/de/providers/google.md b/docs/de/providers/google.md index 1ded94888..2677ec6b3 100644 --- a/docs/de/providers/google.md +++ b/docs/de/providers/google.md @@ -1,14 +1,14 @@ --- read_when: - - Sie möchten Google Gemini-Modelle mit OpenClaw verwenden. - - Sie benötigen den API-Schlüssel oder den OAuth-Authentifizierungsablauf. -summary: Google Gemini-Einrichtung (API-Schlüssel + OAuth, Bildgenerierung, Medienverständnis, TTS, Websuche) + - Sie möchten Google-Gemini-Modelle mit OpenClaw verwenden. + - Sie benötigen den Authentifizierungsablauf mit API-Schlüssel oder OAuth. +summary: Einrichtung von Google Gemini (API-Schlüssel + OAuth, Bildgenerierung, Medienverständnis, TTS, Websuche) title: Google (Gemini) x-i18n: - generated_at: "2026-04-16T19:31:07Z" + generated_at: "2026-04-19T01:11:32Z" model: gpt-5.4 provider: openai - source_hash: ec2d62855f5e80efda758aad71bcaa95c38b1e41761fa1100d47a06c62881419 + source_hash: e5e055b02cc51899e11836a882f1f981fedfa5c4dbe42261ac2f2eba5e4d707c source_path: providers/google.md workflow: 15 --- @@ -19,14 +19,14 @@ Das Google-Plugin bietet Zugriff auf Gemini-Modelle über Google AI Studio sowie Bildgenerierung, Medienverständnis (Bild/Audio/Video), Text-to-Speech und Websuche über Gemini Grounding. -- Anbieter: `google` -- Authentifizierung: `GEMINI_API_KEY` oder `GOOGLE_API_KEY` +- Provider: `google` +- Auth: `GEMINI_API_KEY` oder `GOOGLE_API_KEY` - API: Google Gemini API -- Alternativer Anbieter: `google-gemini-cli` (OAuth) +- Alternativer Provider: `google-gemini-cli` (OAuth) ## Erste Schritte -Wählen Sie Ihre bevorzugte Authentifizierungsmethode und befolgen Sie die Einrichtungsschritte. +Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrichtungsanweisungen. @@ -66,17 +66,17 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und befolgen Sie die Einri - Die Umgebungsvariablen `GEMINI_API_KEY` und `GOOGLE_API_KEY` werden beide unterstützt. Verwenden Sie diejenige, die Sie bereits konfiguriert haben. + Die Umgebungsvariablen `GEMINI_API_KEY` und `GOOGLE_API_KEY` werden beide akzeptiert. Verwenden Sie diejenige, die Sie bereits konfiguriert haben. - **Am besten geeignet für:** die Wiederverwendung einer bestehenden Gemini-CLI-Anmeldung über PKCE OAuth anstelle eines separaten API-Schlüssels. + **Am besten geeignet für:** die Wiederverwendung einer vorhandenen Gemini-CLI-Anmeldung über PKCE OAuth statt eines separaten API-Schlüssels. - Der Anbieter `google-gemini-cli` ist eine inoffizielle Integration. Einige Nutzer - berichten von Kontoeinschränkungen, wenn OAuth auf diese Weise verwendet wird. Die Nutzung erfolgt auf eigenes Risiko. + Der Provider `google-gemini-cli` ist eine inoffizielle Integration. Einige Nutzer + berichten bei der Verwendung von OAuth auf diese Weise von Kontoeinschränkungen. Die Nutzung erfolgt auf eigenes Risiko. @@ -94,7 +94,7 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und befolgen Sie die Einri OpenClaw unterstützt sowohl Homebrew-Installationen als auch globale npm-Installationen, einschließlich gängiger Windows/npm-Layouts. - + ```bash openclaw models auth login --provider google-gemini-cli --set-default ``` @@ -117,7 +117,7 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und befolgen Sie die Einri (Oder die Varianten `GEMINI_CLI_*`.) - Wenn Gemini-CLI-OAuth-Anfragen nach der Anmeldung fehlschlagen, setzen Sie `GOOGLE_CLOUD_PROJECT` oder + Wenn OAuth-Anfragen der Gemini CLI nach der Anmeldung fehlschlagen, setzen Sie `GOOGLE_CLOUD_PROJECT` oder `GOOGLE_CLOUD_PROJECT_ID` auf dem Gateway-Host und versuchen Sie es erneut. @@ -126,38 +126,43 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und befolgen Sie die Einri installiert ist und sich auf `PATH` befindet. - Der reine OAuth-Anbieter `google-gemini-cli` ist eine separate Oberfläche für Textinferenz. - Bildgenerierung, Medienverständnis und Gemini Grounding bleiben auf der - Anbieter-ID `google`. + Der reine OAuth-Provider `google-gemini-cli` ist eine separate Oberfläche für Textinferenz. + Bildgenerierung, Medienverständnis und Gemini Grounding bleiben beim + Provider-ID `google`. ## Fähigkeiten -| Fähigkeit | Unterstützt | -| ---------------------- | ----------------- | -| Chat-Completions | Ja | -| Bildgenerierung | Ja | -| Musikgenerierung | Ja | -| Text-to-Speech | Ja | -| Bildverständnis | Ja | -| Audiotranskription | Ja | -| Videoverständnis | Ja | -| Websuche (Grounding) | Ja | -| Thinking/Reasoning | Ja (Gemini 3.1+) | -| Gemma 4-Modelle | Ja | +| Fähigkeit | Unterstützt | +| ---------------------- | ---------------------------- | +| Chat-Completions | Ja | +| Bildgenerierung | Ja | +| Musikgenerierung | Ja | +| Text-to-Speech | Ja | +| Bildverständnis | Ja | +| Audiotranskription | Ja | +| Videoverständnis | Ja | +| Websuche (Grounding) | Ja | +| Thinking/Reasoning | Ja (Gemini 2.5+ / Gemini 3+) | +| Gemma-4-Modelle | Ja | -Gemma 4-Modelle (zum Beispiel `gemma-4-26b-a4b-it`) unterstützen den Thinking-Modus. OpenClaw -schreibt `thinkingBudget` in ein unterstütztes Google-`thinkingLevel` für Gemma 4 um. +Gemini-3-Modelle verwenden `thinkingLevel` statt `thinkingBudget`. OpenClaw ordnet +Reasoning-Steuerungen für Gemini 3, Gemini 3.1 und den Alias `gemini-*-latest` +`thinkingLevel` zu, sodass Standardläufe und Läufe mit niedriger Latenz keine deaktivierten +`thinkingBudget`-Werte senden. + +Gemma-4-Modelle (zum Beispiel `gemma-4-26b-a4b-it`) unterstützen den Thinking-Modus. OpenClaw +schreibt `thinkingBudget` für Gemma 4 in ein unterstütztes Google-`thinkingLevel` um. Wenn Thinking auf `off` gesetzt wird, bleibt Thinking deaktiviert, statt auf `MINIMAL` abgebildet zu werden. ## Bildgenerierung -Der gebündelte Bildgenerierungsanbieter `google` verwendet standardmäßig +Der gebündelte Provider für Bildgenerierung `google` verwendet standardmäßig `google/gemini-3.1-flash-image-preview`. - Unterstützt auch `google/gemini-3-pro-image-preview` @@ -165,7 +170,7 @@ Der gebündelte Bildgenerierungsanbieter `google` verwendet standardmäßig - Bearbeitungsmodus: aktiviert, bis zu 5 Eingabebilder - Geometriesteuerungen: `size`, `aspectRatio` und `resolution` -So verwenden Sie Google als Standardanbieter für Bilder: +So verwenden Sie Google als Standard-Provider für Bilder: ```json5 { @@ -180,20 +185,20 @@ So verwenden Sie Google als Standardanbieter für Bilder: ``` -Siehe [Bildgenerierung](/de/tools/image-generation) für gemeinsame Tool-Parameter, Anbieterauswahl und Failover-Verhalten. +Siehe [Image Generation](/de/tools/image-generation) für gemeinsame Tool-Parameter, Provider-Auswahl und Failover-Verhalten. ## Videogenerierung -Das gebündelte `google`-Plugin registriert auch Videogenerierung über das gemeinsame +Das gebündelte Plugin `google` registriert auch Videogenerierung über das gemeinsame Tool `video_generate`. - Standard-Videomodell: `google/veo-3.1-fast-generate-preview` -- Modi: Text-zu-Video-, Bild-zu-Video- und Einzelvideo-Referenzabläufe +- Modi: Text-zu-Video, Bild-zu-Video und Referenzabläufe mit einem einzelnen Video - Unterstützt `aspectRatio`, `resolution` und `audio` -- Aktuelle Begrenzung der Dauer: **4 bis 8 Sekunden** +- Aktuelle Dauerbegrenzung: **4 bis 8 Sekunden** -So verwenden Sie Google als Standardanbieter für Video: +So verwenden Sie Google als Standard-Provider für Video: ```json5 { @@ -208,22 +213,22 @@ So verwenden Sie Google als Standardanbieter für Video: ``` -Siehe [Videogenerierung](/de/tools/video-generation) für gemeinsame Tool-Parameter, Anbieterauswahl und Failover-Verhalten. +Siehe [Video Generation](/de/tools/video-generation) für gemeinsame Tool-Parameter, Provider-Auswahl und Failover-Verhalten. ## Musikgenerierung -Das gebündelte `google`-Plugin registriert auch Musikgenerierung über das gemeinsame +Das gebündelte Plugin `google` registriert auch Musikgenerierung über das gemeinsame Tool `music_generate`. - Standard-Musikmodell: `google/lyria-3-clip-preview` - Unterstützt auch `google/lyria-3-pro-preview` - Prompt-Steuerungen: `lyrics` und `instrumental` -- Ausgabeformat: standardmäßig `mp3`, zusätzlich `wav` auf `google/lyria-3-pro-preview` +- Ausgabeformat: standardmäßig `mp3`, zusätzlich `wav` bei `google/lyria-3-pro-preview` - Referenzeingaben: bis zu 10 Bilder -- Sitzungsbasierte Läufe werden über den gemeinsamen Task-/Status-Ablauf getrennt ausgeführt, einschließlich `action: "status"` +- Sitzungsbasierte Läufe werden über den gemeinsamen Aufgaben-/Statusablauf entkoppelt, einschließlich `action: "status"` -So verwenden Sie Google als Standardanbieter für Musik: +So verwenden Sie Google als Standard-Provider für Musik: ```json5 { @@ -238,20 +243,20 @@ So verwenden Sie Google als Standardanbieter für Musik: ``` -Siehe [Musikgenerierung](/de/tools/music-generation) für gemeinsame Tool-Parameter, Anbieterauswahl und Failover-Verhalten. +Siehe [Music Generation](/de/tools/music-generation) für gemeinsame Tool-Parameter, Provider-Auswahl und Failover-Verhalten. ## Text-to-Speech -Der gebündelte Sprachanbieter `google` verwendet den Gemini-API-TTS-Pfad mit +Der gebündelte Speech-Provider `google` verwendet den TTS-Pfad der Gemini API mit `gemini-3.1-flash-tts-preview`. - Standardstimme: `Kore` -- Authentifizierung: `messages.tts.providers.google.apiKey`, `models.providers.google.apiKey`, `GEMINI_API_KEY` oder `GOOGLE_API_KEY` +- Auth: `messages.tts.providers.google.apiKey`, `models.providers.google.apiKey`, `GEMINI_API_KEY` oder `GOOGLE_API_KEY` - Ausgabe: WAV für reguläre TTS-Anhänge, PCM für Talk/Telefonie -- Native Sprachnachrichten-Ausgabe: auf diesem Gemini-API-Pfad nicht unterstützt, da die API PCM statt Opus zurückgibt +- Native Sprachnotiz-Ausgabe: auf diesem Gemini-API-Pfad nicht unterstützt, da die API PCM statt Opus zurückgibt -So verwenden Sie Google als Standardanbieter für TTS: +So verwenden Sie Google als Standard-Provider für TTS: ```json5 { @@ -270,9 +275,9 @@ So verwenden Sie Google als Standardanbieter für TTS: } ``` -Gemini API TTS akzeptiert ausdrucksstarke Audio-Tags in eckigen Klammern im Text, wie -`[whispers]` oder `[laughs]`. Um Tags aus der sichtbaren Chat-Antwort herauszuhalten und sie gleichzeitig -an TTS zu senden, setzen Sie sie in einen `[[tts:text]]...[[/tts:text]]`-Block: +Die Gemini-API für TTS akzeptiert ausdrucksstarke Audio-Tags in eckigen Klammern im Text, wie etwa +`[whispers]` oder `[laughs]`. Damit Tags nicht in der sichtbaren Chat-Antwort erscheinen, aber +an TTS gesendet werden, platzieren Sie sie in einem Block `[[tts:text]]...[[/tts:text]]`: ```text Hier ist der saubere Antworttext. @@ -281,22 +286,22 @@ Hier ist der saubere Antworttext. ``` -Ein Google-Cloud-Console-API-Schlüssel, der auf die Gemini API beschränkt ist, ist für diesen -Anbieter gültig. Dies ist nicht der separate Cloud-Text-to-Speech-API-Pfad. +Ein auf die Gemini API eingeschränkter API-Schlüssel aus der Google Cloud Console ist für diesen +Provider gültig. Dies ist nicht der separate Pfad der Cloud-Text-to-Speech-API. ## Erweiterte Konfiguration - Bei direkten Gemini-API-Läufen (`api: "google-generative-ai"`) gibt OpenClaw - ein konfiguriertes `cachedContent`-Handle an Gemini-Anfragen weiter. + Bei direkten Gemini-API-Läufen (`api: "google-generative-ai"`) übergibt OpenClaw + einen konfigurierten `cachedContent`-Handle an Gemini-Anfragen. - Konfigurieren Sie pro Modell oder global Parameter mit entweder - `cachedContent` oder dem älteren `cached_content` + `cachedContent` oder dem Legacy-Wert `cached_content` - Wenn beide vorhanden sind, hat `cachedContent` Vorrang - Beispielwert: `cachedContents/prebuilt-context` - - Die Gemini-Cache-Treffernutzung wird in OpenClaw-`cacheRead` normalisiert aus + - Die Gemini-Cache-Hit-Nutzung wird in OpenClaw als `cacheRead` normalisiert aus dem Upstream-Wert `cachedContentTokenCount` ```json5 @@ -318,37 +323,37 @@ Anbieter gültig. Dies ist nicht der separate Cloud-Text-to-Speech-API-Pfad. - Bei Verwendung des OAuth-Anbieters `google-gemini-cli` normalisiert OpenClaw + Bei Verwendung des OAuth-Providers `google-gemini-cli` normalisiert OpenClaw die JSON-Ausgabe der CLI wie folgt: - - Der Antworttext stammt aus dem JSON-Feld `response` der CLI. - - Die Nutzungsdaten greifen auf `stats` zurück, wenn die CLI `usage` leer lässt. - - `stats.cached` wird in OpenClaw-`cacheRead` normalisiert. - - Wenn `stats.input` fehlt, leitet OpenClaw Eingabetoken ab aus - `stats.input_tokens - stats.cached`. + - Der Antworttext stammt aus dem CLI-JSON-Feld `response`. + - Die Nutzungsdaten fallen auf `stats` zurück, wenn die CLI `usage` leer lässt. + - `stats.cached` wird in OpenClaw als `cacheRead` normalisiert. + - Wenn `stats.input` fehlt, leitet OpenClaw Eingabetoken aus + `stats.input_tokens - stats.cached` ab. - + Wenn das Gateway als Daemon läuft (launchd/systemd), stellen Sie sicher, dass `GEMINI_API_KEY` diesem Prozess zur Verfügung steht (zum Beispiel in `~/.openclaw/.env` oder über `env.shellEnv`). -## Verwandte Themen +## Verwandt - Auswahl von Anbietern, Modell-Referenzen und Failover-Verhalten. + Auswahl von Providern, Modellreferenzen und Failover-Verhalten. - Gemeinsame Bild-Tool-Parameter und Anbieterauswahl. + Gemeinsame Bild-Tool-Parameter und Provider-Auswahl. - Gemeinsame Video-Tool-Parameter und Anbieterauswahl. + Gemeinsame Video-Tool-Parameter und Provider-Auswahl. - Gemeinsame Musik-Tool-Parameter und Anbieterauswahl. + Gemeinsame Musik-Tool-Parameter und Provider-Auswahl.