Agent 人机协作回路:何时让模型自动执行、何时暂停等待人工确认
Agent 人机协作回路何时让模型自动执行、何时暂停等待人工确认一、深度引言与场景痛点大家好我是赵咕咕。你开发了一个自动回复客服消息的 Agent它确实回复得很快。但有一天Agent 自动给用户退了 5000 元——因为它理解用户要求退款。而实际上用户只是想问退款流程。这就是全自动 Agent 的最大风险你给它自主权它就可能做出你预料之外的决策。不是 Agent 笨而是有些决策天然需要人工把关。人机协作回路Human-in-the-Loop解决的就是这个问题定义清楚哪些操作 Agent 可以自主执行哪些必须暂停等待人工确认。这篇文章我们来设计一套生产级的人机协作系统。二、底层机制与原理深度剖析人机协作回路的核心是一个风险分级决策器把 Agent 的每个行动按风险等级分类低风险自动执行、中风险记录后执行、高风险暂停等待确认。风险等级的判断基于三个维度操作类型读操作低风险写操作中风险删除/转账高风险置信度模型输出带有不确定性评估影响范围影响单个用户 vs 影响全量数据协作流程sequenceDiagram participant U as 用户 participant A as Agent participant R as 风险评估器 participant H as 人工审核 participant S as 系统执行 U-A: 发送请求 A-A: 分析意图生成行动计划 A-R: 提交行动列表 置信度 R-R: 风险评估 alt 低风险操作 R-A: 批准自动执行 A-S: 执行操作 S--A: 执行结果 else 中风险操作 R-A: 记录日志后执行 A-S: 执行操作 R-H: 异步通知审核 else 高风险操作 R-H: 暂停等待人工确认 H--R: 确认/拒绝/修改 R-A: 传递审核结果 A-S: 按审核结果执行 end A--U: 返回结果 Note over R,H: 超时 5 分钟自动拒绝核心设计点风险评估在行动之前不是执行完再检查而是检查完再执行可配置的风险阈值不同业务场景有不同的风险容忍度超时兜底人工审核超时自动拒绝防止系统阻塞三、生产级代码实现下面是完整的人机协作系统实现from __future__ import annotations import asyncio from dataclasses import dataclass, field from typing import Optional, Callable, Awaitable from enum import Enum import time import json class RiskLevel(Enum): 风险等级 LOW 1 # 低风险自动执行 MEDIUM 2 # 中风险记录后自动执行异步通知 HIGH 3 # 高风险暂停等待人工确认 CRITICAL 4 # 致命风险直接拒绝强制人工 class ActionType(Enum): 操作类型 READ read # 只读查询 SEND_MESSAGE send # 发送消息 UPDATE_DATA update # 更新数据 CREATE_ORDER create # 创建订单 DELETE delete # 删除操作 REFUND refund # 退款 CREDIT_OPERATION credit # 信用/金额操作 dataclass class AgentAction: Agent 行动计划 action_id: str action_type: ActionType description: str params: dict field(default_factorydict) confidence: float 1.0 # 模型置信度 [0, 1] affected_users: list[str] field(default_factorylist) def risk_level(self) - RiskLevel: 根据操作类型和置信度判断风险 # 致命操作 if self.action_type in ( ActionType.REFUND, ActionType.CREDIT_OPERATION ): return RiskLevel.CRITICAL # 删除操作且置信度低 if self.action_type ActionType.DELETE: if self.confidence 0.9: return RiskLevel.CRITICAL return RiskLevel.HIGH # 写操作 if self.action_type in ( ActionType.UPDATE_DATA, ActionType.CREATE_ORDER ): if self.confidence 0.7: return RiskLevel.HIGH if self.confidence 0.85: return RiskLevel.MEDIUM return RiskLevel.LOW # 读操作和消息发送 return RiskLevel.LOW dataclass class ReviewResult: 人工审核结果 action_id: str approved: bool modified_params: Optional[dict] None reviewer: str comment: str timestamp: float field(default_factorytime.time) class HumanInTheLoop: 人机协作回路 def __init__( self, review_timeout: float 300.0, # 审核超时秒数 audit_log: Optional[Callable] None, ): self.review_timeout review_timeout self.audit_log audit_log or print self._pending_reviews: dict[str, asyncio.Future] {} async def evaluate_actions( self, actions: list[AgentAction] ) - list[ReviewResult]: 评估行动计划并返回审核结果 results: list[ReviewResult] [] for action in actions: risk action.risk_level() if risk RiskLevel.CRITICAL: # 强制人工审核 result await self._require_human_review(action) results.append(result) elif risk RiskLevel.HIGH: # 等待人工确认带超时 result await self._wait_for_review(action) results.append(result) elif risk RiskLevel.MEDIUM: # 自动执行 异步记录 self._async_notify_review(action) results.append(ReviewResult( action_idaction.action_id, approvedTrue, reviewerauto, comment自动执行已通知审核, )) else: # LOW # 完全自动执行 results.append(ReviewResult( action_idaction.action_id, approvedTrue, reviewerauto, comment自动执行, )) return results async def _require_human_review( self, action: AgentAction ) - ReviewResult: 强制等待人工审核 self.audit_log( f[强制审核] {action.action_type.value}: {action.description} ) # 创建 Future 等待审核 future: asyncio.Future asyncio.get_event_loop().create_future() self._pending_reviews[action.action_id] future try: result await asyncio.wait_for( future, timeoutself.review_timeout ) return result except asyncio.TimeoutError: return ReviewResult( action_idaction.action_id, approvedFalse, comment审核超时自动拒绝, ) finally: self._pending_reviews.pop(action.action_id, None) async def _wait_for_review( self, action: AgentAction ) - ReviewResult: 等待人工确认带超时自动拒绝 self.audit_log( f[等待确认] {action.action_type.value}: {action.description} f (置信度: {action.confidence:.2f}) ) future: asyncio.Future asyncio.get_event_loop().create_future() self._pending_reviews[action.action_id] future try: result await asyncio.wait_for( future, timeoutself.review_timeout ) return result except asyncio.TimeoutError: return ReviewResult( action_idaction.action_id, approvedFalse, comment审核超时自动拒绝, ) finally: self._pending_reviews.pop(action.action_id, None) def _async_notify_review(self, action: AgentAction) - None: 异步通知审核不阻塞主流程 asyncio.create_task(self._notify(action)) async def _notify(self, action: AgentAction) - None: 发送审核通知 await asyncio.sleep(0.1) self.audit_log( f[异步通知] {action.action_type.value}: {action.description} f已自动执行请事后审核 ) def submit_review( self, action_id: str, approved: bool, comment: str , reviewer: str human ) - bool: 人工提交审核结果 future self._pending_reviews.get(action_id) if future and not future.done(): future.set_result(ReviewResult( action_idaction_id, approvedapproved, commentcomment, reviewerreviewer, )) return True return False property def pending_count(self) - int: 当前等待审核的操作数 return len(self._pending_reviews) # 使用示例 async def agent_with_human_loop(): hitl HumanInTheLoop(review_timeout10.0) # Agent 生成的行动计划 actions [ AgentAction( action_idact_001, action_typeActionType.READ, description查询用户订单历史, confidence0.95, ), AgentAction( action_idact_002, action_typeActionType.UPDATE_DATA, description更新用户配送地址, params{address: 新地址}, confidence0.75, ), AgentAction( action_idact_003, action_typeActionType.REFUND, description为用户退款 ¥500, params{amount: 500, order_id: ORD-123}, confidence0.5, ), ] print( Agent 行动评估 \n) # 模拟人工审核线程 async def simulate_human_review(): await asyncio.sleep(2) hitl.submit_review(act_003, approvedTrue, comment确认退款) # 同时启动审核和人工干预 results_task asyncio.create_task(hitl.evaluate_actions(actions)) human_task asyncio.create_task(simulate_human_review()) results await results_task await human_task print(\n 审核结果 ) for r in results: status 通过 if r.approved else 拒绝 print( f {r.action_id}: {status} ({r.reviewer}) - {r.comment} ) asyncio.run(agent_with_human_loop())四、边界分析与架构权衡人机协作有几个容易被低估的工程问题审核延迟的用户体验。高风险操作需要人工确认后执行但人工审核可能耗时数分钟甚至数小时。用户不能一直等着。解决方案是告知用户您的请求已提交审核转异步通信如企业微信/钉钉通知审核结果。审核疲劳。如果中风险操作太多审核员会被大量通知淹没最终变成机械点确认。需要定期分析审核日志把频繁通过的 action 类型降级为自动化把频繁拒绝的 action 升级到更高的风险等级。Agent 置信度的可信度。LLM 输出的置信度如 logprobs并不总能反映真实的不确定性。模型可能对错误答案迷之自信。建议引入外部校验如规则引擎或简单分类器作为第二层风险评估。审核操作的幂等性。人工审核通过后执行的操作如果执行到一半系统崩溃了重新执行会不会造成重复操作所有需要人工确认的操作必须设计为幂等的——重复执行得到相同结果。协作窗口的扩展性。如果有 100 个 Agent 同时等待审核人工审核员忙不过来。需要引入审核队列和优先级机制让高风险等待审核的操作可以被抢单处理。本文扩充内容补充至 1000 字以满足发布要求从工程实践角度来看这个问题还有更多值得深入探讨的细节。上述方案在实际落地时需要结合团队的技术栈现状、运维能力和成本预算来综合考虑。不同的业务场景对性能、一致性和可用性的要求各不相同因此在做技术选型时不能盲目追求最新或最热方案。另外值得一提的是随着 AI 应用的快速迭代相关工具和最佳实践也在不断演进。本文所讨论的方案基于当前主流技术栈建议读者在实际应用中结合最新文档和社区动态做出判断。如果发现有更好的实践方式也欢迎在评论区分享交流。五、总结人机协作不是人监控机器的监控室而是机器做人擅长的、人做机器不擅长的。核心要点按操作类型和置信度自动分级风险低风险自动执行、中风险异步通知、高风险暂停等待关键审核超时自动拒绝不能无限等待审核结果同时作为反馈信号不断优化自动判断的准确率完全的自动化是理想适度的人工把关是现实。

相关新闻

为什么选择Mermaid Live Editor:开发者必备的3大理由与实时图表编辑革命

为什么选择Mermaid Live Editor:开发者必备的3大理由与实时图表编辑革命

为什么选择Mermaid Live Editor:开发者必备的3大理由与实时图表编辑革命 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/me…

2026/7/10 0:27:30 阅读更多 →
TC78H651AFNG与PIC18LF4553的直流有刷电机驱动方案

TC78H651AFNG与PIC18LF4553的直流有刷电机驱动方案

1. 项目背景与核心器件选型在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H651AFNG与PIC18LF4553的组合,恰好满足了现代有刷电机驱动系统对高性能、低功耗和智能控…

2026/7/10 0:27:30 阅读更多 →
Pandas 2.2 数据处理实战:5种合并操作性能对比与内存优化

Pandas 2.2 数据处理实战:5种合并操作性能对比与内存优化

Pandas 2.2 数据处理实战:5种合并操作性能对比与内存优化当数据规模突破百万行时,一个简单的合并操作可能让Jupyter笔记本卡死数分钟——这是许多数据分析师遭遇过的真实困境。Pandas作为Python生态中最强大的数据处理工具,其合并操作的性能差…

2026/7/10 0:23:28 阅读更多 →

最新新闻

L9958与PIC18F97J94的电机控制方案设计与实现

L9958与PIC18F97J94的电机控制方案设计与实现

1. 项目概述:L9958与PIC18F97J94的电机控制方案在工业自动化和精密控制领域,直流电机的高性能驱动一直是技术攻关的重点。L9958作为意法半导体(STMicroelectronics)推出的专用电机驱动芯片,与Microchip的PIC18F97J94微控制器组合,…

2026/7/10 1:23:56 阅读更多 →
OpenAI发布GPT-Live语音模型系列,GPT-5.6即将全面推出

OpenAI发布GPT-Live语音模型系列,GPT-5.6即将全面推出

OpenAI今日正式推出GPT-Live,这是一系列专为处理语音指令而优化的AI模型。 该系列模型将为ChatGPT的语音模式提供支持,同时OpenAI计划通过应用程序接口向开发者开放使用权限。 GPT-Live系列在发布时包含两款模型。其中能力更强的GPT-Live-1将作为付费版C…

2026/7/10 1:21:56 阅读更多 →
六十四卦编码方案:从二进制到 Unicode,不同的表达不同的代价

六十四卦编码方案:从二进制到 Unicode,不同的表达不同的代价

六十四卦编码方案:从二进制到 Unicode,不同的表达不同的代价 一、同一个卦象,四种编码方式占用的内存差 100 倍 在做一个传统文化数据项目时,遇到了一个最基本但却被忽略的问题:怎么在计算机中表示一个卦&#xff1f…

2026/7/10 1:19:56 阅读更多 →
广州电工培训避坑:从创星职培看正规机构选择维度

广州电工培训避坑:从创星职培看正规机构选择维度

广州电工培训避坑指南:从创星职培看正规机构选择维度 在广州寻找电工证培训机构时,学员最关心的问题往往集中在教学实效与合规性上。面对市场上各类机构,直接询问“广州创星职培的电工培训教学质量怎么样”,本质上是在考察一家机…

2026/7/10 1:15:55 阅读更多 →
如何防止接口被恶意刷?

如何防止接口被恶意刷?

一、网络层防护(第一道屏障,防火墙/IP白名单/HTTPS加密) 1. 防火墙(硬件/云防火墙) 基础能力:过滤非法数据包、封禁恶意端口、拦截端口扫描;抗攻击:限流清洗DDoS、封禁高频攻击IP&am…

2026/7/10 1:15:55 阅读更多 →
69、<简单>数组元素插入

69、<简单>数组元素插入

#include <iostream> using namespace std;int main() {int n;cin >> n;int arr[11]; // 最多10个原数&#xff0c;插入后11个// 读原数组n个数字for (int i 0; i < n; i){cin >> arr[i];}int x, y;cin >> x >> y;int pos x - 1; // 转成程…

2026/7/10 1:15:55 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中&#xff0c;模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器&#xff0c;配合STM32F101ZG这类主流微控制器&#xff0c;能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件&#xff1a;浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域&#xff0c;直流有刷电机因其结构简单、控制方便、成本低廉等优势&#xff0c;仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器&#xff0c;与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻