H繁中版
文件核心功能built in plugins
<!-- Source: https://hermesbible.com/docs/user-guide/features/built-in-plugins -->

Section: Core Features · URL: https://hermesbible.com/docs/user-guide/features/built-in-plugins

Hermes 隨附了一組小型內建外掛,這些外掛與程式碼庫一同發佈,位於 <repo>/plugins/<name>/,會與使用者安裝於 ~/.hermes/plugins/ 的外掛一起自動載入。它們使用與第三方外掛相同的外掛介面 — hooks、tools、slash commands — 只是由核心團隊在程式碼庫內維護。

請參閱 Plugins 頁面了解一般外掛系統,或參閱 Build a Hermes Plugin 來撰寫自己的外掛。

發現機制

PluginManager 會依序掃描四個來源:

  1. Bundled<repo>/plugins/<name>/(本頁面所記錄的內容)
  2. User~/.hermes/plugins/<name>/
  3. Project./.hermes/plugins/<name>/(需啟用 HERMES_ENABLE_PROJECT_PLUGINS=1
  4. Pip entry pointshermes_agent.plugins

當名稱衝突時,較後的來源會覆蓋前面的 — 例如名為 disk-cleanup 的使用者外掛會取代內建版本。

plugins/memory/plugins/context_engine/ 被刻意排除在內建掃描之外。這些目錄使用各自的發現路徑,因為記憶體提供者(memory providers)和上下文引擎(context engines)是透過 hermes memory setup / context.engine 設定來單獨選取的提供者。

內建外掛採用 opt-in 機制

內建外掛出廠時預設為停用狀態。發現機制會找到它們(它們會出現在 hermes plugins list 和互動式 hermes plugins UI 中),但除非你明確啟用,否則不會載入任何外掛:

hermes plugins enable disk-cleanup

或透過 ~/.hermes/config.yaml

plugins:
  enabled:
    - disk-cleanup

這與使用者安裝的外掛使用相同的機制。內建外掛永遠不會自動啟用 — 不論是全新安裝,還是現有使用者升級到較新版的 Hermes。你始終需要明確選擇啟用。

要關閉內建外掛:

hermes plugins disable disk-cleanup
# 或:從 config.yaml 的 plugins.enabled 中移除

目前隨附的外掛

程式碼庫在 plugins/ 目錄下隨附了以下內建外掛。全部採用 opt-in — 透過 hermes plugins enable <name> 啟用。

外掛類型用途
disk-cleanuphooks + slash command自動追蹤暫存檔案,並在工作階段結束時清理
security-guidancehookswrite_file/patch 時進行危險程式碼模式匹配,並附加安全性警告(或封鎖) — 共 25 條規則(基於 Anthropic claude-plugins-official 的 Apache-2.0 分支)
observability/langfusehooks將對話輪次 / LLM 呼叫 / 工具追蹤至 Langfuse
observability/nemo_relayhooks將可观測性事件(對話輪次 / LLM 呼叫 / 工具)轉送至 NVIDIA NeMo 端點
teams_pipelinestandaloneMicrosoft Teams 會議管線 — 基於 Graph API,以逐字稿為主的會議摘要
spotifybackend (7 tools)原生 Spotify 播放、佇列、搜尋、播放清單、專輯、音樂庫
google_meetstandalone加入 Meet 通話、即時字幕轉錄、可選的即時雙向音訊
image_gen/openaiimage backendOpenAI gpt-image-2 圖片生成後端(FAL 的替代方案)
image_gen/openai-codeximage backend透過 Codex OAuth 使用 OpenAI 圖片生成
image_gen/xaiimage backendxAI grok-2-image 後端
hermes-achievementsdashboard tabSteam 風格的收藏徽章,根據你真實的 Hermes 工作階段歷史生成
kanban/dashboarddashboard tab多代理調度器的看板 UI — 任務、評論、分派、看板切換。參閱 Kanban Multi-Agent

記憶體提供者(plugins/memory/*)和上下文引擎(plugins/context_engine/*)在 Memory Providers 頁面中另行列出 — 它們分別透過 hermes memoryhermes plugins 管理。以下是兩個長駐 hooks 類型外掛的完整說明。

disk-cleanup

自動追蹤並移除工作階段期間建立的暫存檔案 — 測試腳本、暫存輸出、排程日誌、過時的瀏覽器設定檔 — 無需代理人記得呼叫工具。

運作方式:

Hook行為
post_tool_callwrite_file / terminal / patch 建立的檔案符合 test_*tmp_**.test.* 模式,且位於 HERMES_HOME/tmp/hermes-* 時,會靜默地將其追蹤為 test / temp / cron-output
on_session_end如果在該輪中有自動追蹤的測試檔案,會執行安全的 quick 清理並記錄一行摘要。否則保持靜默。

刪除規則:

類別閾值需確認
test每次工作階段結束從不
temp追蹤後超過 7 天從不
cron-output追蹤後超過 14 天從不
HERMES_HOME 下的空目錄始終清理從不
research超過 30 天,且超過 10 個最新項目始終需要(僅限 deep 模式)
chrome-profile追蹤後超過 14 天始終需要(僅限 deep 模式)
大於 500 MB 的檔案永不自動刪除始終需要(僅限 deep 模式)

Slash command — 在 CLI 和 gateway 工作階段中皆可使用 /disk-cleanup

/disk-cleanup status                     # 分類統計 + 前 10 大檔案
/disk-cleanup dry-run                    # 預覽而不刪除
/disk-cleanup quick                      # 立即執行安全清理
/disk-cleanup deep                       # quick + 列出需要確認的項目
/disk-cleanup track <path> <category>    # 手動追蹤
/disk-cleanup forget <path>              # 停止追蹤(不刪除)

狀態儲存 — 所有資料位於 $HERMES_HOME/disk-cleanup/

檔案內容
tracked.json追蹤的路徑,包含類別、大小和時間戳
tracked.json.bak上述檔案的原子寫入備份
cleanup.log每次追蹤 / 跳過 / 拒絕 / 刪除的僅附加審計軌跡

安全性 — 清理作業僅會處理 HERMES_HOME/tmp/hermes-* 下的路徑。Windows 掛載點(/mnt/c/...)會被拒絕。知名的頂層狀態目錄(logs/memories/sessions/cron/cache/skills/plugins/、以及 disk-cleanup/ 本身)即使為空也不會被移除 — 全新安裝不會在第一次工作階段結束時被清空。

啟用: hermes plugins enable disk-cleanup(或在 hermes plugins 中勾選)。

停用: hermes plugins disable disk-cleanup

security-guidance

在寫入檔案時進行快速模式匹配的安全性警告。當代理人的 write_file / patch / skill_manage 呼叫內容中包含已知危險的程式碼模式 — pickle.load、未使用 SafeLoaderyaml.loadeval(os.systemsubprocess(..., shell=True)、JS 的 child_process.exec、React 的 dangerouslySetInnerHTML、原始 .innerHTML = / .outerHTML = / document.write、Node 的 crypto.createCipher、AES ECB 模式、停用 TLS 驗證、易受 XXE 攻擊的 xml.etree / minidom 解析器、不含 SRI 的 <script src="//..." >、未使用 weights_only=Truetorch.load、GitHub Actions ${{ github.event.* }} 注入 — 外掛會在工具結果中附加一個 ⚠️ Security guidance 區塊。

檔案仍然會被寫入。模型在下一輪的工具訊息中讀取警告,然後可以修正程式碼或記錄為什麼在該情境下該寫法是安全的。模式匹配存在不可忽視的誤報率,因此預設行為是警告(而非封鎖)。

覆蓋範圍: 共 25 條規則,涵蓋不安全的反序列化、命令注入、XSS 攻擊點、加密陷阱、XXE、供應鏈(SRI)以及 CI/CD 工作流程注入。模式資料是 Anthropic 的 claude-plugins-official 的逐字 Apache-2.0 分支 — 請參閱外掛的 LICENSENOTICE 檔案以確認出處。

模式:

環境變數效果
(未設定)warn 模式(預設)— 檔案會被寫入,警告附加在結果中
SECURITY_GUIDANCE_BLOCK=1block 模式 — 拒絕寫入,警告作為封鎖原因回傳
SECURITY_GUIDANCE_DISABLE=1停用開關 — 外掛載入但不做任何事

啟用: hermes plugins enable security-guidance(或在 hermes plugins 中勾選)。

停用: hermes plugins disable security-guidance

目前尚未實作的功能: 上游 Anthropic 外掛還有兩個額外層級 — 在代理人每次處理涉及檔案變更的輪次時進行 LLM diff 審查,以及在提交時進行跨檔案的資料流追蹤審查。這兩個功能尚未移植。代理人可以透過 demand_task 按需執行這些審查。

observability/langfuse

將 Hermes 的對話輪次、LLM 呼叫和工具調用追蹤至 Langfuse — 一個開源的 LLM 可观测性平台。每個輪次對應一個 span,每次 API 呼叫對應一個 generation,每次工具呼叫對應一個 tool observation。使用量統計、按類型的 token 計數和成本估算來自 Hermes 標準的 agent.usage_pricing 數據,因此 Langfuse 儀表板看到的分類(input / output / cache_read_input_tokens / cache_creation_input_tokens / reasoning_tokens)與 hermes logs 中顯示的完全一致。

該外掛採用 fail-open 設計:未安裝 SDK、缺少憑證,或 Langfuse 臨時性錯誤 — 全部在 hook 中靜默忽略。代理迴圈永遠不會受到影響。

設定方式(互動式 — 建議):

hermes tools          # → Langfuse Observability → Cloud 或 Self-Hosted

設定精靈會收集你的金鑰、執行 pip install langfuse,並將 observability/langfuse 加入 plugins.enabled。重啟 Hermes 後,下一個輪次就會發送追蹤數據。

設定方式(手動):

pip install langfuse
hermes plugins enable observability/langfuse

然後將憑證放入 ~/.hermes/.env

HERMES_LANGFUSE_PUBLIC_KEY=pk-lf-...
HERMES_LANGFUSE_SECRET_KEY=sk-lf-...
HERMES_LANGFUSE_BASE_URL=https://cloud.langfuse.com   # 或你的自架網址

運作方式:

Hook行為
pre_api_request / pre_llm_call開啟(或重用)一個以輪次為單位的根 span「Hermes turn」。為此 API 呼叫啟動一個 generation 子 observation,輸入為序列化的近期訊息。
post_api_request / post_llm_call關閉 generation,附加 usage_detailscost_detailsfinish_reason、助理輸出和工具呼叫。若無工具呼叫且內容非空,則關閉輪次。
pre_tool_call以清理過的 args 啟動一個 tool 子 observation。
post_tool_call以清理過的 result 關閉 tool observation。read_file 的內容會被摘要化(head + tail + 省略行數),以確保大量檔案讀取不會超過 HERMES_LANGFUSE_MAX_CHARS

工作階段分組基於 Hermes 工作階段 ID(或子代理人的 task ID),透過 langfuse.propagate_attributes 實現,因此單一 hermes chat 工作階段中的所有內容都位於同一個 Langfuse 工作階段下。

驗證:

hermes plugins list                 # observability/langfuse 應顯示 "enabled"
hermes chat -q "hello"              # 在 Langfuse UI 中查看 "Hermes turn" 追蹤

可選調校(在 .env 中設定):

變數預設值用途
HERMES_LANGFUSE_ENV追蹤資料上的環境標籤(productionstaging …)
HERMES_LANGFUSE_RELEASE版本標籤
HERMES_LANGFUSE_SAMPLE_RATE1.0傳遞給 SDK 的取樣率(0.0–1.0)
HERMES_LANGFUSE_MAX_CHARS12000訊息內容 / 工具參數 / 工具結果的每欄位截斷字數
HERMES_LANGFUSE_DEBUGfalse將外掛的詳細日誌輸出至 agent.log

Hermes 前綴和標準 SDK 環境變數(LANGFUSE_PUBLIC_KEYLANGFUSE_SECRET_KEYLANGFUSE_BASE_URL)皆可接受 — 兩者同時設定時,Hermes 前綴優先。

效能: Langfuse 客戶端在第一次 hook 呼叫後會被快取。若憑證或 SDK 缺失,此決定也會被快取 — 後續的 hook 會快速返回,無需重新檢查環境變數或重新載入設定。

停用: hermes plugins disable observability/langfuse。外掛模組仍會被發現,但在你重新啟用之前不會執行任何模組程式碼。

google_meet

讓代理人可以加入、轉錄並參與 Google Meet 通話 — 在會議中做筆記、事後摘要討論內容、針對特定要點進行後續跟進,以及(可選地)透過 TTS 將回覆語音輸入通話中。

新增功能:

  • 一個使用瀏覽器自動化的無頭虛擬參與者,透過 Meet URL 加入會議
  • 透過已設定的 STT 提供者進行會議音訊的即時轉錄
  • 代理人可調用的 meet_summarize / meet_speak / meet_followup 工具組
  • 會議後的產出(逐字稿、按發言者標註的筆記、待辦事項)儲存於 ~/.hermes/cache/google_meet/<meeting_id>/

設定:

hermes plugins enable google_meet
# 首次使用時會提示你透過外掛的 OAuth 流程登入 —
# 需要具有 Meet 存取權限的 Google 帳戶。如果會議啟用了
# 「僅受邀者可加入」,可能需要主持人批准。

從聊天中使用:

「加入 meet.google.com/abc-defg-hij 並做筆記。通話結束後,發送一份包含待辦事項的摘要給我。」

代理人會啟動會議加入流程,在通話進行中將轉錄內容串流回其上下文,並在會議結束時(或你要求停止時)產生結構化摘要。

使用時機: 需要機器人為異步參與者轉錄 + 摘要的定期站會;需要結構化筆記的證詞式訪談;任何你原本需要使用 Fireflies / Otter / Grain 的場合。如果你不希望有 AI 在旁聽 — 不要啟用此功能。

停用: hermes plugins disable google_meet。所有已快取的逐字稿和錄音會保留在 ~/.hermes/cache/google_meet/ 中,直到你手動刪除。

hermes-achievements

為儀表板新增一個 Steam 風格的成就分頁 — 60 多個可收集的分級徽章,根據你真實的 Hermes 工作階段歷史生成。工具鏈成就、除錯模式、vibe-coding 連續紀錄、skill/memory 使用情況、模型/提供者多樣性、生活作息特徵(週末和夜間工作階段)。最初由 @PCinkusz 作為外部外掛開發;納入核心程式碼庫以便與 Hermes 功能更新保持同步。

運作方式:

  • 在儀表板後端掃描整個 ~/.hermes/state.db 工作階段歷史
  • 每個工作階段的統計資料以 (started_at, last_active) 指紋快取,因此後續掃描時只會重新分析新增或變更的工作階段
  • 首次掃描在背景執行緒中運行 — 即使資料庫有數千個工作階段,儀表板也不會因此阻塞
  • 解鎖狀態持久化至 $HERMES_HOME/plugins/hermes-achievements/state.json

等級晉升: 銅 → 銀 → 金 → 鑽石 → 奧林匹克。每張卡片都有一個「計算方式」區塊,列出正在追蹤的確切指標。

成就狀態:

狀態意義
Unlocked至少達到一個等級
Discovered已知成就,進度可見,尚未獲得
Secret在 Hermes 偵測到你歷史中第一個相關訊號之前隱藏

API — 路由掛載於 /api/plugins/hermes-achievements/

端點用途
GET /achievements完整目錄,包含每個徽章的解鎖狀態(首次冷掃描進行中時回傳待處理佔位符)
GET /scan-status背景掃描器狀態:idle / running / failed、上次耗時、執行次數
GET /recent-unlocks最近解鎖的 20 個徽章,最新的在前
GET /sessions/{id}/badges主要在某個特定工作階段中獲得的徽章
POST /rescan手動同步重新掃描(阻塞;在使用者點擊重新掃描按鈕時使用)
POST /reset-state清除解鎖歷史和已快取的快照

狀態檔案 — 位於 $HERMES_HOME/plugins/hermes-achievements/

檔案內容
state.json解鎖歷史:你已獲得哪些徽章以及何時獲得。在 Hermes 更新時保持穩定。
scan_snapshot.json上次完成的掃描結果(儀表板載入時立即提供)
scan_checkpoint.json以指紋為鍵的每工作階段統計快取(加速暖掃描)

效能說明:

  • 約 8,000 個工作階段的冷掃描需要幾分鐘。它在第一次儀表板請求時於背景執行緒中運行;UI 會顯示待處理佔位符並輪詢 /scan-status
  • 冷掃描期間的增量結果 — 掃描器每約 250 個工作階段發佈一次部分快照,因此每次儀表板重新整理時都會看到更多徽章被解鎖。無需盯著零值等上一分鐘。
  • 暖掃描會重用每個 started_at + last_active 指紋與快取相符的工作階段統計資料 — 即使在大量歷史資料上也能在幾秒內完成。
  • 記憶體中快照的 TTL 為 120 秒;過期的請求會立即提供舊快照並觸發背景重新整理。你永遠不會因為 TTL 過期而看著轉圈圖示等待。

啟用: 無需啟用 — hermes-achievements 是一個僅限儀表板的外掛(無生命週期 hooks、無模型可見工具)。它會在首次啟動時自動註冊為 hermes dashboard 的分頁。plugins.enabled 設定僅用於控制生命週期/工具類外掛;儀表板外掛純粹透過其 dashboard/manifest.json 被發現。

退出方式: 刪除或重新命名 plugins/hermes-achievements/dashboard/manifest.json,或在 ~/.hermes/plugins/hermes-achievements/ 中以同名使用者外掛覆蓋(且不提供儀表板)。$HERMES_HOME/plugins/hermes-achievements/ 下的狀態檔案會保留 — 重新安裝時會保留你的解鎖歷史。

新增內建外掛

內建外掛的撰寫方式與任何其他 Hermes 外掛完全相同 — 請參閱 Build a Hermes Plugin。唯一的差異是:

  • 目錄位於 <repo>/plugins/<name>/ 而非 ~/.hermes/plugins/<name>/
  • hermes plugins list 中,manifest 來源顯示為 bundled
  • 同名的使用者外掛會覆蓋內建版本

一個外掛適合作為內建外掛的條件:

  • 沒有可選依賴項(或是已被 pip install .[all] 包含的依賴)
  • 行為惠及多數使用者,採用 opt-out 而非 opt-in
  • 邏輯與生命週期 hooks 緊密結合,否則代理人需要記得呼叫
  • 補充核心功能,但不會擴展模型可見的工具介面

反面範例 — 應保持為可安裝的使用者外掛而非內建的:需要 API 金鑰的第三方整合、利基工作流程、大型依賴樹、以及預設會實質改變代理人行為的任何內容。



排程任務(Cron)