配置路由
在plugins.entries.webhooks.config 下设置配置:
secret 接受纯字符串或 SecretRef:{ source: "env" | "file" | "exec" | "store", provider: "default", id: "..." }。
SecretRefs 会解析到 Gateway 的启动配置快照中。当某个路由的
secret 无法解析时,Gateway 会继续运行,而该路由会保持注册状态但处于冷状态:请求会收到通用的身份验证失败响应(401)。
其他路由仍然可用。修复 SecretRef 源,然后重新加载或重启
Gateway,以激活新的快照。SecretRef 值永远不会在公共请求路径上解析。
安全模型
每个路由都会以其配置的sessionKey 的 TaskFlow 权限执行:它
可以检查和修改该会话拥有的任何 TaskFlow。TaskFlow 访问
始终通过 api.runtime.tasks.managedFlows.bindSession(...) 进行,因此
路由永远不能在其绑定会话之外执行操作。为了限制影响范围:
- 为每个路由使用强且唯一的密钥。
- 优先使用
SecretRef,而不是内联明文密钥。 - 将路由绑定到满足工作流所需的最小范围会话。
- 只暴露你需要的特定 webhook 路径。
POST)和
Content-Type: application/json,然后进行固定窗口限流(每个路径+客户端 IP 键在 60 秒窗口内最多 120
个请求,最多跟踪 4,096 个键),再进行进行中请求限制(每个键最多 8 个并发请求,最多跟踪 4,096 个键),然后是共享密钥认证,最后是 256 KB /
15 秒的 JSON 请求体读取。未通过前面检查的请求绝不会进入后面的步骤。
请求格式
发送POST 请求,使用 Content-Type: application/json,并提供以下任一认证方式:
Authorization: Bearer <secret> 或 x-openclaw-webhook-secret: <secret>:
支持的动作
会修改状态的动作(
set_waiting、resume_flow、finish_flow、fail_flow、
request_cancel)需要 flowId 和 expectedRevision 以进行乐观
并发控制;过期的修订版本会返回 409 revision_conflict。
create_flow
run_task
允许的 runtime 值:subagent、acp。startedAt、lastEventAt 和
progressSummary 仅在 status 为 "running" 时有效;在其他任何状态下
发送这些字段会返回 400 invalid_request。
响应格式
sessionKey。code 值包括 not_found、
not_managed、revision_conflict、persist_failed、cancel_requested、
cancel_pending、terminal、invalid_request、request_rejected,以及
当某个 mutation 因上面列出的代码未涵盖的原因被拒绝时使用的特定于 action 的回退代码(mutation_rejected、create_rejected、
task_not_created、cancel_rejected)。
相关
- Hooks - 内部事件驱动的 hooks 与此基于 HTTP 的 TaskFlow 桥接
- Gateway webhooks (
hooks.*config) - 独立的通用 Gateway HTTP 端点功能;与此插件的路由不同 - Plugin runtime SDK
- CLI webhooks。