插件系统
源码版本v2026.7.20
职责
插件是 Hermes 的扩展骨架:provider profile、平台适配器、context engine、cron provider、记忆后端、浏览器、图像/视频生成……都通过插件机制接入。plugins/ 提供 PluginContext(注册入口)+ 工具函数,各插件子目录按领域自包含。它和 ToolRegistry/PlatformRegistry 协同:插件只负责「声明并注册」,注册表负责「查询与调度」。
关键文件
plugins/__init__.py—PluginContext、注册入口(register_platform、register_provider等)plugin_utils.py— 插件共用工具函数model-providers/— LLM provider profile(见 Providers)platforms/— Telegram/Discord/Slack 等平台适配器(见平台适配器)context_engine/— 上下文引擎扩展cron_providers/— cron 调度后端memory/— 记忆后端browser//web/— 浏览器与 Web 能力image_gen//video_gen/— 多模态生成observability//security-guidance/— 可观测与安全
数据流
- 启动期
init_agent(agent/agent_init.py:276)触发插件发现。 - 每个插件子目录被导入,模块级代码调用
PluginContext的注册方法:- model-provider →
register_provider:53 - platform →
platform_registry.register:231 - 工具 →
registry.register:365(经命名空间策略)
- model-provider →
- 注册表(单例)成为查询真相,主循环与网关只读注册表,不直接依赖具体插件。
- 插件可热插拔:卸载只需
unregister,注册表处理优先级与覆盖。
小结
插件 = 「子目录 + 注册」。所有跨切面能力(provider、平台、工具、记忆、cron、多模态)都走同一套注册骨架,核心循环因此保持稳定。新增能力 = 新建一个插件子目录并注册,无需动 agent 主干。