Dit is een bijdragershandleiding voor OpenClaw-coreontwikkelaars. Als je
een externe Plugin bouwt, zie in plaats daarvan Plugins bouwen.
Voor de uitgebreide architectuurreferentie (capaciteitsmodel, eigenaarschap,
laadpijplijn, runtime-helpers), zie Plugin-internals.
- Plugin = eigendomsgrens
- capaciteit = gedeeld corecontract
Wanneer je een capaciteit maakt
Maak een nieuwe capaciteit wanneer al het volgende waar is:- Meer dan één leverancier zou deze plausibel kunnen implementeren.
- Kanalen, tools of functie-Plugins moeten deze kunnen gebruiken zonder zich om de leverancier te bekommeren.
- Core moet eigenaar zijn van fallback-, beleid-, configuratie- of aflevergedrag.
De standaardvolgorde
- Definieer het getypeerde corecontract.
- Voeg Plugin-registratie voor dat contract toe.
- Voeg een gedeelde runtime-helper toe.
- Sluit één echte leveranciers-Plugin aan als bewijs.
- Verplaats functie-/kanaalgebruikers naar de runtime-helper.
- Voeg contracttests toe.
- Documenteer de operatorgerichte configuratie en het eigendomsmodel.
Wat waar hoort
Core:- Aanvraag-/antwoordtypen.
- Providerregister + resolutie.
- Fallbackgedrag.
- Configuratieschema met doorgegeven
title/description-docsmetadata op geneste object-, wildcard-, array-item- en compositieknooppunten. - Runtime-helperinterface.
- Leveranciers-API-aanroepen.
- Leveranciersauthenticatieafhandeling.
- Leveranciersspecifieke aanvraagnormalisatie.
- Registratie van de capaciteitsimplementatie.
- Roept
api.runtime.*of de bijbehorendeplugin-sdk/*-runtime-helper aan. - Roept nooit direct een leveranciersimplementatie aan.
Provider- en harness-raakvlakken
Gebruik provider-hooks wanneer het gedrag bij het modelprovidercontract hoort in plaats van bij de generieke agentlus. Voorbeelden zijn providerspecifieke aanvraagparameters na transportselectie, auth-profielvoorkeur, prompt-overlays en vervolgfallbackroutering na model-/profielfailover. Gebruik agent-harness-hooks wanneer het gedrag hoort bij de runtime die een beurt uitvoert. Harnassen kunnen expliciete protocoluitkomsten classificeren, zoals lege uitvoer, redenering zonder zichtbare uitvoer of een gestructureerd plan zonder eindantwoord, zodat het buitenste modelfallbackbeleid de beslissing voor een nieuwe poging kan nemen. Houd beide raakvlakken smal:- Core is eigenaar van het retry-/fallbackbeleid.
- Provider-Plugins zijn eigenaar van providerspecifieke aanvraag-/auth-/routeringshints.
- Harness-Plugins zijn eigenaar van runtimespecifieke pogingclassificatie.
- Plugins van derden retourneren hints, geen directe mutaties van corestatus.
Bestandschecklist
Verwacht voor een nieuwe capaciteit deze gebieden aan te raken: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- Een of meer gebundelde Plugin-pakketten.
- Configuratie, docs, tests.
Uitgewerkt voorbeeld: afbeeldingengeneratie
Afbeeldingengeneratie volgt de standaardvorm:- Core definieert
ImageGenerationProvider. - Core stelt
registerImageGenerationProvider(...)beschikbaar. - Core stelt
runtime.imageGeneration.generate(...)beschikbaar. - De
openai-,google-,fal- enminimax-Plugins registreren door leveranciers ondersteunde implementaties. - Toekomstige leveranciers registreren hetzelfde contract zonder kanalen/tools te wijzigen.
agents.defaults.imageModelanalyseert afbeeldingen.agents.defaults.imageGenerationModelgenereert afbeeldingen.
Embeddingproviders
GebruikembeddingProviders voor herbruikbare providers voor vectorembeddings. Dit contract
is bewust breder dan geheugen: tools, zoeken, retrieval, importeurs of
toekomstige functie-Plugins kunnen embeddings gebruiken zonder afhankelijk te zijn van de geheugenengine.
Geheugenzoekopdrachten kunnen generieke embeddingProviders gebruiken. Het oudere
memoryEmbeddingProviders-contract is verouderde compatibiliteit terwijl bestaande
geheugenspecifieke providers migreren; nieuwe herbruikbare embeddingproviders moeten
embeddingProviders gebruiken.
Reviewchecklist
Controleer vóór verzending van een nieuwe capaciteit:- Geen kanaal/tool importeert leverancierscode direct.
- De runtime-helper is het gedeelde pad.
- Minstens één contracttest verifieert gebundeld eigenaarschap.
- Configuratiedocs noemen de nieuwe model-/configuratiesleutel.
- Plugin-docs leggen de eigendomsgrens uit.
Gerelateerd
- Plugin-internals — capaciteitsmodel, eigenaarschap, laadpijplijn, runtime-helpers.
- Plugins bouwen — tutorial voor de eerste Plugin.
- SDK-overzicht — importmap en API-referentie voor registratie.
- Skills maken — bijbehorend bijdragersoppervlak.