Plugin maintainer reference
Plugin-SDK-Migration
OpenClaw hat eine umfassende Abwärtskompatibilitätsschicht durch eine moderne Plugin- Architektur ersetzt, die aus kleinen, gezielten Importen aufgebaut ist. Wenn Ihr Plugin vor dieser Änderung erstellt wurde, führt dieser Leitfaden es auf die aktuellen Verträge über.
Was sich geändert hat
Zwei weit offene Importoberflächen ermöglichten Plugins früher, über einen einzigen Einstiegspunkt auf nahezu alles zuzugreifen:
openclaw/plugin-sdk/compat– exportierte Dutzende Hilfsfunktionen erneut, damit ältere Hook-basierte Plugins weiterhin funktionierten, während die neue Architektur entwickelt wurde.openclaw/plugin-sdk/infra-runtime– ein umfassendes Barrel, das Systemereignisse, Heartbeat-Status, Zustellungswarteschlangen, Fetch-/Proxy-Hilfsfunktionen, Dateihilfen, Genehmigungstypen und nicht zusammengehörige Hilfsfunktionen vermischte.openclaw/plugin-sdk/config-runtime– ein umfassendes Konfigurations-Barrel, das während des Migrationszeitraums weiterhin veraltete direkte Hilfsfunktionen zum Laden/Schreiben enthielt.openclaw/extension-api– eine Brücke, die Plugins direkten Zugriff auf hostseitige Hilfsfunktionen wie den eingebetteten Agent-Runner gewährte.api.registerEmbeddedExtensionFactory(...)– ein entfernter, ausschließlich für den eingebetteten Runner vorgesehener Hook, der Ereignisse des eingebetteten Runners wietool_resultbeobachtete. Verwenden Sie stattdessen Agent-Middleware für Tool-Ergebnisse (siehe Eingebettete Erweiterungen für Tool-Ergebnisse zu Middleware migrieren).
Diese Oberflächen sind veraltet: Sie funktionieren weiterhin, neue Plugins dürfen sie jedoch
nicht verwenden, und bestehende Plugins sollten vor dem nächsten Major-Release migriert werden,
in dem sie entfernt werden. registerEmbeddedExtensionFactory wurde bereits entfernt;
veraltete Registrierungen werden nicht mehr geladen.
OpenClaw entfernt oder interpretiert dokumentiertes Plugin-Verhalten nicht in derselben Änderung neu, in der ein Ersatz eingeführt wird. Nicht abwärtskompatible Vertragsänderungen durchlaufen zunächst einen Kompatibilitätsadapter, Diagnosen, Dokumentation und einen Übergangszeitraum. Dies gilt für SDK-Importe, Manifestfelder, Einrichtungs-APIs, Hooks und das Registrierungsverhalten zur Laufzeit.
Warum
- Langsamer Start – das Importieren einer Hilfsfunktion lud Dutzende nicht zusammengehöriger Module.
- Zirkuläre Abhängigkeiten – umfassende Re-Exporte erleichterten das Erzeugen von Importzyklen.
- Unklare API-Oberfläche – stabile Exporte ließen sich nicht von internen unterscheiden.
Jedes openclaw/plugin-sdk/<subpath> ist jetzt ein kleines, eigenständiges Modul mit
einem dokumentierten Vertrag.
Auch die bisherigen Provider-Komfortschnittstellen für gebündelte Kanäle wurden entfernt –
kanalspezifische Hilfsabkürzungen waren private Annehmlichkeiten des Monorepos und keine
stabilen Plugin-Verträge. Verwenden Sie stattdessen gezielte generische SDK-Unterpfade. Behalten Sie
im Arbeitsbereich des gebündelten Plugins Provider-eigene Hilfsfunktionen in der plugin-eigenen
api.ts oder runtime-api.ts:
- Anthropic behält Claude-spezifische Stream-Hilfsfunktionen in seiner eigenen
api.ts- /contract-api.ts-Schnittstelle. - OpenAI behält Provider-Builder, Hilfsfunktionen für Standardmodelle und Builder für
Echtzeit-Provider in seiner eigenen
api.ts. - OpenRouter behält Provider-Builder und Hilfsfunktionen für Onboarding/Konfiguration in seiner eigenen
api.ts.
Kompatibilitätsrichtlinie
Kompatibilitätsarbeiten für externe Plugins erfolgen in dieser Reihenfolge:
- Fügen Sie den neuen Vertrag hinzu.
- Binden Sie das bisherige Verhalten weiterhin über einen Kompatibilitätsadapter ein.
- Geben Sie eine Diagnose oder Warnung aus, die den bisherigen Pfad und dessen Ersatz nennt.
- Decken Sie beide Pfade durch Tests ab.
- Dokumentieren Sie die Veraltung und den Migrationspfad.
- Entfernen Sie das bisherige Verhalten erst nach dem angekündigten Migrationszeitraum, üblicherweise in einem Major- Release.
Wenn ein Manifestfeld weiterhin akzeptiert wird, verwenden Sie es weiter, bis Dokumentation und Diagnosen etwas anderes angeben. Neuer Code sollte den dokumentierten Ersatz bevorzugen; bestehende Plugins dürfen bei gewöhnlichen Minor-Releases nicht funktionsunfähig werden.
Prüfen Sie die aktuelle Migrationswarteschlange mit pnpm plugins:boundary-report:
| Flag | Auswirkung |
|---|---|
--summary (oder pnpm plugins:boundary-report:summary) |
Kompakte Anzahlen anstelle vollständiger Details. |
--json |
Maschinenlesbarer Bericht. |
--owner <id> |
Auf ein Plugin oder einen Kompatibilitätsverantwortlichen filtern. |
--fail-on-cross-owner |
Bei reservierten SDK-Importen über Verantwortlichkeitsgrenzen hinweg mit einem von null verschiedenen Status beenden. |
--fail-on-eligible-compat |
Mit einem von null verschiedenen Status beenden, wenn das removeAfter-Datum eines veralteten Kompatibilitätseintrags überschritten wurde. |
--fail-on-unclassified-unused-reserved |
Bei ungenutzten, nicht klassifizierten reservierten SDK-Shims mit einem von null verschiedenen Status beenden. |
pnpm plugins:boundary-report:ci wird mit allen drei Fehler-Flags ausgeführt. Jeder
Kompatibilitätseintrag besitzt ein ausdrückliches removeAfter-Datum (nicht ein vages „nächstes
Major-Release“) – der Bericht gruppiert veraltete Einträge nach diesem Datum, zählt
lokale Code-/Dokumentationsreferenzen, zeigt reservierte SDK-Importe über Verantwortlichkeitsgrenzen hinweg an und
fasst die private SDK-Brücke zum Memory-Host zusammen. Reservierte SDK-Unterpfade müssen
nachverfolgte Nutzung durch den Verantwortlichen aufweisen; ungenutzte reservierte Exporte sollten aus dem öffentlichen
SDK entfernt werden.
Migration
Hilfsfunktionen zum Laden/Schreiben der Laufzeitkonfiguration migrieren
Gebündelte Plugins sollten api.runtime.config.loadConfig() und
api.runtime.config.writeConfigFile(...) nicht mehr direkt aufrufen. Verwenden Sie vorzugsweise die Konfiguration,
die bereits an den aktiven Aufrufpfad übergeben wurde. Langlebige Handler, die den
aktuellen Prozess-Snapshot benötigen, können api.runtime.config.current() verwenden. Langlebige
Agent-Tools sollten innerhalb von execute ctx.getRuntimeConfig() lesen, damit ein Tool,
das vor dem Schreiben einer Konfiguration erstellt wurde, weiterhin die aktualisierte Konfiguration sieht.
Konfigurationsschreibvorgänge erfolgen über die transaktionale Hilfsfunktion mit einer expliziten Richtlinie für die Zeit nach dem Schreiben:
await api.runtime.config.mutateConfigFile({ afterWrite: { mode: "auto" }, mutate(draft) { draft.plugins ??= {}; },});Verwenden Sie afterWrite: { mode: "restart", reason: "..." }, wenn die Änderung einen
sauberen Neustart des Gateways erfordert, und afterWrite: { mode: "none", reason: "..." }
nur, wenn der Aufrufer die Folgeaktion verantwortet und die
Neuladeplanung bewusst unterdrückt. Mutationsergebnisse enthalten eine typisierte followUp-Zusammenfassung für
Tests und Protokollierung; das Gateway bleibt dafür verantwortlich, den Neustart anzuwenden oder
zu planen.
loadConfig und writeConfigFile bleiben als veraltete Kompatibilitäts-
Hilfsfunktionen für externe Plugins erhalten und warnen einmalig mit dem
Kompatibilitätscode runtime-config-load-write. Gebündelte Plugins und der Laufzeitcode des Repos
werden durch pnpm check:deprecated-api-usage und
pnpm check:no-runtime-action-load-config geschützt: Neue Nutzung in produktivem Plugin-Code
schlägt unmittelbar fehl, direkte Konfigurationsschreibvorgänge schlagen fehl, Gateway-Servermethoden müssen den
Laufzeit-Snapshot der Anfrage verwenden, Laufzeit-Hilfsfunktionen für Kanalversand/-aktionen/-Clients
müssen Konfiguration von ihrer Schnittstellengrenze erhalten, und langlebige Laufzeitmodule
dürfen keine umgebungsbezogenen loadConfig()-Aufrufe enthalten.
Neuer Plugin-Code sollte das umfassende Barrel openclaw/plugin-sdk/config-runtime
vermeiden. Verwenden Sie den gezielten Unterpfad für die jeweilige Aufgabe:
| Bedarf | Import |
|---|---|
Konfigurationstypen wie OpenClawConfig |
openclaw/plugin-sdk/config-contracts |
| Zusicherungen für bereits geladene Konfiguration und Konfigurationsabfrage am Plugin-Einstieg | openclaw/plugin-sdk/plugin-config-runtime |
| Lesen des aktuellen Laufzeit-Snapshots | openclaw/plugin-sdk/runtime-config-snapshot |
| Konfigurationsschreibvorgänge | openclaw/plugin-sdk/config-mutation |
| Hilfsfunktionen für den Sitzungsspeicher | openclaw/plugin-sdk/session-store-runtime |
| Markdown-Tabellenkonfiguration | openclaw/plugin-sdk/markdown-table-runtime |
| Laufzeit-Hilfsfunktionen für Gruppenrichtlinien | openclaw/plugin-sdk/runtime-group-policy |
| Auflösung geheimer Eingaben | openclaw/plugin-sdk/secret-input-runtime |
| Modell-/Sitzungsüberschreibungen | openclaw/plugin-sdk/model-session-runtime |
Gebündelte Plugins und ihre Tests werden durch Scanner gegen das umfassende Barrel geschützt, damit Importe und Mocks auf das benötigte Verhalten beschränkt bleiben. Das Barrel besteht aus Gründen der externen Kompatibilität weiterhin, neuer Code sollte jedoch nicht davon abhängen.
Eingebettete Erweiterungen für Tool-Ergebnisse zu Middleware migrieren
Gebündelte Plugins müssen ausschließlich für den eingebetteten Runner vorgesehene
Tool-Ergebnis-Handler von api.registerEmbeddedExtensionFactory(...) durch
laufzeitneutrale Middleware ersetzen:
// Dynamische Tools der OpenClaw- und Codex-Laufzeitapi.registerAgentToolResultMiddleware(async (event) => { return compactToolResult(event);}, { runtimes: ["openclaw", "codex"],});Aktualisieren Sie gleichzeitig das Plugin-Manifest:
{ "contracts": { "agentToolResultMiddleware": ["openclaw", "codex"] }}Installierte Plugins können ebenfalls Middleware für Tool-Ergebnisse registrieren, wenn dies ausdrücklich
aktiviert ist und jede Ziel-Laufzeit in
contracts.agentToolResultMiddleware deklariert wurde. Nicht deklarierte Middleware-
Registrierungen installierter Plugins werden abgelehnt.
Genehmigungsnative Handler zu Fähigkeitsfakten migrieren
Genehmigungsfähige Kanal-Plugins stellen natives Genehmigungsverhalten über
approvalCapability.nativeRuntime sowie die gemeinsame Registry für den Laufzeitkontext
bereit:
- Ersetzen Sie
approvalCapability.handler.loadRuntime(...)durchapprovalCapability.nativeRuntime. - Verschieben Sie genehmigungsspezifische Authentifizierung/Zustellung aus der bisherigen Verdrahtung über
plugin.auth/plugin.approvalsnachapprovalCapability. ChannelPlugin.approvalswurde aus dem öffentlichen Kanal-Plugin-Vertrag entfernt; verschieben Sie Zustellungs-/Native-/Rendering-Felder nachapprovalCapability.plugin.authbleibt ausschließlich für An-/Abmeldeabläufe des Kanals erhalten; der Kern liest dort keine Authentifizierungs-Hooks für Genehmigungen mehr.- Registrieren Sie kanaleigene Laufzeitobjekte (Clients, Tokens, Bolt-Apps)
über
openclaw/plugin-sdk/channel-runtime-context. - Senden Sie keine Plugin-eigenen Umleitungshinweise aus nativen Genehmigungs-Handlern; der Kern verantwortet Hinweise zur Zustellung an anderer Stelle auf Grundlage tatsächlicher Zustellungsergebnisse.
- Wenn Sie
channelRuntimeancreateChannelManager(...)übergeben, stellen Sie eine echtecreatePluginRuntime().channel-Oberfläche bereit – unvollständige Stubs werden abgelehnt.
Informationen zur aktuellen Struktur der Genehmigungsfähigkeit finden Sie unter Kanal-Plugins.
Fallback-Verhalten von Windows-Wrappern prüfen
Wenn Ihr Plugin openclaw/plugin-sdk/windows-spawn verwendet, schlagen nicht aufgelöste Windows-
Wrapper mit .cmd/.bat jetzt geschlossen fehl, sofern Sie nicht ausdrücklich
allowShellFallback: true übergeben:
// Vorherconst program = applyWindowsSpawnProgramPolicy({ candidate }); // Nachherconst program = applyWindowsSpawnProgramPolicy({ candidate, // Legen Sie dies nur für vertrauenswürdige Kompatibilitätsaufrufer fest, die absichtlich // einen über die Shell vermittelten Fallback akzeptieren. allowShellFallback: true,});Wenn Ihr Aufrufer nicht absichtlich auf den Shell-Fallback angewiesen ist, setzen Sie
allowShellFallback nicht und behandeln Sie stattdessen den ausgelösten Fehler.
Veraltete Importe finden
grep -r "plugin-sdk/compat" my-plugin/grep -r "plugin-sdk/infra-runtime" my-plugin/grep -r "plugin-sdk/config-runtime" my-plugin/grep -r "openclaw/extension-api" my-plugin/Durch gezielte Importe ersetzen
Jeder Export der bisherigen Oberfläche ist einem bestimmten modernen Importpfad zugeordnet:
// Vorher (veraltete Abwärtskompatibilitätsschicht)import { createChannelReplyPipeline, createPluginRuntimeStore, resolveControlCommandGate,} from "openclaw/plugin-sdk/compat"; // Nachher (moderne, gezielte Importe)import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";Verwenden Sie für hostseitige Hilfsfunktionen die injizierte Plugin-Runtime, statt sie direkt zu importieren:
// Vorher (veraltete extension-api-Brücke)import { runEmbeddedAgent } from "openclaw/extension-api";const result = await runEmbeddedAgent({ sessionId, prompt }); // Nachher (injizierte Runtime)const result = await api.runtime.agent.runEmbeddedAgent({ sessionId, prompt });Dasselbe Muster gilt für andere Hilfsfunktionen der alten Brücke:
| Alter Import | Moderne Entsprechung |
|---|---|
resolveAgentDir |
api.runtime.agent.resolveAgentDir |
resolveAgentWorkspaceDir |
api.runtime.agent.resolveAgentWorkspaceDir |
resolveAgentIdentity |
api.runtime.agent.resolveAgentIdentity |
resolveThinkingDefault |
api.runtime.agent.resolveThinkingDefault |
resolveAgentTimeoutMs |
api.runtime.agent.resolveAgentTimeoutMs |
ensureAgentWorkspace |
api.runtime.agent.ensureAgentWorkspace |
| Hilfsfunktionen für den Sitzungsspeicher | api.runtime.agent.session.* |
Breite infra-runtime-Importe ersetzen
openclaw/plugin-sdk/infra-runtime bleibt für die externe Kompatibilität
bestehen, neuer Code sollte jedoch die tatsächlich benötigte, gezielte
Schnittstelle importieren:
| Bedarf | Import |
|---|---|
| Hilfsfunktionen für die Systemereignis-Warteschlange | openclaw/plugin-sdk/system-event-runtime |
| Hilfsfunktionen für Heartbeat-Aktivierung, Ereignisse und Sichtbarkeit | openclaw/plugin-sdk/heartbeat-runtime |
| Abarbeiten der Warteschlange ausstehender Zustellungen | openclaw/plugin-sdk/delivery-queue-runtime |
| Telemetrie der Kanalaktivität | openclaw/plugin-sdk/channel-activity-runtime |
| Speicherinterne und persistenzgestützte Deduplizierungs-Caches | openclaw/plugin-sdk/dedupe-runtime |
| Hilfsfunktionen für sichere lokale Datei- und Medienpfade | openclaw/plugin-sdk/file-access-runtime |
| Dispatcher-berücksichtigender Abruf | openclaw/plugin-sdk/runtime-fetch |
| Hilfsfunktionen für Proxy- und abgesicherte Abrufe | openclaw/plugin-sdk/fetch-runtime |
| Richtlinientypen für den SSRF-Dispatcher | openclaw/plugin-sdk/ssrf-dispatcher |
| Typen für Genehmigungsanfragen und -entscheidungen | openclaw/plugin-sdk/approval-runtime |
| Hilfsfunktionen für Genehmigungsantwort-Nutzdaten und -befehle | openclaw/plugin-sdk/approval-reply-runtime |
| Hilfsfunktionen zur Fehlerformatierung | openclaw/plugin-sdk/error-runtime |
| Warten auf Transportbereitschaft | openclaw/plugin-sdk/transport-ready-runtime |
| Hilfsfunktionen für sichere Token | openclaw/plugin-sdk/secure-random-runtime |
| Begrenzte Parallelität asynchroner Aufgaben | openclaw/plugin-sdk/concurrency-runtime |
| Pflichtwert-Prüfungen für beweisbare Invarianten | openclaw/plugin-sdk/expect-runtime |
| Numerische Typumwandlung | openclaw/plugin-sdk/number-runtime |
| Prozesslokale asynchrone Sperre | openclaw/plugin-sdk/async-lock-runtime |
| Dateisperren | openclaw/plugin-sdk/file-lock |
Gebündelte Plugins werden durch einen Scanner vor der Verwendung von
infra-runtime geschützt, sodass Repository-Code nicht auf das breite
Barrel zurückfallen kann.
Hilfsfunktionen für Kanalrouten migrieren
Neuer Code für Kanalrouten verwendet openclaw/plugin-sdk/channel-route.
Die älteren Namen für Routenschlüssel und vergleichbare Ziele bleiben als
Kompatibilitätsaliase erhalten:
| Alte Hilfsfunktion | Moderne Hilfsfunktion |
|---|---|
channelRouteIdentityKey(...) |
channelRouteDedupeKey(...) |
channelRouteKey(...) |
channelRouteCompactKey(...) |
ComparableChannelTarget |
ChannelRouteParsedTarget |
comparableChannelTargetsMatch(...) |
channelRouteTargetsMatchExact(...) |
comparableChannelTargetsShareRoute(...) |
channelRouteTargetsShareConversation(...) |
Die modernen Routen-Hilfsfunktionen normalisieren
{ channel, to, accountId, threadId } konsistent für native Genehmigungen,
Antwortunterdrückung, Deduplizierung eingehender Nachrichten,
Cron-Zustellung und Sitzungsrouting.
Fügen Sie keine neuen Verwendungen von
ChannelMessagingAdapter.parseExplicitTarget, den parsergestützten
Hilfsfunktionen für geladene Routen (parseExplicitTargetForLoadedChannel,
resolveRouteTargetForLoadedChannel) oder
resolveChannelRouteTargetWithParser(...) aus
plugin-sdk/channel-route hinzu – diese sind veraltet und bleiben nur für
ältere Plugins erhalten. Neue Kanal-Plugins sollten
messaging.targetResolver.resolveTarget(...) für die Normalisierung der
Ziel-ID und den Fallback bei fehlendem Verzeichnistreffer,
messaging.inferTargetChatType(...), wenn der Kern frühzeitig eine
Peer-Art benötigt, und messaging.resolveOutboundSessionRoute(...) für
Provider-native Sitzungs- und Thread-Identitäten verwenden.
Erstellen und testen
pnpm buildpnpm test my-plugin/Referenz der Importpfade
Common import path table
| Importpfad | Zweck | Zentrale Exporte |
|---|---|---|
plugin-sdk/plugin-entry |
Kanonische Hilfsfunktion für den Plugin-Einstieg | definePluginEntry |
plugin-sdk/core |
Übergreifender Legacy-Re-Export für Definitionen/Builder von Kanaleinstiegen | defineChannelPluginEntry, createChatChannelPlugin |
plugin-sdk/config-schema |
Export des Stammkonfigurationsschemas | OpenClawSchema |
plugin-sdk/provider-entry |
Hilfsfunktion für den Einstieg eines einzelnen Providers | defineSingleProviderPluginEntry |
plugin-sdk/channel-core |
Fokussierte Definitionen und Builder für Kanaleinstiege | defineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase |
plugin-sdk/setup |
Gemeinsame Hilfsfunktionen für den Einrichtungsassistenten | Übersetzer für die Einrichtung, Allowlist-Eingabeaufforderungen, Builder für den Einrichtungsstatus |
plugin-sdk/setup-runtime |
Laufzeithilfen für die Einrichtung | createSetupTranslator, importsichere Patch-Adapter für die Einrichtung, Hilfsfunktionen für Suchhinweise, promptResolvedAllowFrom, splitSetupEntries, delegierte Einrichtungs-Proxys |
plugin-sdk/setup-adapter-runtime |
Veralteter Alias für den Einrichtungsadapter | plugin-sdk/setup-runtime verwenden |
plugin-sdk/setup-tools |
Hilfsfunktionen für Einrichtungswerkzeuge | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
plugin-sdk/account-core |
Hilfsfunktionen für mehrere Konten | Hilfsfunktionen für Kontolisten, Konfiguration und Aktionsfreigaben |
plugin-sdk/account-id |
Hilfsfunktionen für Konto-IDs | DEFAULT_ACCOUNT_ID, Normalisierung von Konto-IDs |
plugin-sdk/account-resolution |
Hilfsfunktionen für die Kontosuche | Hilfsfunktionen für die Kontosuche und den Standard-Fallback |
plugin-sdk/account-helpers |
Eng gefasste Kontohilfen | Hilfsfunktionen für Kontolisten und Kontoaktionen |
plugin-sdk/channel-setup |
Adapter für den Einrichtungsassistenten | createOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, sowie DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries |
plugin-sdk/channel-pairing |
Grundbausteine für die DM-Kopplung | createChannelPairingController |
plugin-sdk/channel-reply-pipeline |
Verdrahtung für Antwortpräfix, Tippanzeige und Quellzustellung | createChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode |
plugin-sdk/channel-config-helpers |
Fabriken für Konfigurationsadapter und Hilfsfunktionen für den DM-Zugriff | createHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases |
plugin-sdk/channel-config-schema |
Builder für Konfigurationsschemas | Nur gemeinsame Grundbausteine für Kanalkonfigurationsschemas und der generische Builder |
plugin-sdk/bundled-channel-config-schema |
Gebündelte Konfigurationsschemas | Nur von OpenClaw gepflegte gebündelte Plugins; neue Plugins müssen Plugin-lokale Schemas definieren |
plugin-sdk/channel-config-schema-legacy |
Veraltete gebündelte Konfigurationsschemas | Nur Kompatibilitätsalias; für gepflegte gebündelte Plugins plugin-sdk/bundled-channel-config-schema verwenden |
plugin-sdk/telegram-command-config |
Hilfsfunktionen für die Telegram-Befehlskonfiguration | Normalisierung von Befehlsnamen, Kürzung von Beschreibungen, Validierung auf Duplikate/Konflikte |
plugin-sdk/channel-policy |
Auflösung von Gruppen-/DM-Richtlinien | resolveChannelGroupRequireMention |
plugin-sdk/channel-lifecycle |
Veraltete Kompatibilitätsfassade | plugin-sdk/channel-outbound verwenden |
plugin-sdk/inbound-envelope |
Hilfsfunktionen für eingehende Umschläge | Gemeinsame Hilfsfunktionen für Routen und Umschlag-Builder |
plugin-sdk/channel-inbound |
Hilfsfunktionen für den eingehenden Empfang | Kontexterstellung, Formatierung, Stammverzeichnisse, Runner, vorbereitete Antwortweiterleitung und Weiterleitungsprädikate |
plugin-sdk/messaging-targets |
Veralteter Importpfad für die Zielanalyse | plugin-sdk/channel-targets für generische Hilfsfunktionen zur Zielanalyse, plugin-sdk/channel-route für den Routenvergleich und Plugin-eigene messaging.targetResolver / messaging.resolveOutboundSessionRoute für die Provider-spezifische Zielauflösung verwenden |
plugin-sdk/outbound-media |
Hilfsfunktionen für ausgehende Medien | Gemeinsames Laden ausgehender Medien |
plugin-sdk/outbound-send-deps |
Veraltete Kompatibilitätsfassade | plugin-sdk/channel-outbound verwenden |
plugin-sdk/channel-outbound |
Hilfsfunktionen für den Lebenszyklus ausgehender Nachrichten | Nachrichtenadapter, Empfangsbestätigungen, Hilfsfunktionen für dauerhaften Versand, Live-Vorschau-/Streaming-Hilfen, Antwortoptionen, Lebenszyklushilfen, ausgehende Identität und Nutzlastplanung |
plugin-sdk/channel-streaming |
Veraltete Kompatibilitätsfassade | plugin-sdk/channel-outbound verwenden |
plugin-sdk/outbound-runtime |
Veraltete Kompatibilitätsfassade | plugin-sdk/channel-outbound verwenden |
plugin-sdk/thread-bindings-runtime |
Hilfsfunktionen für Thread-Bindungen | Hilfsfunktionen für Lebenszyklus und Adapter von Thread-Bindungen |
plugin-sdk/agent-media-payload |
Legacy-Hilfsfunktionen für Mediennutzlasten | Builder für Agent-Mediennutzlasten bei Legacy-Feldlayouts |
plugin-sdk/channel-runtime |
Veralteter Kompatibilitäts-Shim | Nur Legacy-Hilfsprogramme für die Kanallaufzeit |
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 Laufzeithilfen | Hilfsfunktionen für Laufzeit, Protokollierung, Sicherung und Plugin-Installation |
plugin-sdk/runtime-env |
Eng gefasste Hilfsfunktionen für die Laufzeitumgebung | Hilfsfunktionen für Logger/Laufzeitumgebung, Zeitüberschreitungen, Wiederholungen und Backoff |
plugin-sdk/plugin-runtime |
Gemeinsame Hilfsfunktionen für die Plugin-Laufzeit | Hilfsfunktionen für Plugin-Befehle, Hooks, HTTP und Interaktivität |
plugin-sdk/hook-runtime |
Hilfsfunktionen für Hook-Pipelines | Gemeinsame Hilfsfunktionen für Webhook-/interne Hook-Pipelines |
plugin-sdk/lazy-runtime |
Verzögert geladene Laufzeithilfen | createLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface |
plugin-sdk/process-runtime |
Prozesshilfen | Gemeinsame Hilfsfunktionen für die Ausführung |
plugin-sdk/cli-runtime |
Hilfsfunktionen für die CLI-Laufzeit | Befehlsformatierung, Wartevorgänge, Versionshilfen |
plugin-sdk/gateway-runtime |
Gateway-Hilfsfunktionen | Gateway-Client, startbereite Hilfsfunktion für die Ereignisschleife, Auflösung des angekündigten LAN-Hosts und Hilfsfunktionen für Kanalstatus-Patches |
plugin-sdk/config-runtime |
Veralteter Kompatibilitäts-Shim für die Konfiguration | config-contracts, plugin-config-runtime, runtime-config-snapshot und config-mutation bevorzugen |
plugin-sdk/telegram-command-config |
Hilfsfunktionen für Telegram-Befehle | Fallback-stabile Hilfsfunktionen zur Validierung von Telegram-Befehlen, wenn die gebündelte Telegram-Vertragsoberfläche nicht verfügbar ist |
plugin-sdk/approval-runtime |
Hilfsfunktionen für Genehmigungsaufforderungen | Genehmigungsnutzlast für Ausführung/Plugin, Hilfsfunktionen für Genehmigungsfähigkeit/-profil, native Hilfsfunktionen für Genehmigungsrouting/-laufzeit und formatierte Pfade zur strukturierten Genehmigungsanzeige |
plugin-sdk/approval-auth-runtime |
Hilfsfunktionen für die Genehmigungsautorisierung | Auflösung der genehmigenden Person, Aktionsautorisierung im selben Chat |
plugin-sdk/approval-client-runtime |
Hilfsfunktionen für Genehmigungsclients | Native Profil-/Filterhilfen für Ausführungsgenehmigungen |
plugin-sdk/approval-delivery-runtime |
Hilfsfunktionen für die Genehmigungszustellung | Native Adapter für Genehmigungsfähigkeit/-zustellung |
plugin-sdk/approval-gateway-runtime |
Gateway-Hilfsfunktionen für Genehmigungen | Gemeinsamer Resolver für das Genehmigungs-Gateway |
plugin-sdk/approval-reference-runtime |
Transportreferenzen für Genehmigungen | Deterministische Hilfsfunktion für dauerhafte Lokatoren bei transportbeschränkten Callbacks |
plugin-sdk/approval-handler-adapter-runtime |
Hilfsfunktionen für Genehmigungsadapter | Leichtgewichtige Hilfsfunktionen zum Laden nativer Genehmigungsadapter für häufig aufgerufene Kanaleinstiegspunkte |
plugin-sdk/approval-handler-runtime |
Hilfsfunktionen für Genehmigungshandler | Umfassendere Laufzeithilfen für Genehmigungshandler; bevorzugen Sie die enger gefassten Adapter-/Gateway-Schnittstellen, wenn diese ausreichen |
plugin-sdk/approval-native-runtime |
Hilfsfunktionen für Genehmigungsziele | Native Hilfsfunktionen zur Bindung von Genehmigungszielen/Konten |
plugin-sdk/approval-reply-runtime |
Hilfsfunktionen für Genehmigungsantworten | Hilfsfunktionen für Antwortnutzlasten bei Ausführungs-/Plugin-Genehmigungen |
plugin-sdk/channel-runtime-context |
Hilfsfunktionen für den Kanallaufzeitkontext | Generische Hilfsfunktionen zum Registrieren/Abrufen/Überwachen des Kanallaufzeitkontexts |
plugin-sdk/security-runtime |
Sicherheitshilfen | Gemeinsame Hilfsfunktionen für Vertrauen, DM-Freigaben, auf Stammverzeichnisse begrenzte Dateien/Pfade, externe Inhalte und das Erfassen von Secrets |
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-Laufzeithilfen | Fixierter Dispatcher, geschützter Abruf, Hilfsfunktionen für SSRF-Richtlinien |
plugin-sdk/system-event-runtime |
Hilfsfunktionen für Systemereignisse | enqueueSystemEvent, peekSystemEventEntries |
plugin-sdk/heartbeat-runtime |
Heartbeat-Hilfsfunktionen | Hilfsfunktionen für Heartbeat-Aktivierung, -Ereignisse und -Sichtbarkeit |
plugin-sdk/delivery-queue-runtime |
Hilfsfunktionen für die Zustellungswarteschlange | drainPendingDeliveries |
plugin-sdk/channel-activity-runtime |
Hilfsfunktionen für Kanalaktivitäten | recordChannelActivity |
plugin-sdk/dedupe-runtime |
Hilfsfunktionen zur Deduplizierung | Arbeitsspeicherinterne und persistent gestützte Deduplizierungs-Caches |
plugin-sdk/file-access-runtime |
Hilfsfunktionen für den Dateizugriff | Sichere Hilfsfunktionen für lokale Datei-/Medienpfade |
plugin-sdk/transport-ready-runtime |
Hilfsfunktionen für die Transportbereitschaft | waitForTransportReady |
plugin-sdk/exec-approvals-runtime |
Richtlinienhilfen für Ausführungsgenehmigungen | loadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile |
plugin-sdk/collection-runtime |
Hilfsfunktionen für begrenzte Caches | pruneMapToMaxSize |
plugin-sdk/diagnostic-runtime |
Hilfsfunktionen für Diagnosefreigaben | isDiagnosticFlagEnabled, isDiagnosticsEnabled |
plugin-sdk/error-runtime |
Fehlerhilfen | formatUncaughtError, isApprovalNotFoundError, Hilfsfunktionen für Fehlergraphen, PlatformMessageNotDispatchedError |
plugin-sdk/fetch-runtime |
Hilfsfunktionen für umschlossene Abrufe/Proxys | resolveFetch, Proxy-Hilfsfunktionen, Hilfsfunktionen für EnvHttpProxyAgent-Optionen |
plugin-sdk/host-runtime |
Hilfsfunktionen für die Hostnormalisierung | normalizeHostname, normalizeScpRemoteHost |
plugin-sdk/retry-runtime |
Hilfsfunktionen für Wiederholungen | RetryConfig, retryAsync, Richtlinien-Runner |
plugin-sdk/allow-from |
Allowlist-Formatierung und Eingabezuordnung | formatAllowFromLowercase, mapAllowlistResolutionInputs |
plugin-sdk/command-auth |
Hilfsfunktionen für Befehlsfreigaben und Befehlsoberflächen | resolveControlCommandGate, Hilfsfunktionen für die Absenderautorisierung, Hilfsfunktionen für die Befehlsregistrierung einschließlich der dynamischen Formatierung von Argumentmenüs |
plugin-sdk/command-status |
Renderer für Befehlsstatus/-hilfe | buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage |
plugin-sdk/secret-input |
Analyse von Secret-Eingaben | Hilfsfunktionen für Secret-Eingaben |
plugin-sdk/webhook-ingress |
Hilfsfunktionen für Webhook-Anfragen | Dienstprogramme für Webhook-Ziele |
plugin-sdk/webhook-request-guards |
Schutzfunktionen für Webhook-Anfragetexte | Hilfsfunktionen zum Lesen/Begrenzen von Anfragetexten |
plugin-sdk/reply-runtime |
Gemeinsame Antwortlaufzeit | Eingehende Weiterleitung, Heartbeat, Antwortplanung, Aufteilung |
plugin-sdk/reply-dispatch-runtime |
Eng gefasste Hilfsfunktionen für die Antwortweiterleitung | Finalisierung, Provider-Weiterleitung und Hilfsfunktionen für Konversationsbezeichnungen |
plugin-sdk/reply-history |
Hilfsfunktionen für den Antwortverlauf | createChannelHistoryWindow; veraltete Kompatibilitätsexporte für Zuordnungshilfen wie buildPendingHistoryContextFromMap, recordPendingHistoryEntry und clearHistoryEntriesIfEnabled |
plugin-sdk/reply-reference |
Planung von Antwortreferenzen | createReplyReferencePlanner |
plugin-sdk/reply-chunking |
Hilfsfunktionen für Antwortblöcke | Hilfsfunktionen zur Aufteilung von Text/Markdown |
plugin-sdk/session-store-runtime |
Hilfsfunktionen für den Sitzungsspeicher | Hilfsfunktionen für bereichsgebundene Sitzungszeilen, Speicherpfade und das Lesen des Aktualisierungszeitpunkts |
plugin-sdk/state-paths |
Hilfsfunktionen für Zustandspfade | Hilfsfunktionen für Zustands- 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 den Kanalstatus | Builder für Kanal-/Kontostatus-Zusammenfassungen, Standardwerte für den Laufzeitstatus, Hilfsfunktionen für Problemmetadaten |
plugin-sdk/target-resolver-runtime |
Hilfsfunktionen zur Zielauflösung | Gemeinsame Hilfsfunktionen zur Zielauflösung |
plugin-sdk/string-normalization-runtime |
Hilfsfunktionen zur Zeichenfolgennormalisierung | Hilfsfunktionen zur Slug-/Zeichenfolgennormalisierung |
plugin-sdk/request-url |
Hilfsfunktionen für Anfrage-URLs | Zeichenfolgen-URLs aus anfrageähnlichen Eingaben extrahieren |
plugin-sdk/run-command |
Hilfsfunktionen für zeitgesteuerte Befehle | Zeitgesteuerter Befehls-Runner mit normalisiertem stdout/stderr |
plugin-sdk/param-readers |
Parameterleser | Allgemeine Parameterleser für Tools/CLI |
plugin-sdk/tool-payload |
Extraktion der Tool-Nutzlast | Normalisierte Nutzlasten aus Tool-Ergebnisobjekten extrahieren |
plugin-sdk/tool-send |
Extraktion von Tool-Sendeparametern | Kanonische Felder des Sendeziels aus Tool-Argumenten extrahieren |
plugin-sdk/temp-path |
Hilfsfunktionen für temporäre Pfade | Gemeinsame Hilfsfunktionen für temporäre Downloadpfade |
plugin-sdk/logging-core |
Hilfsfunktionen für die Protokollierung | Hilfsfunktionen für Subsystem-Logger und Schwärzung |
plugin-sdk/markdown-table-runtime |
Hilfsfunktionen für Markdown-Tabellen | Hilfsfunktionen für Markdown-Tabellenmodi |
plugin-sdk/reply-payload |
Typen für Nachrichtantworten | Typen für Antwortnutzlasten |
plugin-sdk/provider-setup |
Kuratierte Hilfsfunktionen zur Einrichtung lokaler/selbst gehosteter Provider | Hilfsfunktionen zur Erkennung/Konfiguration selbst gehosteter Provider |
plugin-sdk/self-hosted-provider-setup |
Spezialisierte Hilfsfunktionen zur Einrichtung OpenAI-kompatibler selbst gehosteter Provider | Dieselben Hilfsfunktionen zur Erkennung/Konfiguration selbst gehosteter Provider |
plugin-sdk/provider-auth-runtime |
Hilfsfunktionen für die Provider-Laufzeitauthentifizierung | Hilfsfunktionen zur Laufzeitauflösung von API-Schlüsseln |
plugin-sdk/provider-auth-api-key |
Hilfsfunktionen zur Einrichtung von Provider-API-Schlüsseln | Hilfsfunktionen für das Onboarding mit API-Schlüssel und das Schreiben von Profilen |
plugin-sdk/provider-auth-result |
Hilfsfunktionen für Provider-Authentifizierungsergebnisse | Standard-Builder für OAuth-Authentifizierungsergebnisse |
plugin-sdk/provider-selection-runtime |
Hilfsfunktionen zur Provider-Auswahl | Konfigurierte oder automatische Provider-Auswahl und Zusammenführung der Provider-Rohkonfiguration |
plugin-sdk/provider-env-vars |
Hilfsfunktionen für Provider-Umgebungsvariablen | Hilfsfunktionen zur Suche nach Provider-Authentifizierungsumgebungsvariablen |
plugin-sdk/provider-model-shared |
Gemeinsame Hilfsfunktionen für Provider-Modelle/Wiedergabe | ProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, gemeinsame Builder für Wiedergaberichtlinien, Hilfsfunktionen für Provider-Endpunkte und Hilfsfunktionen zur Normalisierung von Modell-IDs |
plugin-sdk/provider-catalog-shared |
Gemeinsame Hilfsfunktionen für Provider-Kataloge | findCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat |
plugin-sdk/provider-onboard |
Patches für das Provider-Onboarding | Hilfsfunktionen für die Onboarding-Konfiguration |
plugin-sdk/provider-http |
HTTP-Hilfsfunktionen für Provider | Allgemeine Hilfsfunktionen für HTTP-/Endpunktfunktionen von Providern, einschließlich Hilfsfunktionen für Multipart-Formulare zur Audiotranskription |
plugin-sdk/provider-web-fetch |
Hilfsfunktionen für Provider-Webabrufe | Hilfsfunktionen zur Registrierung/Zwischenspeicherung von Webabruf-Providern |
plugin-sdk/provider-web-search-config-contract |
Hilfsfunktionen für die Websuchkonfiguration von Providern | Eng gefasste Hilfsfunktionen für Websuchkonfiguration/Anmeldedaten für Provider, die keine Verdrahtung zur Plugin-Aktivierung benötigen |
plugin-sdk/provider-web-search-contract |
Hilfsfunktionen für den Websuchvertrag von Providern | Eng gefasste Hilfsfunktionen für den Vertrag von Websuchkonfiguration/Anmeldedaten, beispielsweise createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig und bereichsspezifische Setter/Getter für Anmeldedaten |
plugin-sdk/provider-web-search |
Hilfsfunktionen für die Provider-Websuche | Hilfsfunktionen zur Registrierung/Zwischenspeicherung/Laufzeit von Websuch-Providern |
plugin-sdk/provider-tools |
Hilfsfunktionen für die Kompatibilität von Provider-Tools/-Schemas | ProviderToolCompatFamily, buildProviderToolCompatFamilyHooks und Schemabereinigung + Diagnose für DeepSeek/Gemini/OpenAI |
plugin-sdk/provider-usage |
Hilfsfunktionen für die Provider-Nutzung | fetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage und weitere Hilfsfunktionen für die Provider-Nutzung |
plugin-sdk/provider-stream |
Hilfsfunktionen für Provider-Stream-Wrapper | ProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, Stream-Wrapper-Typen und gemeinsame Wrapper-Hilfsfunktionen für Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
plugin-sdk/provider-transport-runtime |
Hilfsfunktionen für den Provider-Transport | Native Hilfsfunktionen für den Provider-Transport, beispielsweise abgesicherte Abrufe, Textextraktion aus Tool-Ergebnissen, Transformationen von Transportnachrichten und beschreibbare Transportereignisströme |
plugin-sdk/keyed-async-queue |
Geordnete asynchrone Warteschlange | KeyedAsyncQueue |
plugin-sdk/media-runtime |
Gemeinsame Medienhilfsfunktionen | Hilfsfunktionen zum Abrufen/Transformieren/Speichern von Medien, ffprobe-gestützte Ermittlung von Videodimensionen und Builder für Mediennutzlasten |
plugin-sdk/media-generation-runtime |
Gemeinsame Hilfsfunktionen zur Mediengenerierung | Gemeinsame Hilfsfunktionen für Failover, Kandidatenauswahl und Meldungen über fehlende Modelle bei der Bild-/Video-/Musikgenerierung |
plugin-sdk/media-understanding |
Hilfsfunktionen zum Medienverständnis | Provider-Typen für das Medienverständnis sowie providerseitige Exporte von Bild-/Audiohilfsfunktionen |
plugin-sdk/text-runtime |
Veralteter breiter Kompatibilitätsexport für Text | Verwenden Sie string-coerce-runtime, text-chunking, text-utility-runtime und logging-core |
plugin-sdk/text-chunking |
Hilfsfunktionen zur Textaufteilung | Hilfsfunktion zur Aufteilung ausgehender Texte |
plugin-sdk/speech |
Sprachhilfsfunktionen | Sprach-Provider-Typen sowie providerseitige Hilfsfunktionen für Direktiven, Registry und Validierung und ein OpenAI-kompatibler TTS-Builder |
plugin-sdk/speech-core |
Gemeinsamer Sprachkern | Sprach-Provider-Typen, Registry, Direktiven, Normalisierung |
plugin-sdk/realtime-transcription |
Hilfsfunktionen für Echtzeittranskription | Provider-Typen, Registry-Hilfsfunktionen und gemeinsame Hilfsfunktion für WebSocket-Sitzungen |
plugin-sdk/realtime-voice |
Hilfsfunktionen für Echtzeitsprache | Provider-Typen, Registry-/Auflösungshilfsfunktionen, Hilfsfunktionen für Bridge-Sitzungen, gemeinsame Warteschlangen für Agent-Rückmeldungen, Sprachsteuerung aktiver Ausführungen, Integrität von Transkripten/Ereignissen, Echounterdrückung, Abgleich von Konsultationsfragen, Koordination erzwungener Konsultationen, Verfolgung des Turn-Kontexts, Verfolgung der Ausgabeaktivität und Hilfsfunktionen für schnelle Kontextkonsultationen |
plugin-sdk/image-generation |
Hilfsfunktionen zur Bildgenerierung | Provider-Typen für die Bildgenerierung sowie Hilfsfunktionen für Bildassets/Daten-URLs und der OpenAI-kompatible Bild-Provider-Builder |
plugin-sdk/image-generation-core |
Gemeinsamer Kern für die Bildgenerierung | Typen für die Bildgenerierung sowie Hilfsfunktionen für Failover, Authentifizierung und Registry |
plugin-sdk/music-generation |
Hilfsfunktionen zur Musikgenerierung | Provider-/Anfrage-/Ergebnistypen für die Musikgenerierung |
plugin-sdk/music-generation-core |
Gemeinsamer Kern für die Musikgenerierung | Typen für die Musikgenerierung, Failover-Hilfsfunktionen, Provider-Suche und Analyse von Modellreferenzen |
plugin-sdk/video-generation |
Hilfsfunktionen zur Videogenerierung | Provider-/Anfrage-/Ergebnistypen für die Videogenerierung |
plugin-sdk/video-generation-core |
Gemeinsamer Kern für die Videogenerierung | Typen für die Videogenerierung, Failover-Hilfsfunktionen, Provider-Suche und Analyse von Modellreferenzen |
plugin-sdk/interactive-runtime |
Hilfsfunktionen für interaktive Antworten | Normalisierung/Reduktion interaktiver Antwortnutzlasten |
plugin-sdk/channel-config-primitives |
Primitive für die Kanalkonfiguration | Eng gefasste Primitive für Kanalkonfigurationsschemas |
plugin-sdk/channel-config-writes |
Hilfsfunktionen zum Schreiben der Kanalkonfiguration | Hilfsfunktionen zur Autorisierung von Schreibvorgängen an der Kanalkonfiguration |
plugin-sdk/channel-plugin-common |
Gemeinsamer Kanal-Prolog | Gemeinsame Exporte des Kanal-Plugin-Prologs |
plugin-sdk/channel-status |
Hilfsfunktionen für den Kanalstatus | Gemeinsame Hilfsfunktionen für Momentaufnahmen/Zusammenfassungen des Kanalstatus |
plugin-sdk/allowlist-config-edit |
Hilfsfunktionen für die Allowlist-Konfiguration | Hilfsfunktionen zum Bearbeiten/Lesen der Allowlist-Konfiguration |
plugin-sdk/group-access |
Hilfsfunktionen für den Gruppenzugriff | Gemeinsame Hilfsfunktionen für Entscheidungen zum Gruppenzugriff |
plugin-sdk/direct-dm, plugin-sdk/direct-dm-access |
Veraltete Kompatibilitätsfassaden | Verwenden Sie plugin-sdk/channel-inbound |
plugin-sdk/direct-dm-guard-policy |
Schutz-Hilfsfunktionen für direkte DMs | Eng gefasste Hilfsfunktionen für Schutzrichtlinien vor der Kryptografie |
plugin-sdk/extension-shared |
Gemeinsame Erweiterungshilfsfunktionen | Primitive für passive Kanäle/Status und Umgebungs-Proxy-Hilfsfunktionen |
plugin-sdk/webhook-targets |
Hilfsfunktionen für Webhook-Ziele | Webhook-Ziel-Registry und Hilfsfunktionen zur Routeninstallation |
plugin-sdk/webhook-path |
Veralteter Alias für den Webhook-Pfad | Verwenden Sie plugin-sdk/webhook-ingress |
plugin-sdk/web-media |
Gemeinsame Hilfsfunktionen für Webmedien | Hilfsfunktionen zum Laden entfernter/lokaler Medien |
plugin-sdk/zod |
Veralteter Kompatibilitäts-Reexport für Zod | Importieren Sie zod direkt aus zod |
plugin-sdk/memory-core |
Gebündelte Hilfsfunktionen für den Speicherkern | Hilfsoberfläche für Speicherverwaltung/-konfiguration/-dateien/CLI |
plugin-sdk/memory-core-engine-runtime |
Laufzeitfassade der Speicher-Engine | Laufzeitfassade für Speicherindex/-suche |
plugin-sdk/memory-core-host-embedding-registry |
Registry für Speichereinbettungen | Leichtgewichtige Hilfsfunktionen für die Registry von Providern für Speichereinbettungen |
plugin-sdk/memory-core-host-engine-foundation |
Fundament-Engine des Speicher-Hosts | Exporte der Fundament-Engine des Speicher-Hosts |
plugin-sdk/memory-core-host-engine-embeddings |
Einbettungs-Engine des Speicher-Hosts | Verträge für Speichereinbettungen, Registry-Zugriff, lokaler Provider und allgemeine Hilfsfunktionen für Stapelverarbeitung/Remote-Zugriff; konkrete Remote-Provider befinden sich in den jeweils zuständigen Plugins |
plugin-sdk/memory-core-host-engine-qmd |
QMD-Engine des Speicher-Hosts | Exporte der QMD-Engine des Speicher-Hosts |
plugin-sdk/memory-core-host-engine-storage |
Speicher-Engine des Speicher-Hosts | Exporte der Speicher-Engine des Speicher-Hosts |
plugin-sdk/memory-core-host-multimodal |
Multimodale Hilfsfunktionen des Speicher-Hosts | Multimodale Hilfsfunktionen des Speicher-Hosts |
plugin-sdk/memory-core-host-query |
Abfragehilfsfunktionen des Speicher-Hosts | Abfragehilfsfunktionen des Speicher-Hosts |
plugin-sdk/memory-core-host-secret |
Geheimnishilfsfunktionen des Speicher-Hosts | Geheimnishilfsfunktionen des Speicher-Hosts |
plugin-sdk/memory-core-host-events |
Veralteter Alias für Speicherereignisse | Verwenden Sie plugin-sdk/memory-host-events |
plugin-sdk/memory-core-host-status |
Statushilfsfunktionen des Speicher-Hosts | Statushilfsfunktionen des Speicher-Hosts |
plugin-sdk/memory-core-host-runtime-cli |
CLI-Laufzeit des Speicher-Hosts | Hilfsfunktionen für die CLI-Laufzeit des Speicher-Hosts |
plugin-sdk/memory-core-host-runtime-core |
Kernlaufzeit des Speicher-Hosts | Hilfsfunktionen für die Kernlaufzeit des Speicher-Hosts |
plugin-sdk/memory-core-host-runtime-files |
Datei-/Laufzeithilfsfunktionen des Speicher-Hosts | Datei-/Laufzeithilfsfunktionen des Speicher-Hosts |
plugin-sdk/memory-host-core |
Alias für die Kernlaufzeit des Speicher-Hosts | Herstellerneutraler Alias für Hilfsfunktionen der Kernlaufzeit des Speicher-Hosts |
plugin-sdk/memory-host-events |
Alias für das Ereignisjournal des Speicher-Hosts | Herstellerneutraler Alias für Hilfsfunktionen des Ereignisjournals des Speicher-Hosts |
plugin-sdk/memory-host-files |
Veralteter Alias für Speicherdateien/-laufzeit | Verwenden Sie plugin-sdk/memory-core-host-runtime-files |
plugin-sdk/memory-host-markdown |
Hilfsfunktionen für verwaltetes Markdown | Gemeinsame Hilfsfunktionen für verwaltetes Markdown für speichernahe Plugins |
plugin-sdk/memory-host-search |
Suchfassade für Active Memory | Lazy-Laufzeitfassade des Suchmanagers für Active Memory |
plugin-sdk/memory-host-status |
Veralteter Alias für den Status des Speicher-Hosts | Verwenden Sie plugin-sdk/memory-core-host-status |
plugin-sdk/testing |
Testhilfsprogramme | Veraltetes repo-lokales Kompatibilitäts-Barrel; verwenden Sie fokussierte repo-lokale Testunterpfade wie plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env und plugin-sdk/test-fixtures |
Diese Tabelle bildet die gemeinsame Teilmenge für Migrationen ab, nicht die vollständige SDK-Oberfläche. Das
Inventar der Compiler-Einstiegspunkte befindet sich in scripts/lib/plugin-sdk-entrypoints.json;
Paketexporte werden aus der öffentlichen Teilmenge generiert.
Reservierte Hilfsschnittstellen für gebündelte Plugins wurden aus der öffentlichen SDK-
Exportzuordnung entfernt, mit Ausnahme ausdrücklich dokumentierter Kompatibilitätsfassaden wie dem
veralteten plugin-sdk/discord-Shim, der für externe Plugins beibehalten wird, die weiterhin
das veröffentlichte Paket @openclaw/discord direkt importieren. Eigentümerspezifische
Hilfsfunktionen befinden sich im Paket des jeweiligen Plugins; gemeinsam genutztes Host-Verhalten wird
über generische SDK-Verträge wie plugin-sdk/gateway-runtime,
plugin-sdk/security-runtime und plugin-sdk/plugin-config-runtime bereitgestellt.
Verwenden Sie den spezifischsten Import, der zur Aufgabe passt. Wenn Sie keinen Export finden,
prüfen Sie den Quellcode unter src/plugin-sdk/ oder fragen Sie die Maintainer, welchem generischen
Vertrag er zugeordnet werden sollte.
Aktive Veraltungen
Spezifischere Veraltungen innerhalb des Plugin-SDK, des Provider-Vertrags, der Runtime- Oberfläche und des Manifests. Alle funktionieren derzeit noch, werden jedoch in einer zukünftigen Hauptversion entfernt. Jeder Eintrag ordnet die alte API ihrem kanonischen Ersatz zu.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJIaWxmc2Z1bmt0aW9uZW4gZsO8ciBjb21tYW5kLWF1dGggLQ
command-status">
Alt (openclaw/plugin-sdk/command-auth): buildCommandsMessage,
buildCommandsMessagePaginated, buildHelpMessage.
Neu (openclaw/plugin-sdk/command-status): dieselben Signaturen, dieselben
Exporte – sie werden lediglich über den spezifischeren Unterpfad importiert. command-auth
reexportiert sie als Kompatibilitäts-Stubs.
// Vorherimport { buildHelpMessage } from "openclaw/plugin-sdk/command-auth"; // Nachherimport { buildHelpMessage } from "openclaw/plugin-sdk/command-status";OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJIaWxmc2Z1bmt0aW9uZW4gZsO8ciBNZW50aW9uLUdhdGluZyAt
resolveInboundMentionDecision">
Alt: resolveMentionGating(params) und
resolveMentionGatingWithBypass(params) aus
openclaw/plugin-sdk/channel-inbound oder
openclaw/plugin-sdk/channel-mention-gating.
Neu: resolveInboundMentionDecision({ facts, policy }) – ein Entscheidungsobjekt
anstelle zweier getrennter Aufrufformen.
Wird in Discord, iMessage, Matrix, MS Teams, QQBot, Signal,
Telegram, WhatsApp und Zalo verwendet. Slacks eigenes app_mention-Ereignismodell
verwendet diese Hilfsfunktion nicht.
Channel-Runtime-Shim und Hilfsfunktionen für Channel-Aktionen
openclaw/plugin-sdk/channel-runtime ist ein Kompatibilitäts-Shim für ältere
Channel-Plugins. Importieren Sie ihn nicht in neuem Code; verwenden Sie
openclaw/plugin-sdk/channel-runtime-context, um Runtime-
Objekte zu registrieren.
Die channelActions*-Hilfsfunktionen in openclaw/plugin-sdk/channel-actions sind
ebenso veraltet wie rohe „actions“-Channel-Exporte. Stellen Sie Fähigkeiten
stattdessen über die semantische presentation-Oberfläche bereit – Channel-Plugins
deklarieren, was sie darstellen (Karten, Schaltflächen, Auswahlelemente), und nicht, welche rohen
Aktionsnamen sie akzeptieren.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJIaWxmc2Z1bmt0aW9uIHRvb2woKSBmw7xyIFdlYnN1Y2hlLVByb3ZpZGVyIC0
createTool() im Plugin">
Alt: tool()-Factory aus openclaw/plugin-sdk/provider-web-search.
Neu: Implementieren Sie createTool(...) direkt im Provider-Plugin.
OpenClaw benötigt die SDK-Hilfsfunktion nicht mehr, um den Tool-Wrapper zu registrieren.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJLbGFydGV4dC1DaGFubmVsLVVtc2NobMOkZ2UgLQ
BodyForAgent">
Alt: api.runtime.channel.reply.formatInboundEnvelope(...) (und das
Feld channelEnvelope in eingehenden Nachrichtenobjekten), um aus eingehenden
Channel-Nachrichten einen flachen Klartext-Prompt-Umschlag zu erstellen.
Neu: BodyForAgent sowie strukturierte Benutzerkontextblöcke. Channel-
Plugins hängen Routing-Metadaten (Thread, Thema, Antwortbezug, Reaktionen) als
typisierte Felder an, anstatt sie zu einer Prompt-Zeichenfolge zu verketten. Die
Hilfsfunktion formatAgentEnvelope(...) wird für synthetisch erzeugte
assistentenseitige Umschläge weiterhin unterstützt, eingehende Klartext-Umschläge werden jedoch
abgeschafft.
Betroffene Bereiche: inbound_claim, message_received und alle benutzerdefinierten
Channel-Plugins, die den alten Umschlagtext nachverarbeitet haben.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJkZWFjdGl2YXRlLUhvb2sgLQ
gateway_stop">
Alt: api.on("deactivate", handler).
Neu: api.on("gateway_stop", handler). Derselbe Vertrag für die Bereinigung beim
Herunterfahren; lediglich der Name des Hooks ändert sich.
// Vorherapi.on("deactivate", async (event, ctx) => { await stopPluginService(ctx);}); // Nachherapi.on("gateway_stop", async (event, ctx) => { await stopPluginService(ctx);});deactivate bleibt als veralteter Kompatibilitätsalias angebunden, bis es
nach dem 2026-08-16 entfernt wird.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJzdWJhZ2VudF9zcGF3bmluZy1Ib29rIC0
Thread-Bindung im Kern">
Alt: api.on("subagent_spawning", handler) mit Rückgabe von
threadBindingReady oder deliveryOrigin.
Neu: Lassen Sie den Kern Subagent-Bindungen mit thread: true über den
Adapter für Channel-Sitzungsbindungen vorbereiten. Verwenden Sie api.on("subagent_spawned", handler)
ausschließlich zur Beobachtung nach dem Start.
// Vorherapi.on("subagent_spawning", async () => ({ status: "ok", threadBindingReady: true, deliveryOrigin: { channel: "discord", to: "channel:123", threadId: "456" },})); // Nachherapi.on("subagent_spawned", async (event) => { await observeSubagentLaunch(event);});subagent_spawning, PluginHookSubagentSpawningEvent,
PluginHookSubagentSpawningResult und
SubagentLifecycleHookRunner.runSubagentSpawning(...) bleiben nur als
veraltete Kompatibilitätsoberflächen erhalten, während externe Plugins migriert werden, und werden
nach dem 2026-08-30 entfernt.
Provider-Ermittlungstypen -���u��)�Z��-ʗ���-��bz��bjǟ�؞����n�
| Alter Alias | Neuer Typ |
|---|---|
ProviderDiscoveryOrder |
ProviderCatalogOrder |
ProviderDiscoveryContext |
ProviderCatalogContext |
ProviderDiscoveryResult |
ProviderCatalogResult |
ProviderPluginDiscovery |
ProviderPluginCatalog |
Hinzu kommt der veraltete statische Container ProviderCapabilities – Provider-Plugins
sollten explizite Provider-Hooks wie buildReplayPolicy,
normalizeToolSchemas und wrapStreamFn anstelle eines statischen Objekts verwenden.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJIb29rcyBmw7xyIERlbmtyZWdlbG4gLQ
resolveThinkingProfile">
Alt (drei separate Hooks in ProviderThinkingPolicy):
isBinaryThinking(ctx), supportsXHighThinking(ctx) und
resolveDefaultThinkingLevel(ctx).
Neu: eine einzelne Funktion resolveThinkingProfile(ctx), die ein
ProviderThinkingProfile mit der kanonischen id, einem optionalen label und einer
nach Rang geordneten Liste von Stufen zurückgibt. OpenClaw stuft veraltete gespeicherte Werte anhand des Profilrangs
automatisch herab.
Der Kontext enthält provider, modelId, optional zusammengeführte reasoning-
sowie optional zusammengeführte compat-Fakten des Modells. Provider-Plugins können diese
Katalogfakten verwenden, um ein modellspezifisches Profil nur dann bereitzustellen, wenn der konfigurierte
Anfragevertrag dies unterstützt.
Implementieren Sie einen Hook anstelle von drei. Die veralteten Hooks funktionieren während des Veraltungszeitraums weiterhin, werden jedoch nicht mit dem Profilergebnis kombiniert.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJFeHRlcm5lIEF1dGhlbnRpZml6aWVydW5ncy1Qcm92aWRlciAt contracts.externalAuthProviders"> Alt: Implementierung externer Authentifizierungs-Hooks, ohne den Provider im Plugin-Manifest zu deklarieren.
Neu: Deklarieren Sie contracts.externalAuthProviders im Plugin-Manifest
und implementieren Sie resolveExternalAuthProfiles(...).
{ "contracts": { "externalAuthProviders": ["anthropic", "openai"] }}OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJTdWNoZSBuYWNoIFByb3ZpZGVyLVVtZ2VidW5nc3ZhcmlhYmxlbiAt
setup.providers[].envVars">
Altes Manifestfeld: providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.
Neu: Spiegeln Sie dieselbe Suche nach Umgebungsvariablen in
setup.providers[].envVars im Manifest. Dadurch werden Umgebungsmetadaten für Einrichtung und Status an einer Stelle
zusammengeführt, und es wird vermieden, die Plugin-Runtime nur für die Suche nach Umgebungsvariablen
zu starten.
providerAuthEnvVars wird über einen Kompatibilitätsadapter weiterhin unterstützt,
bis der Veraltungszeitraum endet.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJSZWdpc3RyaWVydW5nIGRlcyBNZW1vcnktUGx1Z2lucyAt
registerMemoryCapability">
Alt: drei separate Aufrufe – api.registerMemoryPromptSection(...),
api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).
Neu: ein Aufruf über die Memory-State-API –
registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).
Dieselben Slots, ein einziger Registrierungsaufruf. Additive Prompt- und Korpus-Hilfsfunktionen
(registerMemoryPromptSupplement, registerMemoryCorpusSupplement) sind
nicht betroffen.
API für Memory-Embedding-Provider
Alt: api.registerMemoryEmbeddingProvider(...) sowie
contracts.memoryEmbeddingProviders.
Neu: api.registerEmbeddingProvider(...) sowie
contracts.embeddingProviders.
Der generische Vertrag für Embedding-Provider kann außerhalb von Memory wiederverwendet werden und ist der unterstützte Weg für neue Provider. Die Memory-spezifische Registrierungs-API bleibt als veraltete Kompatibilitätsoberfläche angebunden, während vorhandene Provider migriert werden. Die Plugin-Inspektion meldet eine nicht gebündelte Verwendung als Kompatibilitätsschuld.
Typen für Subagent-Sitzungsnachrichten umbenannt
Zwei veraltete Typaliase werden weiterhin aus src/plugins/runtime/types.ts exportiert:
| Alt | Neu |
|---|---|
SubagentReadSessionParams |
SubagentGetSessionMessagesParams |
SubagentReadSessionResult |
SubagentGetSessionMessagesResult |
Die Runtime-Methode readSession ist zugunsten von
getSessionMessages veraltet. Gleiche Signatur; die alte Methode delegiert an die
neue.
Entfernte APIs für Sitzungs- und Transkriptdateien
Die Umstellung von Sitzungen und Transkripten auf SQLite entfernt oder verwirft Plugin-seitige APIs,
die aktive sessions.json-Speicher, JSONL-Transkriptpfade oder Listen
von Sitzungsdateien offengelegt haben. Runtime-Plugins sollten Sitzungsidentitäten und SDK-Runtime-
Hilfsfunktionen verwenden, anstatt aktive Dateien aufzulösen oder zu verändern.
| Zu migrierende Oberfläche | Ersatz |
|---|---|
Veraltete loadSessionStore(...), updateSessionStore(...) und resolveSessionStoreEntry(...) |
getSessionEntry(...), listSessionEntries(...) und Sitzungsmutationen auf Zeilenebene. |
Veraltete resolveSessionFilePath(...) |
Sitzungsidentität (sessionKey, sessionId und SDK-Laufzeitziel-Helfer) sowie Gateway-Methoden, die auf der aktuellen Sitzung arbeiten. |
Entfernte saveSessionStore(...) |
Gateway-eigene Sitzungs-Laufzeit-APIs; Plugin-Code sollte den Sitzungszustand über dokumentierte Laufzeit-/Kontext-Helfer abfragen oder ändern, statt die aktive Speicherdatei zu schreiben. |
Entfernte resolveSessionTranscriptPathInDir(...) und resolveAndPersistSessionFile(...) |
Sitzungsidentität und Gateway-Methoden, die auf der aktuellen Sitzung arbeiten. |
readLatestAssistantTextFromSessionTranscript(...) |
Identitätsgestützte Transkriptleser, die vom aktuellen Laufzeitkontext bereitgestellt werden, oder Gateway-Verlaufs-/Sitzungsmethoden, wenn sich das Plugin außerhalb des Eigentümerpfads des Transkripts befindet. |
SessionTranscriptUpdate.sessionFile |
SessionTranscriptUpdate.target mit agentId, sessionKey und sessionId. |
Eingaben für die Speichersynchronisierung wie sessionFiles |
Identitätsgestützte Transkript-/Sitzungsquellen, die vom Host bereitgestellt werden; durchsuchen Sie für aktive Sitzungen keine aktiven JSONL-Dateien. |
Laufzeitoptionen namens transcriptPath oder sessionFile für aktive Sitzungen |
sessionTarget-/Laufzeitzielobjekte, die eine speicherneutrale Sitzungsidentität enthalten. |
Alte JSONL-Transkriptdateien bleiben als Import-, Archiv-, Export- und Support-Artefakte gültig. Sie sind nicht mehr der dauerhafte Laufzeitvertrag für aktive Sitzungen.
Mit v2026.7.1-beta.5 veröffentlichte offizielle Plugins importierten die vier
oben genannten veralteten Helfer. openclaw/plugin-sdk/session-store-runtime behält
genau diese Brücke bis zum 2026-10-12 bei; neue Plugins müssen die Ersatzlösungen verwenden.
resolveStorePath(...) bleibt ein unterstützter SDK-Helfer und ist nicht Teil
dieser Veraltung.
openclaw plugins inspect --all --runtime meldet nicht gebündelte Plugins, deren
Ladefehler oder Diagnosen weiterhin auf diese entfernten Datei-APIs verweisen. Der
Hinweisscan von @openclaw/plugin-inspector muss Version 0.3.17 oder
neuer verwenden, damit Scans externer Pakete auch Sitzungsspeicher-Helfer für den gesamten Speicher,
Helfer für Sitzungspfade, alte Transkriptdateiziele und Low-Level-
Transkripthelfer vor der Veröffentlichung kennzeichnen.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJydW50aW1lLnRhc2tzLmZsb3cgLQ
runtime.tasks.managedFlows">
Alt: runtime.tasks.flow (Singular) gab einen Live-Zugriff
auf den Aufgabenablauf zurück.
Neu: runtime.tasks.managedFlows behält die verwaltete TaskFlow-Mutations-
laufzeit für Plugins bei, die untergeordnete Aufgaben aus einem Ablauf erstellen,
aktualisieren, abbrechen oder ausführen. Verwenden Sie runtime.tasks.flows, wenn das Plugin nur
DTO-basierte Lesezugriffe benötigt.
// Vorherconst flow = api.runtime.tasks.flow.fromToolContext(ctx);// Nachherconst flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);Entfernt nach dem 2026-07-26.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJFaW5nZWJldHRldGUgRXJ3ZWl0ZXJ1bmdzZmFicmlrZW4gLQ
Middleware für Agenten-Werkzeugergebnisse">
Wird oben unter Migration behandelt. Der Vollständigkeit
halber hier ebenfalls aufgeführt: Der entfernte, ausschließlich für eingebettete Runner bestimmte
Pfad api.registerEmbeddedExtensionFactory(...) wird durch
api.registerAgentToolResultMiddleware(...) mit einer expliziten Laufzeitliste
in contracts.agentToolResultMiddleware ersetzt.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJPcGVuQ2xhd1NjaGVtYVR5cGUtQWxpYXMgLQ
OpenClawConfig">
Der aus openclaw/plugin-sdk erneut exportierte Typ OpenClawSchemaType ist jetzt ein
einzeiliger Alias für OpenClawConfig. Bevorzugen Sie den kanonischen Namen.
// Vorherimport type { OpenClawSchemaType } from "openclaw/plugin-sdk";// Nachherimport type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";Migration von Talk und Echtzeitsprachfunktionen
Echtzeitsprach-, Telefonie-, Besprechungs- und Browser-Talk-Code verwendet gemeinsam einen Talk-
Sitzungscontroller, der von openclaw/plugin-sdk/realtime-voice exportiert wird. Der
Controller verwaltet die gemeinsame Talk-Ereignishülle, den Zustand des aktiven Gesprächsabschnitts, den Aufnahme-
zustand, den Ausgabeaudiozustand, den Verlauf der jüngsten Ereignisse und die Zurückweisung veralteter Gesprächsabschnitte.
Provider-Plugins verwalten anbieterspezifische Echtzeitsitzungen; Oberflächen-Plugins verwalten
Besonderheiten bei Aufnahme, Wiedergabe, Telefonie und Besprechungen.
Alle gebündelten Oberflächen verwenden den gemeinsamen Controller: Browser-Relay,
Übergabe an verwaltete Räume, Echtzeit-Sprachanrufe, Streaming-STT für Sprachanrufe, Google
Meet in Echtzeit und natives Push-to-Talk. Gateway kündigt in
hello-ok.features.events einen Live-Talk-Ereigniskanal an: talk.event.
Neuer Code sollte createTalkEventSequencer(...) nicht direkt aufrufen, es sei denn,
er implementiert einen Low-Level-Adapter oder eine Test-Fixture. Verwenden Sie den gemeinsamen Controller, damit
auf Gesprächsabschnitte beschränkte Ereignisse nicht ohne Gesprächsabschnitts-ID ausgegeben werden können, veraltete Aufrufe von turnEnd /
turnCancel keinen neueren aktiven Gesprächsabschnitt löschen können und Ereignisse des
Ausgabeaudio-Lebenszyklus über Telefonie, Besprechungen, Browser-Relay,
Übergabe an verwaltete Räume und native Talk-Clients hinweg konsistent bleiben.
Die öffentliche API-Struktur:
// Gateway-eigene Talk-Sitzungs-API.await gateway.request("talk.session.create", { mode: "realtime", transport: "gateway-relay", brain: "agent-consult", sessionKey: "main",});await gateway.request("talk.session.appendAudio", { sessionId, audioBase64 });await gateway.request("talk.session.cancelOutput", { sessionId, reason: "barge-in" });await gateway.request("talk.session.submitToolResult", { sessionId, callId, result: { status: "working" }, options: { willContinue: true },});await gateway.request("talk.session.submitToolResult", { sessionId, callId, result: { status: "already_delivered" }, options: { suppressResponse: true },});await gateway.request("talk.session.submitToolResult", { sessionId, callId, result });await gateway.request("talk.session.close", { sessionId }); // Client-eigene Provider-Sitzungs-API.await gateway.request("talk.client.create", { mode: "realtime", transport: "webrtc", brain: "agent-consult", sessionKey: "main",});await gateway.request("talk.client.toolCall", { sessionKey, callId, name, args });await gateway.request("talk.client.steer", { sessionKey, text, mode: "steer" });Browsereigene WebRTC-/Provider-WebSocket-Sitzungen verwenden talk.client.create,
da der Browser die Provider-Aushandlung und den Medientransport verwaltet, während das
Gateway Anmeldedaten, Anweisungen und Werkzeugrichtlinien verwaltet. talk.session.* ist
die gemeinsame, vom Gateway verwaltete Oberfläche für Echtzeit über Gateway-Relay, Transkription über Gateway-Relay
und native STT-/TTS-Sitzungen in verwalteten Räumen.
Alte Konfigurationen, die Echtzeitselektoren neben talk.provider /
talk.providers platzieren, sollten mit openclaw doctor --fix repariert werden; die Talk-Laufzeit
interpretiert Sprach-/TTS-Provider-Konfigurationen nicht als Echtzeit-Provider-Konfigurationen um.
Die unterstützten Kombinationen für talk.session.create sind bewusst begrenzt:
| Modus | Transport | Logik | Eigentümer | Hinweise |
|---|---|---|---|---|
realtime |
gateway-relay |
agent-consult |
Gateway | Vollduplex-Provider-Audio, das über das Gateway überbrückt wird; Werkzeugaufrufe werden über das Agent-Consult-Werkzeug weitergeleitet. |
transcription |
gateway-relay |
none |
Gateway | Nur Streaming-STT; Aufrufer senden Eingabeaudio und empfangen Transkriptereignisse. |
stt-tts |
managed-room |
agent-consult |
Nativer/Client-Raum | Räume im Push-to-Talk- und Walkie-Talkie-Stil, in denen der Client Aufnahme/Wiedergabe und das Gateway den Gesprächsabschnittszustand verwaltet. |
stt-tts |
managed-room |
direct-tools |
Nativer/Client-Raum | Nur für Administratoren vorgesehener Raummodus für vertrauenswürdige Erstanbieter-Oberflächen, die Gateway-Werkzeugaktionen direkt ausführen. |
Methodenzuordnung für Leser, die von den älteren Familien talk.realtime.* /
talk.transcription.* / talk.handoff.* migrieren (alle entfernt):
| Alt | Neu |
|---|---|
talk.realtime.session |
talk.client.create |
talk.realtime.toolCall |
talk.client.toolCall |
talk.realtime.relayAudio |
talk.session.appendAudio |
talk.realtime.relayCancel |
talk.session.cancelOutput oder talk.session.cancelTurn |
talk.realtime.relayToolResult |
talk.session.submitToolResult |
talk.realtime.relayStop |
talk.session.close |
talk.transcription.session |
talk.session.create({ mode: "transcription" }) |
talk.transcription.relayAudio |
talk.session.appendAudio |
talk.transcription.relayCancel |
talk.session.cancelTurn |
talk.transcription.relayStop |
talk.session.close |
talk.handoff.create |
talk.session.create({ transport: "managed-room" }) |
talk.handoff.join |
talk.session.join |
talk.handoff.revoke |
talk.session.close |
Das vereinheitlichte Steuerungsvokabular ist ebenfalls bewusst begrenzt:
| Methode | Gilt für | Vertrag |
|---|---|---|
talk.session.appendAudio |
realtime/gateway-relay, transcription/gateway-relay |
Hängt einen base64-codierten PCM-Audioabschnitt an die Provider-Sitzung an, die derselben Gateway-Verbindung zugeordnet ist. |
talk.session.startTurn |
stt-tts/managed-room |
Startet einen Benutzer-Turn in einem verwalteten Raum. |
talk.session.endTurn |
stt-tts/managed-room |
Beendet den aktiven Turn nach der Validierung auf einen veralteten Turn. |
talk.session.cancelTurn |
alle Gateway-eigenen Sitzungen | Bricht die aktive Erfassung sowie laufende Provider-, Agenten- und TTS-Vorgänge für einen Turn ab. |
talk.session.cancelOutput |
realtime/gateway-relay |
Stoppt die Audioausgabe des Assistenten, ohne den Benutzer-Turn zwingend zu beenden. |
talk.session.submitToolResult |
realtime/gateway-relay |
Schließt einen Provider-Tool-Aufruf nach einem von dessen Bridge bereitgestellten asynchronen Abschluss ab; übergeben Sie options.willContinue für eine Zwischenausgabe oder, sofern unterstützt, options.suppressResponse, um eine weitere Assistentenantwort zu vermeiden. |
talk.session.steer |
agentengestützte Talk-Sitzungen | Sendet die gesprochene Steuerung status, steer, cancel oder followup an den aktiven eingebetteten Lauf, der aus der Talk-Sitzung ermittelt wurde. |
talk.session.close |
alle vereinheitlichten Sitzungen | Stoppt Relay-Sitzungen oder widerruft den Zustand des verwalteten Raums und verwirft anschließend die vereinheitlichte Sitzungs-ID. |
Führen Sie keine Provider- oder Plattformsonderfälle im Kern ein, damit dies funktioniert. Der Kern ist für die Semantik der Talk-Sitzungen zuständig. Provider-Plugins sind für die Einrichtung der Anbietersitzungen zuständig. Voice-call und Google Meet sind für Telefonie-/Meeting-Adapter zuständig. Browser und native Apps sind für die UX der Geräteerfassung und -wiedergabe zuständig.
Zeitplan für die Entfernung
| Zeitpunkt | Was geschieht |
|---|---|
| Jetzt | Veraltete Oberflächen geben Laufzeitwarnungen aus. |
Das removeAfter-Datum jedes Kompatibilitätseintrags |
Diese bestimmte Oberfläche kann entfernt werden; pnpm plugins:boundary-report --fail-on-eligible-compat lässt die CI fehlschlagen, sobald das Datum überschritten ist. |
| Nächste Hauptversion | Alle noch nicht migrierten Oberflächen werden entfernt; Plugins, die sie weiterhin verwenden, schlagen fehl. |
Alle Kern-Plugins wurden bereits migriert. Externe Plugins sollten
vor der nächsten Hauptversion migriert werden. Führen Sie pnpm plugins:boundary-report aus, um zu sehen, welche
Kompatibilitätseinträge für die von Ihrem Plugin verwendeten Oberflächen als Nächstes fällig sind.
Warnungen vorübergehend unterdrücken
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway runOPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway runDies ist ein vorübergehender Notausgang, keine dauerhafte Lösung.
Verwandte Themen
- Erste Schritte - Erstellen Sie Ihr erstes Plugin
- SDK-Übersicht - vollständige Referenz für Subpath-Importe
- Kanal-Plugins - Kanal-Plugins erstellen
- Provider-Plugins - Provider-Plugins erstellen
- Plugin-Interna - ausführliche Erläuterung der Architektur
- Plugin-Manifest - Referenz des Manifest-Schemas