Webhook —— 出站 HTTP 通知
Webhook 會將事件投遞到你的 HTTP 端點。當 Theo 中發生某些事情(如生成完成、任務結束、技能安裝等)時,系統會向每個匹配的端點發送一個帶簽名的 POST 請求。註冊 Webhook
signing_secret——請妥善保存。它只會顯示一次,用於驗證載荷。
事件目錄
使用
"*" 作為事件類型可接收所有事件。
驗證簽名
每次投遞都包含 HMAC-SHA256 簽名:HMAC-SHA256(signing_secret, timestamp + "." + raw_body) 並進行比對來驗證。如果時間戳偏差超過 5 分鐘,應予以拒絕。
重試行為
- 對瞬時失敗會以指數退避方式自動重試
- 服務端會對每次嘗試強制執行超時限制
- 4xx 錯誤不會被重試(客戶端錯誤)
- 持續投遞失敗一段時間後,Webhook 會被自動禁用
- 無論成功還是失敗,每次嘗試都會記錄在投遞日誌中
管理 Webhook
GET /api/v1/webhooks—— 列出所有 WebhookPATCH /api/v1/webhooks/{id}—— 更新 URL、事件類型、啓用/禁用DELETE /api/v1/webhooks/{id}—— 刪除POST /api/v1/webhooks/{id}/test—— 發送測試事件GET /api/v1/webhooks/{id}/deliveries—— 查看投遞日誌
Hook 事件 —— 自主技能觸發器
Hook 是內部事件觸發器,在事件發生時自動執行技能——無需 HTTP 端點。技能會在帶有額度護欄的自主執行器中以無頭(headless)方式運行。Hook 的工作方式
- 發佈一個事件(通過
POST /api/v1/events或內部平台事件) - Hook 評估器檢查所有已啓用的 Hook 是否存在模式匹配
- 匹配到的 Hook 會加載對應的技能並自主執行
- 結果會記錄在執行日誌中
Hook 預設
安裝 Hook
自定義事件模式
模式支持以下形式:- 精確匹配:
share.accepted僅匹配share.accepted - 通配符(Glob):
order.*.completed匹配order.purchase.completed、order.return.completed - 前綴匹配:
share匹配share.accepted、share.declined等 - 全匹配:
*匹配所有事件
發佈事件
使用POST /api/v1/events 發佈領域事件,以觸發 Hook 與 Webhook:
護欄
自主執行運行在嚴格的安全限制之下:- 每次運行前進行預檢額度檢查
- 為自主操作單獨設置每日上限
- 對工具調用次數與總花費設置單次運行上限
- 各步驟之間設有額度檢查點
- Hook 在連續失敗後會自動暫停
- 可配置觸發之間的冷卻時間,以防止失控執行
管理 Hook
GET /api/v1/hooks—— 列出 Hook(包含可用預設)PATCH /api/v1/hooks/{id}—— 更新配置、啓用/禁用DELETE /api/v1/hooks/{id}—— 刪除GET /api/v1/hooks/{id}—— 查看執行歷史
