事件掛鉤
這是什麼
由外部事件觸發、範圍明確受限的 Hermes 工作入口。
白話解釋
想像一棟商辦為每家公司設定有清楚標籤的獨立信箱,而不是共用同一個櫃台。事件掛鉤就像這個信箱:GitHub、表單服務或監控告警等外部系統在事件發生時送來簽章訊息,Hermes 入口會先驗證寄件者身分,確認後才讓內容進入指定信箱並觸發工作。
為什麼重要
外部事件抵達 Hermes API 介面後,事件掛鉤才會真正觸發事件驅動工作。每條路由都刻意限制在明確範圍,避免意外或格式錯誤的承載資料擴散成無關代理行為。這項限制是核心設計:每個入口只應完成一件指定工作,而不是開啟不受約束的工作階段。儀表板 API 會把事件掛鉤與 cron、訊息功能並列成獨立路由群組。
運作方式
每條路由可靜態定義於 config.yaml,或動態保存於 ~/.hermes/webhook_subscriptions.json;設定包含事件過濾器、必要的 HMAC 簽章密鑰、選用提示範本與傳送目標,實作位於 gateway/platforms/webhook.py。外部事件一律送到 POST /webhooks/{route_name};多設定檔 gateway 另提供 POST /p/{profile}/webhooks/{route_name}。介接器會限制請求本文大小,在解析 JSON 前先以原始本文驗證 GitHub、GitLab 或一般 HMAC 簽章,再過濾事件類型並抑制重複的傳送識別碼。只有操作者明確建立相應名稱與 gateway 路徑的路由後,該 URL 才存在;events/outage 這類未設定名稱不會自動出現。
具體範例
操作者建立名為 pr-review 的路由,允許 pull_request 事件、設定 HMAC 簽章密鑰,並讓提示範本引用 {pull_request.title} 與 {pull_request.user.login};傳送目標設為 github_comment,附上儲存庫與 PR 編號。隊友開啟 PR 後,GitHub 對 POST /webhooks/pr-review 傳送簽章請求。Hermes 驗證簽章與事件類型、套用範本,只針對該 PR 執行代理,再透過 gh CLI 把結果回覆到同一個 PR,不需輪詢,也不需額外監控腳本。
如何連結
「事件掛鉤」屬於「自動化」系列。最直接相關的概念包括:「無模型任務」、「事件驅動代理」、「代理執行環境」、「個人作業系統」。這些連結描述教學關係,不取代來源證據。
來源證據
route:GET:/api/webhooks— 此基準關聯未納入核准的核心原始碼投影驗證範圍,不能單獨作為已驗證程式行為的依據;上文另依釘選版本來源人工核對。
工作流程
- 目前尚無第一輪工作流程對應;此概念仍透過文章與來源證據出現在知識庫圖譜中。
