技能

掛鉤機制

在工作階段、模型呼叫、工具呼叫、核准與壓縮前後執行的事件驅動擴充點。

概念專屬圖版掛鉤機制hx-graph-context-concept-hooks正在載入視覺預覽…
以原始尺寸檢視

掛鉤機制

這是什麼

附著在工作階段與代理回合固定時點的回呼,讓外掛程式在不修改核心迴圈的情況下加入行為。

白話解釋

想像舞台監督在劇本的固定位置夾上提示燈:換景前一盞、最後一句台詞後一盞,演出走到那裡就自動亮起,不必改寫劇本。Hermes 的掛鉤也是如此;小型回呼附著在回合內的固定時點,例如工具執行前或模型回應後,核心迴圈本身不需變動。

為什麼重要

外掛程式可透過掛鉤回應回合生命週期中的特定時刻:工具或模型呼叫前後、工作階段開始與結束,甚至核准要求,而不必直接修改核心執行環境。可觀測性外掛程式使用這個介面記錄每次工具與模型互動,方便日後除錯;磁碟清理等功能則可透過 post_tool_call 與工作階段結束掛鉤執行維運工作,不必由使用者明確呼叫。這種事件驅動設計讓 88 份外掛程式宣告檔不需建立分支或修補代理迴圈。

運作方式

外掛程式的 register() 函式會呼叫 ctx.register_hook(),傳入 pre_tool_callpost_llm_callon_session_startVALID_HOOKS 固定名稱;PluginManager 再把回呼存入以名稱為索引的一般字典(hermes_cli/plugins.py)。回合抵達對應時點時,所有已登錄回呼都會收到描述當下事件的具名參數。多數掛鉤只是觀察器,不會等待結果,但 pre_tool_call 可直接否決工具呼叫,pre_llm_call 也可在模型執行前注入額外上下文,包括長對話剛完成壓縮之後。回呼若拋出例外,系統會記錄錯誤而不讓代理中止(website/docs/user-guide/features/hooks.md)。例如 Langfuse 可觀測性外掛程式會登錄 6 個不同掛鉤,完整追蹤請求與結果(plugins/observability/langfuse/__init__.py)。

具體範例

團隊為不穩定的整合撰寫除錯外掛程式,向 pre_tool_callpost_tool_callpre_llm_callpost_llm_call 登錄回呼,而不修改 Hermes 核心迴圈。此後,CLI 或閘道的每個工作階段都會把工具呼叫與模型回應送往外部儀表板。即使某天記錄程式碼拋出錯誤,Hermes 也只記下例外並繼續正常回應;觀察用外掛程式不會決定對話是否繼續。

如何連結

「掛鉤機制」屬於「技能」系列。最直接相關的概念包括:「BOOT.md 啟動鉤子」、「技能」、「代理執行環境」、「個人作業系統」。

來源證據

  • hermes_cli/plugins.py#hermes_cli.plugins.PluginManager — 已驗證的 PluginManager 來源符號;對應 vendor/hermes-agent/hermes_cli/plugins.py:1302-1313#PluginManager.discover_and_load。目錄掃描器會把找到的 plugin.yamlplugin.yml 交給 _parse_manifestPluginManager 以安全的 YAML 載入器解析、正規化 kind,並透過 _load_plugin 自動載入內建後端宣告檔。

工作流程

  • 目前尚無第一輪工作流程對應;此概念仍透過文章與來源證據出現在知識庫圖譜中。

相關文章

相關筆記