外掛系統
源码版本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 主幹。