Dies ist ein Leitfaden für Mitwirkende für Entwickler des OpenClaw-Kerns. Wenn Sie
ein externes Plugin erstellen, lesen Sie stattdessen Plugins erstellen.
Die ausführliche Architekturreferenz (Fähigkeitsmodell, Zuständigkeiten,
Lade-Pipeline, Laufzeit-Hilfsfunktionen) finden Sie unter Plugin-Interna.
- Plugin = Zuständigkeitsgrenze
- Fähigkeit = gemeinsamer Kernvertrag
Wann eine Fähigkeit erstellt werden sollte
Erstellen Sie eine neue Fähigkeit nur, wenn alle folgenden Bedingungen erfüllt sind:- Mehr als ein Anbieter könnte sie plausibel implementieren.
- Kanäle, Tools oder Funktions-Plugins sollen sie nutzen können, ohne den Anbieter kennen zu müssen.
- Der Kern muss Fallback-, Richtlinien-, Konfigurations- oder Auslieferungsverhalten verwalten.
Die Standardabfolge
- Definieren Sie den typisierten Kernvertrag.
- Fügen Sie die Plugin-Registrierung für diesen Vertrag hinzu.
- Fügen Sie eine gemeinsame Laufzeit-Hilfsfunktion hinzu.
- Binden Sie als Nachweis ein echtes Anbieter-Plugin ein.
- Stellen Sie die Funktions- und Kanalnutzer auf die Laufzeit-Hilfsfunktion um.
- Fügen Sie Vertragstests hinzu.
- Dokumentieren Sie die betreiberseitige Konfiguration und das Zuständigkeitsmodell.
Was wohin gehört
Schnittstellen für Provider und Harness
Verwenden Sie Provider-Hooks, wenn das Verhalten zum Vertrag des Modell-Providers und nicht zur generischen Agentenschleife gehört. Beispiele sind providerspezifische Anfrageparameter nach der Transportauswahl, die Präferenz für Authentifizierungsprofile, Prompt-Overlays und das anschließende Fallback-Routing nach einem Modell- oder Profil-Failover. Verwenden Sie Agenten-Harness-Hooks, wenn das Verhalten zur Laufzeit gehört, die einen Durchlauf ausführt. Harnesses können explizite Protokollergebnisse wie eine leere Ausgabe, Schlussfolgerungen ohne sichtbare Ausgabe oder einen strukturierten Plan ohne endgültige Antwort klassifizieren, damit die äußere Modell-Fallback-Richtlinie über eine Wiederholung entscheiden kann. Halten Sie beide Schnittstellen eng begrenzt:- Der Kern verwaltet die Wiederholungs-/Fallback-Richtlinie.
- Provider-Plugins verwalten providerspezifische Hinweise zu Anfragen, Authentifizierung und Routing.
- Harness-Plugins verwalten die laufzeitspezifische Klassifizierung von Versuchen.
- Plugins von Drittanbietern geben Hinweise zurück und verändern den Kernzustand nicht direkt.
Datei-Checkliste
Für eine neue Fähigkeit sind voraussichtlich Änderungen in diesen Bereichen erforderlich:src/<capability>/types.tssrc/<capability>/...registry/runtime.tssrc/plugins/types.tssrc/plugins/registry.tssrc/plugins/captured-registration.tssrc/plugins/contracts/registry.tssrc/plugins/runtime/types-core.tssrc/plugins/runtime/index.tssrc/plugin-sdk/<capability>.tssrc/plugin-sdk/<capability>-runtime.ts- Ein oder mehrere gebündelte Plugin-Pakete.
- Konfiguration, Dokumentation, Tests.
Ausgearbeitetes Beispiel: Bildgenerierung
Die Bildgenerierung folgt der Standardstruktur:- Der Kern definiert
ImageGenerationProvider. - Der Kern stellt
registerImageGenerationProvider(...)bereit. - Der Kern stellt
api.runtime.imageGeneration.generate(...)und.listProviders(...)bereit. - Anbieter-Plugins (
comfy,deepinfra,fal,google,litellm,microsoft-foundry,minimax,openai,openrouter,vydra,xai) registrieren anbietergestützte Implementierungen. - Zukünftige Anbieter registrieren denselben Vertrag, ohne Kanäle oder Tools zu ändern.
agents.defaults.imageModelanalysiert Bilder.agents.defaults.mediaModels.imagegeneriert Bilder.
Embedding-Provider
Verwenden SieregisterEmbeddingProvider(...) / Vertrag embeddingProviders für
wiederverwendbare Provider für Vektor-Embeddings. Dieser Vertrag ist bewusst umfassender
als der Speicher: Tools, Suche, Abruf, Importprogramme oder zukünftige Funktions-Plugins
können Embeddings nutzen, ohne von der Speicher-Engine abhängig zu sein. Die Speichersuche
nutzt ebenfalls das generische embeddingProviders.
Die ältere speicherspezifische Registrierungs-API und der Vertrag memoryEmbeddingProviders
sind veraltet. Verwenden Sie registerEmbeddingProvider und
embeddingProviders für alle neuen Embedding-Provider.
Review-Checkliste
Prüfen Sie vor der Auslieferung einer neuen Fähigkeit Folgendes:- Kein Kanal oder Tool importiert Anbietercode direkt.
- Die Laufzeit-Hilfsfunktion ist der gemeinsame Pfad.
- Mindestens ein Vertragstest bestätigt die gebündelte Zuständigkeit.
- Die Konfigurationsdokumentation nennt das neue Modell bzw. den neuen Konfigurationsschlüssel.
- Die Plugin-Dokumentation erläutert die Zuständigkeitsgrenze.
Verwandte Themen
- Plugin-Interna — Fähigkeitsmodell, Zuständigkeiten, Lade-Pipeline, Laufzeit-Hilfsfunktionen.
- Plugins erstellen — Tutorial für das erste Plugin.
- SDK-Übersicht — Referenz zur Importzuordnung und Registrierungs-API.
- Skills erstellen — ergänzende Oberfläche für Mitwirkende.