人机协作(HITL)

wesgine 的 HITL(Human-in-the-Loop)系统允许 Agent 在运行过程中请求用户介入。


HITL 不是治理

重要区分:HITL 不由治理链(Governance Pipeline)触发。治理链的三步管道(Hardline / Sandbox / Zone)独立于 HITL。

HITL 的触发来源:

来源说明
ask_user 工具Agent 主动请求用户输入
browser_wait_for_user浏览器操作等待用户干预(AlwaysOn)
CycleDetector检测到真循环,自愈失败后
ErrorStreak连续错误累积超阈值

工作流程

触发源 → 发起 HITL 请求
            ↓
       Agent Loop 阻塞
            ↓
       SSE 事件推送到前端
            ↓
       用户在同一会话内响应
            ↓
       Loop 继续执行

API

查看待处理请求

GET /cells/{id}/hitl/pending?run_id=

返回当前 Cell 内待处理的 HITL 请求列表。

响应请求

POST /cells/{id}/hitl/{reqID}/respond

Body 包含用户的决定和理由。


超时

HITL 请求有超时机制:


Actor 边界

HITL 遵循 Actor 边界:


browser_wait_for_user

浏览器安全阀,AlwaysOn:


CycleDetector 与 HITL

CycleDetector 使用两阶段终止协议:

首次 CycleTerm → 自愈(注入纠正消息 + 重置计数)
                   ↓ 自愈失败
第二次 CycleTerm → HITL(问用户怎么办)
                   ↓ 用户不响应
                 超时 60s → 终止 Run + 保存进度

与消费方的集成

产品HITL 实现
wesclaw 桌面对话内审批(SSE → 前端弹框)
wescode对话内审批
teleclaw对话内审批 + Actor 校验(Java handler)

相关文档