新闻详情

新闻详情

首页 / 资讯中心 / 详情

Agent 交互中的人类介入确认机制

发布时间:2026/9/13 5:23:38来源:尧图网络
Agent 交互中的人类介入确认机制
Agent 交互中的人类介入确认机制在构建自主 Agent智能体的工作流时最令人兴奋的是让大模型自主推理、编排工具并一步步解决复杂问题。然而一旦 Agent 具备了操作文件系统、执行 Shell 脚本、调用数据库写接口或触发线上 API 的能力完全无人值守的自动化就变成了一把双刃剑。模型幻觉Hallucination、提示词歧义或意外的循环边界都有可能让 Agent 做出灾难性决策。比如在清理构建缓存时误构造出rm -rf /或者在批量发送邮件时将草稿广播给了全量客户。完全放任是危险的但如果每一步读操作都弹窗询问用户又会让 Agent 失去自动化的实用价值。解决这一矛盾的关键在于构建一套分级受控的人类介入确认机制Human-in-the-Loop, HITL。1. 动作风险分级与拦截模型我们不能把所有工具一视同仁而应在 Agent 核心调度层将工具与具体参数划分为三个安全等级L1 安全操作Safe / Read-Only如文件读取、目录列出、代码语义搜索、HTTP GET 请求。默认无感自动执行。L2 低风险写入Idempotent / Staging如在临时目录创建文件、创建新的 Git 分支。默认自动执行并在终端输出明细日志。L3 高风险动作Destructive / High-Impact如文件删除、代码全量覆写、执行 Shell 脚本、修改数据库记录、发送外部网络请求。必须暂停 ReAct 循环向用户呈现精准的意图与影响范围等待显式确认Y/n。------------------------------------------------------------- | LLM ReAct 循环 | | [ 思考 Thought ] - [ 产生工具调用 Tool Call: rm -rf ] | ------------------------------------------------------------ | v ------------------------------- | 安全拦截器 (Safety Guard) | | 判定动作等级: L3 (高危操作) | ------------------------------ | ---------------------------------- | | v v [ 终端交互: 挂起循环 ] [ 自动化模式 / CI ] [ 输出风险详情与命令 ] [ 策略: 默认阻断或退出 ] [ 等待用户键入 Y / n ] | --------- 用户输入 y - 执行真实工具 - 返回结果至 LLM | --------- 用户输入 n - 抛出取消异常 - 告知 LLM 重规划2. 交互式拦截器的轻量实现在轻量级 Agent 架构中无需引入笨重的状态机引擎。通过一个简单的中间件或拦截器包装就能在 Node.js 终端中实现确定性的人机交互确认。// src/agent/human-interceptor.ts import * as readline from readline; export enum RiskLevel { L1_SAFE L1_SAFE, L2_LOW L2_LOW, L3_HIGH L3_HIGH } export interface ToolCallPayload { toolName: string; arguments: Recordstring, any; riskLevel: RiskLevel; summary: string; } // 终端交互提示函数 async function askUserConfirmation(message: string): Promiseboolean { const rl readline.createInterface({ input: process.stdin, output: process.stdout }); return new Promise((resolve) { rl.question(\x1b[33m[安全警告]\x1b[0m ${message} (y/N): , (answer) { rl.close(); const normalized answer.trim().toLowerCase(); resolve(normalized y || normalized yes); }); }); } // 风险评估器 export function evaluateRisk(toolName: string, args: Recordstring, any): { level: RiskLevel; summary: string } { if (toolName execute_command) { const cmd (args.command || ).trim(); // 命中危险命令黑名单 if (/rm\s-rf|dd\s|mkfs|chmod\s-R\s777|drop\stable/i.test(cmd)) { return { level: RiskLevel.L3_HIGH, summary: 准备在宿主机执行高危终端命令: \x1b[31m${cmd}\x1b[0m }; } return { level: RiskLevel.L3_HIGH, summary: 准备执行 Shell 命令: \x1b[36m${cmd}\x1b[0m }; } if (toolName delete_file) { return { level: RiskLevel.L3_HIGH, summary: 准备永久删除文件: \x1b[31m${args.filePath}\x1b[0m }; } if (toolName write_file) { return { level: RiskLevel.L2_LOW, summary: 准备写入/更新文件: ${args.filePath} }; } return { level: RiskLevel.L1_SAFE, summary: 只读操作: ${toolName} }; }3. 与 ReAct 循环的无缝集成在 Agent 执行具体工具之前拦截器作为守门人。如果用户拒绝执行Agent 不会直接崩溃而是将“用户拒绝该操作”作为观测结果Observation喂回给 LLM引导模型反思并提出替代方案。// src/agent/react-runner.ts import { evaluateRisk, RiskLevel, askUserConfirmation } from ./human-interceptor; export async function dispatchToolCall(toolName: string, args: any, toolsRegistry: Mapstring, Function) { const { level, summary } evaluateRisk(toolName, args); // L3 级别触发人工确认 if (level RiskLevel.L3_HIGH) { console.log(\n\x1b[33m⚠️ Agent 申请执行高风险动作:\x1b[0m); console.log( 动作描述: ${summary}); console.log( 参数详情: ${JSON.stringify(args, null, 2)}); const approved await askUserConfirmation(是否授权 Agent 执行此操作); if (!approved) { console.log(\x1b[31m[已拦截]\x1b[0m 用户明确拒绝了该高危操作。); // 返回结构化消息让大模型知道被拒绝的原因 return { success: false, error: USER_REJECTED: 用户拒绝了该高风险操作。请尝试寻找更安全的替代方案或者向用户解释原因。 }; } } // 执行真实工具 const toolFn toolsRegistry.get(toolName); if (!toolFn) { throw new Error(未注册的工具: ${toolName}); } return await toolFn(args); }4. 边界处理与生产建议在落地人类介入机制时有几个关键工程细节需要注意CI/CD 与无头Headless环境适配在自动化测试或 GitHub Actions 中标准输入process.stdin是不可交互的。必须提供全局标志如--dangerously-skip-permissions或--dry-run。在无头环境下遇到 L3 高危操作应默认直接抛出异常阻断严禁在无交互能力时静默放行。拒绝反馈闭环Negative Feedback Loop当用户在终端敲下N拒绝时返回给 LLM 的错误提示语至关重要。不要仅仅返回Error: cancelled而应明确告知模型“用户认为此动作存在风险”。经过微调和 System Prompt 引导的模型在此情况下会主动向用户解释意图或降级使用只读脚本生成补丁文件供人工审查。差异高亮Diff Visualizer对于覆写代码文件的操作不要只打印路径最好使用diff库输出直观的红绿字符变更。开发者一眼就能识别出 Agent 是否误删了重要业务逻辑将审核时间控制在 2 秒以内。人类介入确认机制并不是对 AI 能力的不信任而是将 AI 从“不可控的黑盒代码执行者”转变为“受到严格安全边界约束的结对编程助手”的核心枢纽。用极简的终端交互拦截高危动作才能让 Agent 真正稳定地在生产环境中扎根。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Flipper Zero Unleashed 固件开发板快速上手:从启用调试模式到 USB / Wi-Fi 连接实战 2026/9/13 6:05:40

Flipper Zero Unleashed 固件开发板快速上手:从启用调试模式到 USB / Wi-Fi 连接实战

Flipper Zero Unleashed 固件开发板快速上手:从启用调试模式到 USB / Wi-Fi 连接实战 【免费下载链接】unleashed-firmware Flipper Zero Unleashed Firmware 项目地址: https://gitcode.com/GitHub_Trending/un/unleashed-firmware 本指南以 Flipper Zero Wi…

阅读更多 →
CodexBar Qwen Cloud 浏览器 Cookie 导入修复实证:从 Chrome-only 到 Chrome + Brave 的完整验证流程 2026/9/13 6:05:40

CodexBar Qwen Cloud 浏览器 Cookie 导入修复实证:从 Chrome-only 到 Chrome + Brave 的完整验证流程

CodexBar Qwen Cloud 浏览器 Cookie 导入修复实证:从 Chrome-only 到 Chrome Brave 的完整验证流程 【免费下载链接】CodexBar Show usage stats for OpenAI Codex and Claude Code, without having to login. 项目地址: https://gitcode.com/GitHub_Trending/co…

阅读更多 →
Pallas引擎:优化AIGC对话系统的动态注意力与分层记忆技术 2026/9/13 6:05:40

Pallas引擎:优化AIGC对话系统的动态注意力与分层记忆技术

1. Pallas引擎的技术定位与核心价值 在AIGC技术爆发的2023年,对话系统的性能瓶颈日益凸显。传统基于Transformer的架构在处理长对话时普遍存在响应延迟高、上下文遗忘等问题。Pallas引擎的诞生,正是为了解决这些行业痛点。 这个由比话降AI团队自主研发的…

阅读更多 →
开源笔记 Joplin 3.7.16 上手:安装、多端同步配置与笔记整理实践 2026/9/13 6:05:40

开源笔记 Joplin 3.7.16 上手:安装、多端同步配置与笔记整理实践

开源笔记 Joplin 3.7.16 上手:安装、多端同步配置与笔记整理实践 笔记软件选型里,Joplin 是「数据完全归自己」的代表:开源(AGPL-3.0)、Markdown 存储、支持 WebDAV/OneDrive/S3 等多种同步后端,换软件时数…

阅读更多 →
四大开源OCR引擎技术架构与性能对比解析 2026/9/13 6:05:40

四大开源OCR引擎技术架构与性能对比解析

1. 四大OCR引擎技术架构解析 2023年开源OCR领域迎来重大技术突破,MinerU 2.5、DeepSeek-OCR 2、HunyuanOCR和PaddleOCR-VL-1.5这四款引擎在架构设计上呈现出明显差异化特征。作为长期从事文档智能处理的从业者,我将从技术实现角度剖析各方案的核心设计理…

阅读更多 →
Vant Steps 步骤条组件完全指南:状态机制、自定义样式与源码级实现解析 2026/9/13 6:02:40

Vant Steps 步骤条组件完全指南:状态机制、自定义样式与源码级实现解析

Vant Steps 步骤条组件完全指南:状态机制、自定义样式与源码级实现解析 【免费下载链接】vant A lightweight, customizable Vue UI library for mobile web apps. 项目地址: https://gitcode.com/GitHub_Trending/va/vant Steps 是 Vant 移动端组件库中用于…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞