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}—— 查看执行历史
