人机协同审核
Shannon 的人机协同(HITL)审核系统允许你在工作流开始执行之前,审核和优化 AI 生成的研究计划。这对于深度研究任务特别有用——你可以引导研究方向、添加约束,或确保代理聚焦于最重要的内容。你将学到
- HITL 审核周期的工作原理(计划生成、反馈、批准)
- 在任务提交时启用 HITL 审核
- 与审核 API 交互(获取状态、发送反馈、批准)
- 基于版本号的乐观并发控制
- 审核过程中发出的 SSE 事件
- Python SDK 中的 HITL 审核用法
- 配置选项与超时设置
前置条件
- 已运行的 Shannon 堆栈(Docker Compose)
- Gateway 可通过
http://localhost:8080访问 - 鉴权默认:
- Docker Compose:默认关闭鉴权(
GATEWAY_SKIP_AUTH=1)。 - 本地构建:默认开启鉴权。可设置
GATEWAY_SKIP_AUTH=1关闭;或在请求中加入 API key 头-H "X-API-Key: $API_KEY"。
- Docker Compose:默认关闭鉴权(
HITL 审核流程
HITL 审核在任务提交与研究执行之间插入人工检查点:1
提交启用审核的任务
在上下文中添加
require_review: true(或 review_plan: "manual")提交研究任务。2
AI 生成初始研究计划
LLM 服务根据查询生成研究计划。工作流暂停,等待人工输入。
3
审核并提供反馈
通过审核 API 查看提议的计划,发送反馈进行迭代优化(最多 10 轮)。
4
批准计划
满意后批准计划。工作流恢复执行已确认的研究方向。
5
研究执行
ResearchWorkflow 以批准的计划作为上下文运行,产出聚焦的、带引用的研究报告。
架构
启用 HITL 审核
在提交研究任务时,将require_review: true 添加到任务上下文中:
HITL 审核需要
force_research: true,因为审核流程属于 ResearchWorkflow 的一部分。如果不设置此参数,协调器可能将任务路由到不支持审核的其他工作流。review_plan: "manual" 也可接受,行为完全相同。桌面应用在用户对深度研究关闭自动批准时使用 require_review: true。
获取审核状态
提交后轮询以等待审核计划就绪。工作流通过 LLM 生成初始计划并将其存储在 Redis 中。响应
ETag 头,其中包含当前版本号,用于乐观并发控制。
发送反馈
发送反馈来优化计划。网关将你的消息转发给 LLM,LLM 根据你的输入生成更新的计划。反馈响应
intent 字段表示 LLM 的评估:
"feedback"— LLM 正在提出澄清问题(尚无可执行计划)"ready"— LLM 已提出可执行的研究方向
并发控制
If-Match 头(curl)或 version 参数(SDK)启用乐观并发。如果自上次读取以来另一个请求修改了状态,服务器返回 409 Conflict:
轮次限制
最多允许 10 轮反馈。在最后一轮,LLM 被指示生成明确的计划。超过此限制后,仅接受批准操作:批准计划
计划满意后,批准以恢复工作流执行:批准响应
- 网关向等待中的工作流发送 Temporal Signal
- 已确认的计划和审核对话被注入任务上下文
- ResearchWorkflow 按批准的研究方向继续执行
- SSE 发出
RESEARCH_PLAN_APPROVED事件
SSE 事件
HITL 审核过程中发出专用 SSE 事件,可通过流式端点消费:
这些事件发布到 Redis 事件流,使审核对话在会话历史和页面刷新后可见。
配置
审核超时
工作流默认等待审核完成的时间上限为 15 分钟。超时后工作流终止:review_timeout 上下文参数(单位:秒)自定义超时:
审批工作流(独立功能)
Shannon 还有一个独立的审批工作流,用于非研究任务。它在features.yaml 中配置,根据复杂度阈值或危险工具使用情况触发:
POST /api/v1/approvals/decision),与 HITL 研究审核相互独立。详情参见审批任务 API 参考。
Python SDK 参考
Shannon Python SDK 提供了 HITL 审核专用方法:异步 SDK
最佳实践
使用版本跟踪
始终传递
If-Match 头(或 SDK 中的 version 参数)以防止竞态条件。当多个用户或标签页可能与同一审核交互时尤为重要。设置合理的超时
默认 15 分钟超时适用于大多数交互场景。对于异步审核流程(如邮件审批),请增加
review_timeout。等待 intent: ready
批准前确保 LLM 已生成意图为
"ready" 的计划。意图为 "feedback" 的轮次表示 LLM 需要更多信息。配合研究策略使用
HITL 审核与所有研究策略预设(
quick、standard、deep、academic)兼容。批准的计划将指导后续研究执行。故障排查
审核会话未找到(404)
审核会话未找到(404)
审核状态存储在 Redis 中,TTL 为 20 分钟(审核超时 + 5 分钟缓冲)。超时后审核会话不再可访问。重新提交任务以启动新的审核。
反馈冲突错误(409)
反馈冲突错误(409)
表示自上次读取以来另一个请求修改了审核状态,或另一个反馈请求正在进行中。通过
GET /review 重新获取当前状态,然后使用最新版本重试。批准被拒绝:无研究计划
批准被拒绝:无研究计划
LLM 仅提出了澄清问题(intent:
"feedback"),尚未生成可执行计划。发送至少一条反馈消息,以便 LLM 生成具体的研究方向。审核期间工作流超时
审核期间工作流超时
审核用时超过配置的超时时间(默认:15 分钟)。在任务上下文中增加
review_timeout,或更快地完成批准。后续步骤
深度研究
构建全面的研究报告
审批任务 API
非研究任务的审批工作流
HITL 审核 API
审核端点完整 API 参考