Hook 扩展
Hook 扩展
Hook 扩展会把规定的 JSON payload POST 到管理员管理的端点,并在 pipeline 使用响应前验证返回的 JSON object。应将每个 Hook 视为出站数据边界和同步依赖。
Hooks 有三项后端硬边界:管理 router 和 HTTP executor 来自具备企业能力的 EE server、部署必须是 single-tenant,并且每个管理 endpoint 都要求完整 Admin Panel 权限。仅社区版执行会返回 no-op 结果,管理依赖会拒绝 multi-tenant 部署。当前 Web UI 还会检查 Enterprise tier 并读取 hooks_enabled,但服务端将该设置直接派生为 not MULTI_TENANT;当前 license 与 tier middleware 均为透传,并非独立的后端 gate。
端点与认证合同
不要把最终用户 token 复用为 Hook API key。请通过 Admin Panel 轮换 key,再次验证 endpoint,并避免 request 或 response body 进入 error log。
Document Ingestion
此 Hook 在内部验证之后、索引写入之前,对每份文档运行。所有顶层 input field 都是必填项;标为 nullable 的字段可以携带 null。
默认 timeout 为 30 秒,默认 fail strategy 为 hard。端点或验证发生 hard failure 时,该文档不会被索引;soft failure 会忽略 Hook 结果,并使用原始文档继续。
Document Push
此 Hook 仅在整个 batch 完成 vector database 写入和 post_index 后运行。随后 OpenCore 遍历成功索引的公开文档并逐一推送。它只在 single-tenant 部署中运行,且 from_beginning=True 会完全跳过 Document Push。配置了环境变量驱动的 document-push sink 时,该 sink 优先,受管理 Hook 不会被调用。
返回 JSON object;{} 即可,因为 Document Push 不消费 response field。默认 timeout 为 30 秒,默认 strategy 为 soft,因此失败会被记录,遍历通常继续。如果管理员将 strategy 覆盖为 hard,失败可能在这个较晚阶段把 batch 标记为失败或抛出错误:成功文档已经完成写入,post_index 已结束,而且遍历中更早的 push 可能已经成功。
Query Processing
此 Hook 在 chat message 保存前处理原始用户 query。其 input 不允许未知 field。
默认 timeout 为 5 秒,默认 strategy 为 hard,因为用户正在同步等待。hard failure 会阻止 query 并显示错误;soft failure 会忽略 Hook 结果,并使用原始 query 继续。
超时与失败策略
Admin Panel 接受大于 0 且不超过 600 秒的 timeout。除非端点有经过测量的差异理由,否则使用每个 Hook point 的默认值。
Soft mode 不会让无效响应变成有效响应;它只决定失败后 pipeline 如何处理。失败执行会被记录,成功执行不会进入 failure log。
配置与运维
- 确认具备企业能力的 server 以 single-tenant 模式运行,且操作者拥有完整 Admin Panel 权限。再确认当前 Web UI 开放 Admin Panel → Hook Extensions;其 Enterprise tier 与
hooks_enabled检查属于 UI 条件,不是额外的后端 license enforcement。 - 选择一个 Hook point,部署能接收其精确 input model 并返回精确 output model 的 endpoint。
- 设置 display name、endpoint URL、API key、fail strategy 与 timeout。创建流程会验证 reachability 与认证。
- 使用有代表性的非敏感 input 完成测试,再激活 Hook 并监控 endpoint latency 与失败执行记录。
- 如需更改 endpoint、策略、timeout 或 key,请更新 Hook,并在依赖它之前重新验证。
验证
- 让测试端点返回
{},确认 Document Push 接受该响应,而转换型 Hook 会拒绝缺少所需有效内容的响应。 - 对 Document Ingestion 重排 section,再返回空 section list,确认测试文档按预期 reason 被丢弃。
- 对 Query Processing 改写测试 query,再返回空白内容,确认 query 在 message 保存前被拒绝。
- 分别在 hard 与 soft strategy 下模拟 timeout、HTTP error、非 JSON response 和错误 JSON shape。
- 停用 Hook,确认原始 pipeline 继续运行,并且没有出站调用。