Wiki · Funkce do hloubky
Pluginy
Plugin je cizí kód uvnitř agenta — proto se sám nespustí. Co umí, jak ho povolit a jak se liší od MCP serveru.
Co plugin je
Obyčejná složka v ~/.hermes/plugins/ s manifestem a kusem Pythonu:
Po startu se nástroje z pluginu objeví vedle vestavěných a model je může hned volat. Nejmenší
funkční plugin má dva soubory — plugin.yaml a __init__.py s funkcí
register(ctx).
Co všechno plugin umí
| Schopnost | Příklad použití |
|---|---|
| Přidat nástroje | Vlastní API vaší firmy jako nástroj, který model volá |
| Věšet se na události (hooky) | Logovat každé volání nástroje, upozornit před spuštěním příkazu |
| Přidat lomítkové příkazy | /muj-prikaz v chatu i v bráně |
| Přidat příkazy do terminálu | hermes muj-plugin neco |
| Přibalené skilly | Plugin si nese vlastní skilly jako plugin:skill |
| Platforma pro zprávy | Nová chatovací síť vedle Telegramu a Discordu |
| Backend pro obrázky, video, terminál, paměť | Jiný model obrázků nebo úložiště paměti |
| Způsob schvalování | Potvrzení nebezpečných kroků jinam než do chatu (např. do jiné aplikace) |
Povolení: nic se nespustí samo
Plugin se po vložení do složky objeví v přehledu, ale jeho nástroje a hooky se nenačtou, dokud
jeho název nepřidáte do plugins.enabled v config.yaml:
Pozor na výjimku: hooky brány ve ~/.hermes/hooks/<název>/
nejsou pluginy a allow-list je neřídí — spouští se pouhým položením souborů na to místo. Kdo tam
něco dá, tomu to poběží při každém startu.
Katalog: instalace jménem
Pro ručně prohlédnuté pluginy existuje katalog. Instalace jménem stáhne přesně ten commit, který někdo zkontroloval (pinovaný SHA), ne špičku větve:
| Údaj v katalogu | Co znamená |
|---|---|
tier | official (spravuje NousResearch) nebo community |
sha | Přesný 40znakový commit, který prošel revizí |
capabilities | Jaké nástroje, hooky a proměnné prostředí plugin deklaruje |
requires_hermes | Minimální verze Hermese, kterou plugin potřebuje |
Vestavěné pluginy, které Hermes vozí s sebou (například disk-cleanup, security-guidance, google_meet, hermes-achievements), jsou také opt-in — zapínají se stejně jako ostatní. Důvod je jednoduchý: aby po aktualizaci někdo nepřišel o nástroje, které nikdy nechtěl.
Časové limity, které se hodí vědět
| Nastavení | Výchozí | K čemu |
|---|---|---|
clone_timeout_seconds | 300 s | Kolik může trvat stažení pluginu z gitu |
load_timeout_seconds | 10 s | Kolik může trvat načtení jednoho pluginu; pomalejší se přeskočí s důvodem |
hook_callback_timeout | 30 s | Limit pro Python hooky; hook před voláním nástroje při vypršení nástroj zablokuje |
Plugin, nebo MCP server?
| Plugin | MCP server | |
|---|---|---|
| Kde běží | Uvnitř procesu agenta | Samostatný proces, agent se k němu připojuje |
| Umí zasahovat do agenta | Ano — hooky, schvalování, paměť, platformy | Ne — jen nabízí nástroje |
| Vhodné pro | Změnu chování agenta, napojení interních částí | Cizí služby a API, která mají vlastní život |
| Riziko | Větší — kód běží ve stejném procesu | Menší — izolovaný proces s vlastními právy |
V našem provozu platí: na cizí služby MCP, na zásahy do agenta plugin. Externí nástroje (vyhledávání, prohlížeč, dokumentace) máme jako MCP servery, protože se dají restartovat a omezit zvlášť.
Na co si dát pozor
| Situace | Co s tím |
|---|---|
Plugin po hermes update mlčí | Zkontrolujte /plugins a log startu — plugin mohl narazit na load_timeout_seconds nebo na novou verzi |
Projekt má vlastní ./.hermes/plugins/ | Projektové pluginy jsou vypnuté; zapínají se jen pro důvěryhodné repozitáře přes HERMES_ENABLE_PROJECT_PLUGINS=true |
| Plugin něco blokuje | Hook pre_tool_call může nástroj zakázat — hledejte ho v pluginu, ne v oprávněních |
| Chcete plugin vyzkoušet bez rizika | Založte nový profil a zapněte ho tam; produkce zůstane nedotčená (viz stránka o profilech) |
