Plugin maintainer reference
Plugin рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛
рдпрд╣ OpenClaw Plugin рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЧрд╣рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕рдВрджрд░реНрдн рд╣реИред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЧрд╛рдЗрдб рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЗрдВрджреНрд░рд┐рдд рдкреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред
Plugin рдЬреЛрдбрд╝рдиреЗ, рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд╛рдЗрдбред
рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛-Plugin рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ред
рдПрдХ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдЪреИрдирд▓ Plugin рдмрдирд╛рдПрдВред
рдПрдХ рдореЙрдбрд▓ provider Plugin рдмрдирд╛рдПрдВред
рдЗрдореНрдкреЛрд░реНрдЯ рдореИрдк рдФрд░ registration API рд╕рдВрджрд░реНрднред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖рдорддрд╛ рдореЙрдбрд▓
рдХреНрд╖рдорддрд╛рдПрдВ OpenClaw рдХреЗ рднреАрддрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ native plugin рдореЙрдбрд▓ рд╣реИрдВред рд╣рд░ native OpenClaw Plugin рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП register рдХрд░рддрд╛ рд╣реИ:
| рдХреНрд╖рдорддрд╛ | Registration рд╡рд┐рдзрд┐ | рдЙрджрд╛рд╣рд░рдг Plugin |
|---|---|---|
| рдЯреЗрдХреНрд╕реНрдЯ inference | api.registerProvider(...) |
openai, anthropic |
| CLI inference backend | api.registerCliBackend(...) |
openai, anthropic |
| Embeddings | api.registerEmbeddingProvider(...) |
Provider-рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ vector Plugin |
| Speech | api.registerSpeechProvider(...) |
elevenlabs, microsoft |
| Realtime transcription | api.registerRealtimeTranscriptionProvider(...) |
openai |
| Realtime voice | api.registerRealtimeVoiceProvider(...) |
openai |
| Media understanding | api.registerMediaUnderstandingProvider(...) |
openai, google |
| Transcripts source | api.registerTranscriptSourceProvider(...) |
discord |
| Image generation | api.registerImageGenerationProvider(...) |
openai, google, fal, minimax |
| Music generation | api.registerMusicGenerationProvider(...) |
google, minimax |
| Video generation | api.registerVideoGenerationProvider(...) |
qwen |
| Web fetch | api.registerWebFetchProvider(...) |
firecrawl |
| Web search | api.registerWebSearchProvider(...) |
google |
| Channel / messaging | api.registerChannel(...) |
msteams, matrix |
| Gateway discovery | api.registerGatewayDiscoveryService(...) |
bonjour |
рдмрд╛рд╣рд░реА compatibility рджреГрд╖реНрдЯрд┐рдХреЛрдг
Capability рдореЙрдбрд▓ core рдореЗрдВ landed рд╣реИ рдФрд░ рдЖрдЬ bundled/native Plugin рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди external Plugin compatibility рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА "рдпрд╣ export рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП frozen рд╣реИ" рд╕реЗ рдЕрдзрд┐рдХ рдХрдбрд╝реА рдХрд╕реМрдЯреА рдЪрд╛рд╣рд┐рдПред
| Plugin рд╕реНрдерд┐рддрд┐ | рдорд╛рд░реНрдЧрджрд░реНрд╢рди |
|---|---|
| рдореМрдЬреВрджрд╛ external Plugin | hook-based integrations рдХреЛ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рдиреЗ рджреЗрдВ; рдпрд╣реА compatibility baseline рд╣реИред |
| рдирдП bundled/native Plugin | vendor-specific reach-ins рдпрд╛ рдирдП hook-only designs рдХреЗ рдмрдЬрд╛рдп explicit capability registration рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред |
| Capability registration рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЗ external Plugin | рдЕрдиреБрдорддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди capability-specific helper surfaces рдХреЛ evolving рдорд╛рдиреЗрдВ рдЬрдм рддрдХ docs рдЙрдиреНрд╣реЗрдВ stable рди рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред |
Capability registration рдЗрдЪреНрдЫрд┐рдд рджрд┐рд╢рд╛ рд╣реИред рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди external Plugin рдХреЗ рд▓рд┐рдП Legacy hooks рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд no-breakage path рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред Exported helper subpaths рд╕рднреА рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ тАФ incidental helper exports рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрдХреАрд░реНрдг documented contracts рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред
Plugin shapes
OpenClaw рд╣рд░ loaded Plugin рдХреЛ рдЙрд╕рдХреЗ actual registration behavior рдХреЗ рдЖрдзрд╛рд░ рдкрд░ shape рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ (рд╕рд┐рд░реНрдл static metadata рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд╣реАрдВ):
plain-capability
рдареАрдХ рдПрдХ capability type register рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП mistral рдЬреИрд╕рд╛ provider-only Plugin)ред
hybrid-capability
рдХрдИ capability types register рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП openai text inference, speech, media understanding, рдФрд░ image generation рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ)ред
hook-only
рдХреЗрд╡рд▓ hooks (typed рдпрд╛ custom) register рдХрд░рддрд╛ рд╣реИ, рдХреЛрдИ capabilities, tools, commands, рдпрд╛ services рдирд╣реАрдВред
non-capability
tools, commands, services, рдпрд╛ routes register рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ capabilities рдирд╣реАрдВред
рдХрд┐рд╕реА Plugin рдХреА shape рдФрд░ capability breakdown рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП openclaw plugins inspect <id> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП CLI рд╕рдВрджрд░реНрдн рджреЗрдЦреЗрдВред
Legacy hooks
before_agent_start hook hook-only Plugin рдХреЗ рд▓рд┐рдП compatibility path рдХреЗ рд░реВрдк рдореЗрдВ supported рд░рд╣рддрд╛ рд╣реИред Legacy real-world Plugin рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
рджрд┐рд╢рд╛:
- рдЗрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рдиреЗ рджреЗрдВ
- рдЗрд╕реЗ legacy рдХреЗ рд░реВрдк рдореЗрдВ document рдХрд░реЗрдВ
- model/provider override work рдХреЗ рд▓рд┐рдП
before_model_resolveрдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ - prompt mutation work рдХреЗ рд▓рд┐рдП
before_prompt_buildрдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ - рдХреЗрд╡рд▓ рддрдм рд╣рдЯрд╛рдПрдВ рдЬрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдШрдЯ рдЬрд╛рдП рдФрд░ fixture coverage migration safety рд╕рд╛рдмрд┐рдд рдХрд░реЗ
Compatibility signals
рдЬрдм рдЖрдк openclaw doctor рдпрд╛ openclaw plugins inspect <id> рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ label рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
| Signal | рдЕрд░реНрде |
|---|---|
| config valid | Config рдареАрдХ рд╕реЗ parse рд╣реЛрддрд╛ рд╣реИ рдФрд░ Plugin resolve рд╣реЛрддреЗ рд╣реИрдВ |
| compatibility advisory | Plugin supported-but-older pattern рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ hook-only) |
| legacy warning | Plugin before_agent_start рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ deprecated рд╣реИ |
| hard error | Config invalid рд╣реИ рдпрд╛ Plugin load рд╣реЛрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ |
рди рддреЛ hook-only рдФрд░ рди рд╣реА before_agent_start рдЖрдЬ рдЖрдкрдХреЗ Plugin рдХреЛ рддреЛрдбрд╝реЗрдЧрд╛: hook-only advisory рд╣реИ, рдФрд░ before_agent_start рдХреЗрд╡рд▓ warning trigger рдХрд░рддрд╛ рд╣реИред рдпреЗ signals openclaw status --all рдФрд░ openclaw plugins doctor рдореЗрдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
Architecture рдЕрд╡рд▓реЛрдХрди
OpenClaw рдХреЗ Plugin рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪрд╛рд░ layers рд╣реИрдВ:
Manifest + discovery
OpenClaw configured paths, workspace roots, global Plugin roots, рдФрд░ bundled Plugin рд╕реЗ candidate Plugin рдЦреЛрдЬрддрд╛ рд╣реИред Discovery рдкрд╣рд▓реЗ native openclaw.plugin.json manifests рдФрд░ supported bundle manifests рдкрдврд╝рддрд╛ рд╣реИред
Enablement + validation
Core рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ discovered Plugin enabled, disabled, blocked рд╣реИ рдпрд╛ memory рдЬреИрд╕реЗ exclusive slot рдХреЗ рд▓рд┐рдП selected рд╣реИред
Runtime loading
Native OpenClaw Plugin in-process load рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ capabilities рдХреЛ central registry рдореЗрдВ register рдХрд░рддреЗ рд╣реИрдВред Packaged JavaScript native require рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ load рд╣реЛрддрд╛ рд╣реИ; third-party local source TypeScript emergency Jiti fallback рд╣реИред Compatible bundles runtime code import рдХрд┐рдП рдмрд┐рдирд╛ registry records рдореЗрдВ normalized рд╣реЛрддреЗ рд╣реИрдВред
Surface consumption
OpenClaw рдХрд╛ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕рд╛ tools, channels, provider setup, hooks, HTTP routes, CLI commands, рдФрд░ services expose рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП registry рдкрдврд╝рддрд╛ рд╣реИред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Plugin CLI рдХреЗ рд▓рд┐рдП, root command discovery рджреЛ phases рдореЗрдВ split рд╣реИ:
- parse-time metadata
registerCli(..., { descriptors: [...] })рд╕реЗ рдЖрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ Plugin CLI module lazy рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдФрд░ first invocation рдкрд░ register рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЗрд╕рд╕реЗ Plugin-owned CLI code Plugin рдХреЗ рднреАрддрд░ рд░рд╣рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ OpenClaw parsing рд╕реЗ рдкрд╣рд▓реЗ рднреА root command names reserve рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдорд╣рддреНрд╡рдкреВрд░реНрдг design boundary:
- manifest/config validation рдХреЛ Plugin code execute рдХрд┐рдП рдмрд┐рдирд╛ manifest/schema metadata рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- native capability discovery trusted Plugin entry code load рдХрд░рдХреЗ non-activating registry snapshot рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ
- native runtime behavior Plugin module рдХреЗ
register(api)path рд╕реЗ рдЖрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВapi.registrationMode === "full"
рдпрд╣ split OpenClaw рдХреЛ full runtime active рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ config validate рдХрд░рдиреЗ, missing/disabled Plugin рд╕рдордЭрд╛рдиреЗ, рдФрд░ UI/schema hints рдмрдирд╛рдиреЗ рджреЗрддрд╛ рд╣реИред
Plugin metadata snapshot рдФрд░ lookup table
Gateway startup рдореМрдЬреВрджрд╛ config snapshot рдХреЗ рд▓рд┐рдП рдПрдХ PluginMetadataSnapshot рдмрдирд╛рддрд╛ рд╣реИред Snapshot metadata-only рд╣реИ: рдпрд╣ installed Plugin index, manifest registry, manifest diagnostics, owner maps, Plugin id normalizer, рдФрд░ manifest records store рдХрд░рддрд╛ рд╣реИред рдпрд╣ loaded Plugin modules, provider SDKs, package contents, рдпрд╛ runtime exports рдирд╣реАрдВ рд░рдЦрддрд╛ред
Plugin-aware config validation, startup auto-enable, рдФрд░ Gateway Plugin bootstrap рдЙрд╕ snapshot рдХреЛ consume рдХрд░рддреЗ рд╣реИрдВ, рдмрдЬрд╛рдп manifest/index metadata рдХреЛ independently rebuild рдХрд░рдиреЗ рдХреЗред PluginLookUpTable рдЙрд╕реА snapshot рд╕реЗ derive рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ runtime config рдХреЗ рд▓рд┐рдП startup Plugin plan рдЬреЛрдбрд╝рддрд╛ рд╣реИред
Startup рдХреЗ рдмрд╛рдж, Gateway рдореМрдЬреВрджрд╛ metadata snapshot рдХреЛ replaceable runtime product рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред Repeated runtime provider discovery рд╣рд░ provider-catalog pass рдХреЗ рд▓рд┐рдП installed index рдФрд░ manifest registry reconstruct рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд╣ snapshot borrow рдХрд░ рд╕рдХрддрд╛ рд╣реИред Gateway shutdown, config/Plugin inventory changes, рдФрд░ installed index writes рдкрд░ snapshot cleared рдпрд╛ replaced рд╣реЛрддрд╛ рд╣реИ; compatible current snapshot рдореМрдЬреВрдж рди рд╣реЛрдиреЗ рдкрд░ callers cold manifest/index path рдкрд░ fall back рдХрд░рддреЗ рд╣реИрдВред Compatibility checks рдореЗрдВ plugins.load.paths рдФрд░ default agent workspace рдЬреИрд╕реЗ Plugin discovery roots рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ workspace Plugin metadata scope рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
Snapshot рдФрд░ lookup table repeated startup decisions рдХреЛ fast path рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ:
- channel ownership
- deferred channel startup
- startup Plugin ids
- provider рдФрд░ CLI backend ownership
- setup provider, command alias, model catalog provider, рдФрд░ manifest contract ownership
- Plugin config schema рдФрд░ channel config schema validation
- startup auto-enable decisions
Safety boundary snapshot replacement рд╣реИ, mutation рдирд╣реАрдВред Config, Plugin inventory, install records, рдпрд╛ persisted index policy рдмрджрд▓рдиреЗ рдкрд░ snapshot rebuild рдХрд░реЗрдВред рдЗрд╕реЗ broad mutable global registry рдХреЗ рд░реВрдк рдореЗрдВ рди рдорд╛рдиреЗрдВ, рдФрд░ unbounded historical snapshots рди рд░рдЦреЗрдВред Runtime Plugin loading metadata snapshots рд╕реЗ рдЕрд▓рдЧ рд░рд╣рддрд╛ рд╣реИ рддрд╛рдХрд┐ stale runtime state metadata cache рдХреЗ рдкреАрдЫреЗ hidden рди рд╣реЛ рд╕рдХреЗред
Cache rule Plugin architecture internals рдореЗрдВ documented рд╣реИ: manifest рдФрд░ discovery metadata fresh рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХреЛрдИ caller рдореМрдЬреВрджрд╛ flow рдХреЗ рд▓рд┐рдП explicit snapshot, lookup table, рдпрд╛ manifest registry рди рд░рдЦрддрд╛ рд╣реЛред Hidden metadata caches рдФрд░ wall-clock TTLs Plugin loading рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ runtime loader, module, рдФрд░ dependency-artifact caches code рдпрд╛ installed artifacts рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ loaded рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж persist рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред
рдХреБрдЫ cold-path callers рдЕрднреА рднреА Gateway PluginLookUpTable рдкрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп persisted installed Plugin index рд╕реЗ рд╕реАрдзреЗ manifest registries reconstruct рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╡рд╣ path registry рдХреЛ demand рдкрд░ reconstruct рдХрд░рддрд╛ рд╣реИ; рдЬрдм caller рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ current lookup table рдпрд╛ explicit manifest registry рд╣реЛ, рддреЛ runtime flows рдореЗрдВ рдЙрд╕реЗ pass рдХрд░рдирд╛ prefer рдХрд░реЗрдВред
Activation planning
Activation planning control plane рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред Callers broad runtime registries load рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА concrete command, provider, channel, route, agent harness, рдпрд╛ capability рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ Plugin relevant рд╣реИрдВред
Planner рдореМрдЬреВрджрд╛ manifest behavior рдХреЛ compatible рд░рдЦрддрд╛ рд╣реИ:
activation.*рдлрд╝реАрд▓реНрдб рд╕реНрдкрд╖реНрдЯ рдкреНрд▓рд╛рдирд░ рд╕рдВрдХреЗрдд рд╣реИрдВproviders,channels,commandAliases,setup.providers,contracts.tools, рдФрд░ hooks рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдлрд╝реЙрд▓рдмреИрдХ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ- рдХреЗрд╡рд▓-ids рдкреНрд▓рд╛рдирд░ API рдореМрдЬреВрджрд╛ рдХреЙрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд░рд╣рддреА рд╣реИ
- рдкреНрд▓рд╛рди API рдХрд╛рд░рдг рд▓реЗрдмрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбрд╛рдпрдЧреНрдиреЙрд╕реНрдЯрд┐рдХреНрд╕ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдлрд╝реЙрд▓рдмреИрдХ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХреЗрдВ
рдЪреИрдирд▓ Plugin рдФрд░ рд╕рд╛рдЭрд╛ message рдЯреВрд▓
рдЪреИрдирд▓ Plugin рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЪреИрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ send/edit/react рдЯреВрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред OpenClaw core рдореЗрдВ рдПрдХ рд╕рд╛рдЭрд╛ message рдЯреВрд▓ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЪреИрдирд▓ Plugin рдЙрд╕рдХреЗ рдкреАрдЫреЗ рдЪреИрдирд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦреЛрдЬ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕реНрд╡рд╛рдореА рд╣реЛрддреЗ рд╣реИрдВред
рд╡рд░реНрддрдорд╛рди рд╕реАрдорд╛ рдпрд╣ рд╣реИ:
- core рд╕рд╛рдЭрд╛
messageрдЯреВрд▓ рд╣реЛрд╕реНрдЯ, prompt wiring, session/thread bookkeeping, рдФрд░ execution dispatch рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ - рдЪреИрдирд▓ Plugin scoped action discovery, capability discovery, рдФрд░ рдХрд┐рд╕реА рднреА рдЪреИрдирд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ schema fragments рдХреЗ рд╕реНрд╡рд╛рдореА рд╣реИрдВ
- рдЪреИрдирд▓ Plugin рдкреНрд░рджрд╛рддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ session conversation grammar рдХреЗ рд╕реНрд╡рд╛рдореА рд╣реИрдВ, рдЬреИрд╕реЗ conversation ids thread ids рдХреЛ рдХреИрд╕реЗ encode рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ parent conversations рд╕реЗ рдХреИрд╕реЗ inherit рдХрд░рддреЗ рд╣реИрдВ
- рдЪреИрдирд▓ Plugin рдЕрдкрдиреЗ action adapter рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рдЪреИрдирд▓ Plugin рдХреЗ рд▓рд┐рдП, SDK surface ChannelMessageActionAdapter.describeMessageTool(...) рд╣реИред рд╡рд╣ рдПрдХреАрдХреГрдд discovery call Plugin рдХреЛ рдЕрдкрдиреА visible actions, capabilities, рдФрд░ schema contributions рд╕рд╛рде рдореЗрдВ рд▓реМрдЯрд╛рдиреЗ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд╣рд┐рд╕реНрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рд╢рд╛ рдореЗрдВ рди рдЬрд╛рдПрдВред
рдЬрдм рдХреЛрдИ рдЪреИрдирд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ message-tool param рдХрд┐рд╕реА рд╕реНрдерд╛рдиреАрдп path рдпрд╛ remote media URL рдЬреИрд╕реЗ media source рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рддреЛ Plugin рдХреЛ describeMessageTool(...) рд╕реЗ mediaSourceParams рднреА рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Core рдЙрд╕ рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ sandbox path normalization рдФрд░ outbound media-access hints рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ Plugin-owned param рдирд╛рдореЛрдВ рдХреЛ hardcode рдХрд┐рдПред рд╡рд╣рд╛рдВ action-scoped maps рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ, рди рдХрд┐ рдПрдХ channel-wide flat list, рддрд╛рдХрд┐ profile-only media param рдЕрд╕рдВрдмрдВрдзрд┐рдд actions рдЬреИрд╕реЗ send рдкрд░ normalize рди рд╣реЛред
Core рдЙрд╕ discovery step рдореЗрдВ runtime scope рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
accountIdcurrentChannelIdcurrentThreadTscurrentMessageIdsessionKeysessionIdagentId- рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп inbound
requesterSenderId
рдпрд╣ context-sensitive Plugin рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреЛрдИ рдЪреИрдирд▓ active account, current room/thread/message, рдпрд╛ trusted requester identity рдХреЗ рдЖрдзрд╛рд░ рдкрд░ message actions рдЫрд┐рдкрд╛ рдпрд╛ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ core message рдЯреВрд▓ рдореЗрдВ рдЪреИрдирд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ branches рдХреЛ hardcode рдХрд┐рдПред
рдЗрд╕реАрд▓рд┐рдП embedded-runner routing рдмрджрд▓рд╛рд╡ рдЕрднреА рднреА Plugin рдХрд╛рд░реНрдп рд╣реИрдВ: runner рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ рдХрд┐ рд╡рд╣ current chat/session identity рдХреЛ Plugin discovery boundary рдореЗрдВ forward рдХрд░реЗ рддрд╛рдХрд┐ рд╕рд╛рдЭрд╛ message рдЯреВрд▓ рд╡рд░реНрддрдорд╛рди turn рдХреЗ рд▓рд┐рдП рд╕рд╣реА channel-owned surface expose рдХрд░реЗред
Channel-owned execution helpers рдХреЗ рд▓рд┐рдП, bundled Plugin рдХреЛ execution runtime рдЕрдкрдиреЗ extension modules рдХреЗ рдЕрдВрджрд░ рд╣реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред Core рдЕрдм src/agents/tools рдХреЗ рдЕрдВрддрд░реНрдЧрдд Discord, Slack, Telegram, рдпрд╛ WhatsApp message-action runtimes рдХрд╛ рд╕реНрд╡рд╛рдореА рдирд╣реАрдВ рд╣реИред рд╣рдо рдЕрд▓рдЧ plugin-sdk/*-action-runtime subpaths publish рдирд╣реАрдВ рдХрд░рддреЗ, рдФрд░ bundled Plugin рдХреЛ рдЕрдкрдиреЗ extension-owned modules рд╕реЗ рдЕрдкрдирд╛ local runtime code рд╕реАрдзреЗ import рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣реА рд╕реАрдорд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ provider-named SDK seams рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ: core рдХреЛ Slack, Discord, Signal, WhatsApp, рдпрд╛ рд╕рдорд╛рди extensions рдХреЗ рд▓рд┐рдП channel-specific convenience barrels import рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ core рдХреЛ рдХрд┐рд╕реА behavior рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╛ рддреЛ bundled Plugin рдХреЗ рдЕрдкрдиреЗ api.ts / runtime-api.ts barrel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ shared SDK рдореЗрдВ рдПрдХ рд╕рдВрдХреАрд░реНрдг generic capability рдореЗрдВ promote рдХрд░реЗрдВред
Bundled Plugin рднреА рдпрд╣реА рдирд┐рдпрдо рдЕрдкрдирд╛рддреЗ рд╣реИрдВред рдХрд┐рд╕реА bundled Plugin рдХреЗ runtime-api.ts рдХреЛ рдЕрдкрдиреЗ рд╣реА branded openclaw/plugin-sdk/<plugin-id> facade рдХреЛ re-export рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ branded facades external Plugin рдФрд░ рдкреБрд░рд╛рдиреЗ consumers рдХреЗ рд▓рд┐рдП compatibility shims рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди bundled Plugin рдХреЛ local exports рдФрд░ openclaw/plugin-sdk/channel-policy, openclaw/plugin-sdk/runtime-store, рдпрд╛ openclaw/plugin-sdk/webhook-ingress рдЬреИрд╕реЗ рд╕рдВрдХреАрд░реНрдг generic SDK subpaths рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирдпрд╛ code plugin-id-specific SDK facades рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ external ecosystem рдХреА compatibility boundary рдЗрд╕рдХреА рдорд╛рдВрдЧ рди рдХрд░реЗред
Polls рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рджреЛ execution paths рд╣реИрдВ:
outbound.sendPollрдЙрди рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ baseline рд╣реИ рдЬреЛ common poll model рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВactions.handleAction("poll")channel-specific poll semantics рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд poll parameters рдХреЗ рд▓рд┐рдП preferred path рд╣реИ
Core рдЕрдм shared poll parsing рдХреЛ рддрдм рддрдХ defer рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ Plugin poll dispatch рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ decline рдирд╣реАрдВ рдХрд░ рджреЗрддрд╛, рддрд╛рдХрд┐ Plugin-owned poll handlers generic poll parser рд╕реЗ рдкрд╣рд▓реЗ blocked рд╣реБрдП рдмрд┐рдирд╛ channel-specific poll fields рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХреЗрдВред
рдкреВрд░рд╛ startup sequence рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП Plugin architecture internals рджреЗрдЦреЗрдВред
рдХреНрд╖рдорддрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЙрдбрд▓
OpenClaw native Plugin рдХреЛ рдХрд┐рд╕реА рдХрдВрдкрдиреА рдпрд╛ feature рдХреЗ рд▓рд┐рдП ownership boundary рдорд╛рдирддрд╛ рд╣реИ, рдЕрд╕рдВрдмрдВрдзрд┐рдд integrations рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдирд╣реАрдВред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ:
- company Plugin рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЙрд╕ рдХрдВрдкрдиреА рдХреЗ рд╕рднреА OpenClaw-facing surfaces рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- feature Plugin рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдкреВрд░реЗ feature surface рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- channels рдХреЛ provider behavior рдХреЛ ad hoc рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп shared core capabilities рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
Vendor multi-capability
openai text inference, speech, realtime voice, media understanding, рдФрд░ image generation рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИред google text inference рдХреЗ рд╕рд╛рде media understanding, image generation, рдФрд░ web search рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИред qwen text inference рдХреЗ рд╕рд╛рде media understanding рдФрд░ video generation рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИред
Vendor single-capability
elevenlabs рдФрд░ microsoft speech рдХреЗ рд╕реНрд╡рд╛рдореА рд╣реИрдВ; firecrawl web-fetch рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ; minimax / mistral / moonshot / zai media-understanding backends рдХреЗ рд╕реНрд╡рд╛рдореА рд╣реИрдВред
Feature plugin
voice-call call transport, tools, CLI, routes, рдФрд░ Twilio media-stream bridging рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ, рд▓реЗрдХрд┐рди vendor Plugin рдХреЛ рд╕реАрдзреЗ import рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп shared speech, realtime transcription, рдФрд░ realtime voice capabilities рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЗрдЪреНрдЫрд┐рдд рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдпрд╣ рд╣реИ:
- OpenAI рдПрдХ рд╣реА Plugin рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ text models, speech, images, рдФрд░ future video рддрдХ рдлреИрд▓рд╛ рд╣реЛ
- рджреВрд╕рд░рд╛ vendor рдЕрдкрдиреЗ surface area рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ
- channels рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реЛрддреА рдХрд┐ provider рдХрд╛ рд╕реНрд╡рд╛рдореА рдХреМрди-рд╕рд╛ vendor Plugin рд╣реИ; рд╡реЗ core рджреНрд╡рд╛рд░рд╛ expose рдХрд┐рдП рдЧрдП shared capability contract рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ:
- Plugin = ownership boundary
- capability = core contract рдЬрд┐рд╕реЗ рдХрдИ Plugin implement рдпрд╛ consume рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЗрд╕рд▓рд┐рдП рдпрджрд┐ OpenClaw video рдЬреИрд╕рд╛ рдирдпрд╛ domain рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдХрд┐рд╕ provider рдХреЛ video handling hardcode рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?" рдкрд╣рд▓рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ "core video capability contract рдХреНрдпрд╛ рд╣реИ?" рдЬрдм рд╡рд╣ contract рдореМрдЬреВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, vendor Plugin рдЙрд╕рдХреЗ рд╡рд┐рд░реБрджреНрдз register рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ channel/feature Plugin рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ capability рдЕрднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд╣реА рдХрджрдо рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд╣реИ:
рдХреНрд╖рдорддрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
рдЧрд╛рдпрдм capability рдХреЛ core рдореЗрдВ define рдХрд░реЗрдВред
SDK рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ expose рдХрд░реЗрдВ
рдЗрд╕реЗ plugin API/runtime рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ typed рддрд░реАрдХреЗ рд╕реЗ expose рдХрд░реЗрдВред
Consumers wire рдХрд░реЗрдВ
channels/features рдХреЛ рдЙрд╕ capability рдХреЗ рд╡рд┐рд░реБрджреНрдз wire рдХрд░реЗрдВред
Vendor implementations
vendor Plugin рдХреЛ implementations register рдХрд░рдиреЗ рджреЗрдВред
рдпрд╣ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ core behavior рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдПрдХ vendor рдпрд╛ one-off plugin-specific code path рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛред
рдХреНрд╖рдорддрд╛ layering
Code рдХрд╣рд╛рдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рддрдп рдХрд░рддреЗ рд╕рдордп рдЗрд╕ mental model рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
Core capability layer
рд╕рд╛рдЭрд╛ orchestration, policy, fallback, config merge rules, delivery semantics, рдФрд░ typed contractsред
Vendor plugin layer
Vendor-specific APIs, auth, model catalogs, speech synthesis, image generation, future video backends, usage endpointsред
Channel/feature plugin layer
Slack/Discord/voice-call/etc. integration рдЬреЛ core capabilities рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА surface рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, TTS рдпрд╣ shape рдЕрдкрдирд╛рддрд╛ рд╣реИ:
- core reply-time TTS policy, fallback order, prefs, рдФрд░ channel delivery рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ
openai,elevenlabs, рдФрд░microsoftsynthesis implementations рдХреЗ рд╕реНрд╡рд╛рдореА рд╣реИрдВvoice-calltelephony TTS runtime helper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
Future capabilities рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕реА pattern рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
Multi-capability company Plugin рдЙрджрд╛рд╣рд░рдг
Company Plugin рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ cohesive рдорд╣рд╕реВрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ OpenClaw рдХреЗ рдкрд╛рд╕ models, speech, realtime transcription, realtime voice, media understanding, image generation, video generation, web fetch, рдФрд░ web search рдХреЗ рд▓рд┐рдП shared contracts рд╣реИрдВ, рддреЛ рдХреЛрдИ vendor рдЕрдкрдиреЗ рд╕рднреА surfaces рдХрд╛ рд╕реНрд╡рд╛рдореА рдПрдХ рд╣реА рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
describeImageWithModel, transcribeOpenAiCompatibleAudio,} from "openclaw/plugin-sdk/media-understanding"; const plugin: OpenClawPluginDefinition = { id: "exampleai", name: "ExampleAI", register(api) { api.registerProvider({ id: "exampleai", // auth/model catalog/runtime hooks }); api.registerSpeechProvider({ id: "exampleai", // vendor speech config тАФ implement the SpeechProviderPlugin interface directly }); api.registerMediaUnderstandingProvider({ id: "exampleai", capabilities: ["image", "audio", "video"], async describeImage(req) { return describeImageWithModel({ provider: "exampleai", model: req.model, input: req.input, }); }, async transcribeAudio(req) { return transcribeOpenAiCompatibleAudio({ provider: "exampleai", model: req.model, input: req.input, }); }, }); api.registerWebSearchProvider( createPluginBackedWebSearchProvider({ id: "exampleai-search", // credential + fetch logic }), ); },}; export default plugin;рдорд╣рддреНрд╡ exact helper names рдХрд╛ рдирд╣реАрдВ рд╣реИред Shape рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ:
- рдПрдХ Plugin vendor surface рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ
- core рдлрд┐рд░ рднреА capability contracts рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ
- channels рдФрд░ feature Plugin
api.runtime.*helpers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, vendor code рдХрд╛ рдирд╣реАрдВ - contract tests assert рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Plugin рдиреЗ рд╡реЗ capabilities register рдХреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╡рд╣ рд╕реНрд╡рд╛рдореА рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ
рдХреНрд╖рдорддрд╛ рдЙрджрд╛рд╣рд░рдг: video understanding
OpenClaw рдкрд╣рд▓реЗ рд╕реЗ image/audio/video understanding рдХреЛ рдПрдХ рд╕рд╛рдЭрд╛ capability рдорд╛рдирддрд╛ рд╣реИред рд╡рд╣реА ownership model рд╡рд╣рд╛рдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ:
Core contract define рдХрд░рддрд╛ рд╣реИ
Core media-understanding contract define рдХрд░рддрд╛ рд╣реИред
Vendor Plugin register рдХрд░рддреЗ рд╣реИрдВ
Vendor Plugin рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ describeImage, transcribeAudio, рдФрд░ describeVideo register рдХрд░рддреЗ рд╣реИрдВред
Consumers shared behavior рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
Channels рдФрд░ feature Plugin vendor code рд╕реЗ рд╕реАрдзреЗ wire рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп shared core behavior рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ core рдореЗрдВ рдХрд┐рд╕реА рдПрдХ provider рдХреА video assumptions bake рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред Plugin vendor surface рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ; core capability contract рдФрд░ fallback behavior рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИред
Video generation рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕реА sequence рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: core typed capability contract рдФрд░ runtime helper рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ, рдФрд░ vendor Plugin рдЙрд╕рдХреЗ рд╡рд┐рд░реБрджреНрдз api.registerVideoGenerationProvider(...) implementations register рдХрд░рддреЗ рд╣реИрдВред
Concrete rollout checklist рдЪрд╛рд╣рд┐рдП? Capability Cookbook рджреЗрдЦреЗрдВред
Contracts рдФрд░ enforcement
Plugin API surface рдЬрд╛рдирдмреВрдЭрдХрд░ OpenClawPluginApi рдореЗрдВ typed рдФрд░ centralized рд╣реИред рд╡рд╣ contract supported registration points рдФрд░ runtime helpers define рдХрд░рддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдХреЛрдИ Plugin рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:
- Plugin authors рдХреЛ рдПрдХ stable internal standard рдорд┐рд▓рддрд╛ рд╣реИ
- core duplicate ownership рдХреЛ reject рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рджреЛ Plugin рдХрд╛ same provider id register рдХрд░рдирд╛
- startup malformed registration рдХреЗ рд▓рд┐рдП actionable diagnostics surface рдХрд░ рд╕рдХрддрд╛ рд╣реИ
- contract tests bundled-plugin ownership enforce рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ silent drift рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ
Enforcement рдХреА рджреЛ layers рд╣реИрдВ:
рд░рдирдЯрд╛рдЗрдо рдкрдВрдЬреАрдХрд░рдг рдкреНрд░рд╡рд░реНрддрди
Plugin рд░рдЬрд┐рд╕реНрдЯреНрд░реА Plugins рд▓реЛрдб рд╣реЛрддреЗ рд╕рдордп рдкрдВрдЬреАрдХрд░рдгреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг: рдбреБрдкреНрд▓реАрдХреЗрдЯ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ ids, рдбреБрдкреНрд▓реАрдХреЗрдЯ рд╕реНрдкреАрдЪ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ ids, рдФрд░ рд╡рд┐рдХреГрдд рдкрдВрдЬреАрдХрд░рдг рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрдЬрд╛рдп Plugin рдбрд╛рдпрдЧреНрдиреЙрд╕реНрдЯрд┐рдХреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред
рдЕрдиреБрдмрдВрдз рдкрд░реАрдХреНрд╖рдг
рдкрд░реАрдХреНрд╖рдг рд░рди рдХреЗ рджреМрд░рд╛рди рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП Plugins рдХреЛ рдЕрдиреБрдмрдВрдз рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпреЛрдВ рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ OpenClaw рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХреЗред рдЖрдЬ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕, рд╕реНрдкреАрдЪ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕, рд╡реЗрдм рд╕рд░реНрдЪ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕, рдФрд░ рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП рдкрдВрдЬреАрдХрд░рдг рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рднрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ OpenClaw рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ Plugin рдХрд┐рд╕ рд╕рддрд╣ рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрд░ рдФрд░ рдЪреИрдирд▓ рд╕рд╣рдЬрддрд╛ рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛ рдкрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдШреЛрд╖рд┐рдд, рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИред
рдЕрдиреБрдмрдВрдз рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдЕрдЪреНрдЫреЗ рдЕрдиреБрдмрдВрдз
- рдЯрд╛рдЗрдк рдХрд┐рдП рд╣реБрдП
- рдЫреЛрдЯреЗ
- рдХреНрд╖рдорддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ
- рдХреЛрд░ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ
- рдХрдИ Plugins рджреНрд╡рд╛рд░рд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп
- рдЪреИрдирд▓/рдлреАрдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╡реЗрдВрдбрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп
рдЦрд░рд╛рдм рдЕрдиреБрдмрдВрдз
- рдХреЛрд░ рдореЗрдВ рдЫрд┐рдкреА рд╡реЗрдВрдбрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреАрддрд┐
- рдПрдХрдмрд╛рд░рдЧреА Plugin рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдЬреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ
- рдЪреИрдирд▓ рдХреЛрдб рдХрд╛ рд╕реАрдзреЗ рдХрд┐рд╕реА рд╡реЗрдВрдбрд░ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдкрд╣реБрдВрдЪрдирд╛
- рддрджрд░реНрде рд░рдирдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ
OpenClawPluginApiрдпрд╛api.runtimeрдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ
рд╕рдВрджреЗрд╣ рд╣реЛрдиреЗ рдкрд░, рдЕрдореВрд░реНрддрди рд╕реНрддрд░ рдмрдврд╝рд╛рдПрдБ: рдкрд╣рд▓реЗ рдХреНрд╖рдорддрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ Plugins рдХреЛ рдЙрд╕рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░рдиреЗ рджреЗрдВред
рдирд┐рд╖реНрдкрд╛рджрди рдореЙрдбрд▓
рдиреЗрдЯрд┐рд╡ OpenClaw Plugins Gateway рдХреЗ рд╕рд╛рде рдЗрди-рдкреНрд░реЛрд╕реЗрд╕ рдЪрд▓рддреЗ рд╣реИрдВред рд╡реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕реНрдб рдирд╣реАрдВ рд╣реЛрддреЗред рд▓реЛрдб рдХрд┐рдП рдЧрдП рдиреЗрдЯрд┐рд╡ Plugin рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛-рд╕реНрддрд░реАрдп рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реАрдорд╛ рдХреЛрд░ рдХреЛрдб рдЬреИрд╕реА рд╣реА рд╣реЛрддреА рд╣реИред
рд╕рдВрдЧрдд рдмрдВрдбрд▓ рдбрд┐рдлреЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ OpenClaw рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛/рдХрдВрдЯреЗрдВрдЯ рдкреИрдХ рдорд╛рдирддрд╛ рд╣реИред рдореМрдЬреВрджрд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЕрд░реНрде рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП Skills рд╣реИред
рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП Plugins рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐-рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯ install/load рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡рд░реНрдХрд╕реНрдкреЗрд╕ Plugins рдХреЛ рд╡рд┐рдХрд╛рд╕-рд╕рдордп рдХрд╛ рдХреЛрдб рдорд╛рдиреЗрдВ, рдЙрддреНрдкрд╛рджрди рдбрд┐рдлреЙрд▓реНрдЯ рдирд╣реАрдВред
рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдкреИрдХреЗрдЬ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, Plugin id рдХреЛ npm рдирд╛рдо рдореЗрдВ рдПрдВрдХрд░ рд░рдЦреЗрдВ: рдбрд┐рдлреЙрд▓реНрдЯ рд░реВрдк рд╕реЗ @openclaw/<id>, рдпрд╛ рд╕реНрд╡реАрдХреГрдд рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ suffix рдЬреИрд╕реЗ -provider, -plugin, -speech, -sandbox, рдпрд╛ -media-understanding рдЬрдм рдкреИрдХреЗрдЬ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрдХреАрд░реНрдг Plugin рднреВрдорд┐рдХрд╛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд░реНрдпрд╛рдд рд╕реАрдорд╛
OpenClaw рдХреНрд╖рдорддрд╛рдПрдБ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВред
рдХреНрд╖рдорддрд╛ рдкрдВрдЬреАрдХрд░рдг рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдЦреЗрдВред рдЧреИрд░-рдЕрдиреБрдмрдВрдз helper exports рдХреЛ рдХрдо рдХрд░реЗрдВ:
- рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП Plugin-рд╡рд┐рд╢рд┐рд╖реНрдЯ helper subpaths
- рд░рдирдЯрд╛рдЗрдо plumbing subpaths рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИрдВ
- рд╡реЗрдВрдбрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛ helpers
- setup/onboarding helpers рдЬреЛ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рд╡рд┐рд╡рд░рдг рд╣реИрдВ
рдЖрд░рдХреНрд╖рд┐рдд рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП Plugin helper subpaths рдХреЛ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП SDK export map рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрд╡рд╛рдореА-рд╡рд┐рд╢рд┐рд╖реНрдЯ helpers рдХреЛ рд╕реНрд╡рд╛рдореА Plugin package рдХреЗ рдЕрдВрджрд░ рд░рдЦреЗрдВ; рдХреЗрд╡рд▓ рдкреБрди: рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп host рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ generic SDK рдЕрдиреБрдмрдВрдзреЛрдВ рдЬреИрд╕реЗ plugin-sdk/gateway-runtime, plugin-sdk/security-runtime, рдФрд░ plugin-sdk/plugin-config-runtime рдореЗрдВ promote рдХрд░реЗрдВред
рдЖрдВрддрд░рд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рд╕рдВрджрд░реНрдн
рд▓реЛрдб pipeline, рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЙрдбрд▓, рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд░рдирдЯрд╛рдЗрдо hooks, Gateway HTTP routes, message tool schemas, channel target resolution, provider catalogs, context engine plugins, рдФрд░ рдирдИ рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЧрд╛рдЗрдб рдХреЗ рд▓рд┐рдП, Plugin architecture internals рджреЗрдЦреЗрдВред