自動化

事件驅動代理

在變化發生時才回應,而非持續輪詢的代理。

概念專屬圖版事件驅動代理hx-graph-context-concept-event-driven-agents正在載入視覺預覽…
以原始尺寸檢視

事件驅動代理

這是什麼

由真實事件喚醒並處理該次變化,而不是按照固定頻率反覆檢查的代理運作方式。

白話解釋

差別就像每小時走到門外查看包裹是否送達,與門鈴攝影機在包裹落地那一刻立即通知你。事件驅動代理是後者:Hermes 不會排程一堆通常沒有結果的檢查,而是在新訊息、儲存庫推送或來電等真實訊號到達時才醒來,專注處理那一件事。

為什麼重要

「定時檢查並期待有變化」可改成「變化一發生就收到通知」:事件驅動代理由 webhook 觸發,而不是等待排程時點。它避免輪詢式監控的結構性浪費,因為大多數輪詢其實找不到新內容;代理活動會直接對應到新訊息、儲存庫推送或表單提交等外部事件。Hermes 的外掛程式架構讓許多平台都能共用這種模式,不必為每個事件來源改寫核心整合。

運作方式

Hermes 會從 bundleduserproject 與以 pip 安裝的套件四個位置探索外掛程式,並在載入時精確呼叫每個已啟用外掛程式的 register(ctx) 一次(hermes_cli/plugins.py)。外掛程式可接上代理核心在固定時點呼叫的具名生命週期掛鉤,也可以呼叫 ctx.register_platform(),把 IRC 或 Viber 等新事件來源加入閘道查詢的共用 platform_registry,而不是寫死在清單裡(gateway/platform_registry.py)。每個已登錄的平台轉接器都繼承相同基底並維持開放連線或監聽器;一旦訊息、webhook 或平台事件抵達,它就建立一個 MessageEvent,再呼叫共用的 handle_message() 管線(gateway/platforms/base.py)。無論來源是 Telegram、Slack 或自訂外掛程式,入口都相同,而且在這次呼叫發生前不會執行代理。

具體範例

團隊希望 Hermes 回應內部 IRC 伺服器的訊息,但 IRC 並非內建平台。外掛程式作者撰寫 IRC 平台轉接器,並在 Hermes 啟動時呼叫 register_platform();閘道把 irc 加入已知平台、檢查相依套件,再開啟持久連線,而不是安排重複輪詢。當同事傳送提及 Hermes 的訊息時,該事件建立一個 MessageEvent 並只執行一次代理;系統最後把回覆經同一條 IRC 連線回傳,不浪費 cron 執行時點,也不必等待下一輪檢查。

如何連結

「事件驅動代理」屬於「自動化」系列。最直接相關的概念包括:「事件掛鉤」、「監控任務」、「代理執行環境」、「個人作業系統」。

來源證據

  • 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 自動載入內建後端宣告檔。

工作流程

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

相關文章

相關筆記