在控制台配置
在控制台进入 Managed Agents → Webhooks,创建并管理接收端点。1
创建端点
点击创建,填写服务的 HTTPS 接收地址,可选填名称和描述。接收地址必须使用 443 端口和公网可解析的域名,不接受 IP、localhost、内部保留域名、用户名密码或 fragment。
2
选择订阅事件
按业务需要选择至少一种事件,例如在会话停下来时通知业务系统,选择
session.status_idled。事件选择器按资源分类,只会投递已订阅的类型;保存前检查所选清单。3
保存签名密钥
创建后端点立即启用。复制弹窗中显示的
whsec_ 签名密钥,安全保存并配置到接收器。密钥只在创建或轮换时显示,关闭弹窗后不能再次查看。4
验证接收
配置好接收器后,再触发一次已订阅的业务操作,例如发起新的会话执行。确认接收器收到通知、验签通过并可靠保存后,再接入实际业务。
管理已有端点
每租户默认最多 10 个端点,可由平台调整。达到上限时,控制台会提示无法继续创建;禁用仍占额度,删除后释放。订阅覆盖本租户所选类型;如只处理特定 Session 或 Agent,在接收器中按资源 ID 筛选。
先配置订阅,再触发业务。平台不补历史通知;Session 执行链启动时读取订阅配置,中途修改不保证影响已启动的执行。同一地址可注册多个端点,各自使用独立密钥,订阅重叠时会分别投递。创建端点只校验地址格式,投递时才检查 DNS 是否解析到公网地址。
接收通知
平台以 HTTPS POST 发送application/json。接收服务需要读取原始请求体,验证以下请求头,再解析事件:
通知内容
通知不含完整资源。回查得到的是当前状态,可能与事件发生时不同;不要根据通知到达顺序推算当前状态。删除类事件发生后资源已无法回查,通知本身就是删除的依据。
验证签名
签名遵循 Standard Webhooks:移除密钥的whsec_ 前缀,将剩余部分按标准 Base64 解码为密钥字节,签名输入为 webhook-id.webhook-timestamp.原始请求体。必须使用原始请求体字节,不要先解析 JSON 再序列化。
下面的函数校验签名与 5 分钟时间戳容差,使用恒定时间比较摘要。密钥从接收器的安全配置读取;Node.js 传入原始 Buffer,Python 传入 bytes。在 Flask 中可用 request.get_data() 获取原始字节,request.headers 传给验签函数。
- Node.js
- Python
确认接收与幂等处理
- 先验签。 签名无效或时间戳过期时,返回
400或401,不执行事件中的业务动作。 - 可靠保存后再确认。 验签通过后解析 JSON,以顶层
id(也就是webhook-id)为唯一键,将通知幂等地持久化或写入可靠队列,再尽快返回2xx。若保存失败,不要提前确认接收,应返回失败状态让平台按规则重试。 - 后台处理。 资源回查、发送提醒等耗时操作在后台完成。平台只根据 HTTP 状态判断送达,不读取响应体,也不知道你的后台业务是否完成。
2xx。去重记录与业务处理状态应能跨接收服务重启保留;仅在进程内记录事件 ID 不能保证幂等。
收到通知后如何处理
根据data.type 选择处理方式。这里查询的是 Session、Thread、Run 或凭据等业务资源,相关接口见下列指南。
session.status_idled 不代表任务成功。停止原因在会话事件中,Session 详情不返回该字段;中断也会以 end_turn 收口,是否完成任务仍需结合消息、错误和产物判断。
支持的事件
当前支持以下 33 种事件,在控制台的事件选择器中按资源类型选择。Webhook 与 Session 事件流的名称不同,例如事件流的session.status_idle 对应 session.status_idled 通知。
- Session 事件
- Vault 事件
- Agent 事件
- Deployment 事件
- Deployment Run 事件
- Environment 事件
- 记忆存储事件
Session 的开始和空闲表示所有线程的聚合变化,最后一个运行线程停下才发 Session 空闲通知。子线程事件额外包含
data.session_thread_id,data.id 仍为 Session ID;主线程不发这三种子线程通知。投递行为
通知可能重复、乱序或最终丢失。当前不提供测试投递、投递记录查询、手动补发或历史重放。Webhook 不作为持久化变更日志;需要完整状态核对的业务,应定期查询相关资源。
端点维护与排查
自动禁用与恢复
在控制台列表或详情中查看端点是否启用。端点被自动禁用时,可按下表检查接收服务;无法定位原因时,提供端点 ID 和发生时间联系支持人员。
单条通知三次失败不会立即造成“持续失败”禁用;一次成功投递会清空连续失败计时。修复问题后,在端点操作菜单中选择启用,会清空失败计时与自动禁用原因。恢复不会补发停用期间或已放弃的通知。
迁移接收地址
接收地址创建后不能修改。服务迁移时:- 在控制台创建使用新地址的端点,选择需要的事件。
- 给新接收器配置该端点的签名密钥。
- 触发一次订阅事件,验证新地址接收、验签与确认正常。
- 再从控制台删除旧端点。
轮换签名密钥
密钥丢失或需要替换时,在控制台的端点操作菜单中选择轮换,复制一次性显示的新密钥,并尽快更新接收器配置。 平台没有新旧密钥同时生效的宽限期。轮换后新准备的请求使用新密钥,已签名的在途请求仍可能使用旧密钥。轮换不会改变端点是否启用,也不会清空连续失败计时。常见问题
如仍需排查,可在控制台详情中复制端点 ID,连同资源 ID 和发生时间提供给支持人员;不要提供签名密钥。
下一步
定时任务
配置定时运行并通过通知跟踪结果
事件与流式输出
实时查看 Agent 输出并处理审批