多智能体系统中的“人机协作”(HITL):KaibanJS 方法
探索 KaibanJS 如何通过内置的“人机协作”(HITL)支持,实现动态、模块化和人性化的 AI 工作流。
引言:多智能体系统与人工监督
多智能体系统(MAS)—— 由相互协作的 AI 驱动的智能体集合——正在改变我们自动化复杂流程的方式。这些框架,也称为智能体编排工具,允许智能体协作委托、验证和完成任务。
流行的平台,如 CrewAI、LangGraph 和 KaibanJS,都支持这种协作设计。然而,在实际应用中,完全自主并不总是理想的。涉及道德、合规性或细致判断的任务需要人工监督。这时,“人机协作”(Human in the Loop,HITL)的概念就应运而生了。
什么是 HITL?
“人机协作”(Human in the Loop)是指将人工输入嵌入自动化决策过程中的系统。在多智能体系统中,HITL 允许操作员:
- 验证输出
- 请求修订
- 提供道德或领域特定的监督
实施模型
- 手动验证检查点
- UI 反馈面板
- 任务状态路由
- 完成后反馈周期
📊 领先多智能体系统框架中的 HITL 比较
框架 | HITL 支持 | 主要功能 | 备注 |
---|---|---|---|
CrewAI | 基本(通过回调) | 智能体暂停进行手动检查 | 回调式验证 |
LangGraph | 强大(通过分支) | 人机协作状态转换 | Python 优先,基于 LangChain |
KaibanJS | 原生与动态 | HITL 状态、React UI、验证和反馈工具 | 模块化、JS 优先,专为 HITL 设计 |
KaibanJS 简介
KaibanJS 是一个开源的、基于 JavaScript 的编排框架,旨在构建和可视化多智能体工作流。它受看板(Kanban)启发,提供:
- 开发者优先的设计,采用 JS/TS + React
- 智能体、工具和工作流的模块化架构
- 通过状态列进行视觉任务跟踪
- 全面支持 HITL,包括工作流中期和完成后
KaibanJS 中的 HITL 实践
KaibanJS 通过灵活的基于状态的任务系统原生实现 HITL。任务可以被标记为需要人工验证才能继续。其工作流程如下:
HITL 中的任务生命周期
任务创建:创建任务时,选项
externalValidationRequired: true
。智能体执行:智能体将任务从
TODO
移至DOING
,然后完成任务。等待验证:如果需要验证,任务将移至
AWAITING_VALIDATION
,而不是DONE
。人工干预:
- 人工审阅者可以使用
validateTask(task.id)
验证任务,将其推进到VALIDATED
,然后是DONE
。 - 或者,他们可以使用
provideFeedback(task.id, "...comments...")
提交反馈,将任务转换为REVISE
。
- 人工审阅者可以使用
任务修订:智能体重新处理任务,整合反馈,并将其返回到
AWAITING_VALIDATION
或DONE
。工作流完成:无需验证的任务直接从
DOING
变为DONE
。一旦所有任务完成,工作流即结束。
工作流状态转换
任务根据验证要求和人工反馈,在这些状态之间动态移动。智能体跟踪 feedbackHistory
,允许决策路径的透明度
{
content: "Expand on competitor analysis",
status: "PENDING",
timestamp: "2025-06-19T14:22:00Z"
}
JS 中的 HITL 逻辑示例
team.onWorkflowStatusChange((status) => {
if (status === 'BLOCKED') {
const tasksAwaitingValidation = team.getTasksByStatus('AWAITING_VALIDATION');
tasksAwaitingValidation.forEach(task => {
team.validateTask(task.id);
});
}
});
看板式流程图
+---------+
| TODO |
+---------+
|
v
+---------+
+--->| DOING |
| +---------+
| |
v v
+-------------+ +------------------+
| BLOCKED | | AWAITING_ |
+-------------+ | VALIDATION |
| +------------------+
| |
| v
| +--------------+
| | VALIDATED |
| +--------------+
| |
| v
+------------>+---------+
| DONE |
+---------+
实时反馈 UI (React 示例)
{tasks.filter(t => t.status === 'AWAITING_VALIDATION').map(task => (
<div key={task.id}>
<h3>{task.title}</h3>
<button onClick={() => store.getState().validateTask(task.id)}>Validate</button>
<button onClick={() => store.getState().provideFeedback(task.id, "Needs edits")}>Feedback</button>
</div>
))}
工作流完成后重新激活
KaibanJS 支持即使工作流已完成后的反馈。如果已完成任务收到反馈:
- 该任务将被重新激活并重新运行
- 所有依赖于它的下游任务也将重新计算
- 将考虑之前的结果以生成更新的输出
这种强大的机制确保工作流可以根据新的见解进行演进,而无需重新开始所有操作。
何时在 KaibanJS 中使用 HITL
在以下情况下使用:
- 需要合规性或法律检查
- 输出需要人工判断
- 您需要事后分析修订
在以下情况下避免使用:
- 您需要高速、低风险的自动化
- 反馈会延迟而不是丰富结果
🎬 观看演示
视频: 了解 KaibanJS 工作流在人工反馈后如何重新执行 👉 KaibanJS HITL 反馈。工作流完成后重新激活
结论
HITL 对于构建安全、适应性强且准确的 AI 系统至关重要。使用 KaibanJS,它不再是事后考虑,而是核心功能。
开始构建智能体工作流,整合自主智能体和人类专业知识的最佳之处。
🔗 KaibanJS 网站 | 🧑💻 GitHub | 📚 LLMs 文档