Plugin-System
Verantwortung
Plugins sind das Erweiterungsskelett von Hermes: Provider-Profile, Plattform-Adapter, Context-Engine, Cron-Provider, Memory-Backends, Browser, Bild-/Video-Generierung – alles wird über den Plugin-Mechanismus angebunden. plugins/ stellt PluginContext (Registrierungseinstieg) + Hilfsfunktionen; jedes Plugin-Unterverzeichnis ist domänen-lokal gekapselt. Es arbeitet mit ToolRegistry/PlatformRegistry zusammen: Das Plugin «deklariert und registriert» nur, die Registry ist zuständig für «Lookup und Dispatch».
Schlüsseldateien
plugins/__init__.py—PluginContext, Registrierungseingänge (register_platform,register_providerusw.)plugin_utils.py— plugin-geteilte Hilfsfunktionenmodel-providers/— LLM-Provider-Profile (siehe Providers)platforms/— Telegram-/Discord-/Slack-Adapter (siehe Plattform-Adapter)context_engine/— Kontext-Engine-Erweiterungencron_providers/— Cron-Scheduler-Backendsmemory/— Memory-Backendsbrowser//web/— Browser- und Web-Fähigkeitenimage_gen//video_gen/— multimodale Generierungobservability//security-guidance/— Observability und Sicherheit
Datenfluss
- Beim Start löst
init_agent(agent/agent_init.py:276) die Plugin-Discovery aus. - Jedes Plugin-Unterverzeichnis wird importiert; der modulweite Code ruft die Registrierungsmethoden von
PluginContextauf:- model-provider →
register_provider:53 - platform →
platform_registry.register:231 - tool →
registry.register:365(über Namespace-Strategie)
- model-provider →
- Die Registrys (Singletons) werden zur Abfrage-Wahrheit; Hauptschleife und Gateway lesen nur aus ihnen und hängen nicht direkt an konkreten Plugins.
- Plugins sind hot-swapable: Entfernen läuft über
unregister; die Registry behandelt Priorität und Überschreibung.
Zusammenfassung
Plugin = «Unterverzeichnis + Registrierung». Alle querschnittlichen Fähigkeiten (Provider, Plattform, Werkzeug, Memory, Cron, Multimodal) laufen über dasselbe Registrierungsskelett, wodurch die Kernschleife stabil bleibt. Eine neue Fähigkeit = neues Plugin-Unterverzeichnis plus Registrierung, ohne Eingriff in den Agent-Stamm.