从瞎蒙乱猜到先问再分——Agent 决策层的两次进化

从瞎蒙乱猜到先问再分——Agent 决策层的两次进化 从瞎蒙乱猜到先问再分——Agent 决策层的两次进化今天讲两件事不懂就问问了再分一、一个让我很尴尬的瞬间事情是这样的。前几天我在 REPL 里跟 Agent 说“帮我弄一下。”然后 Agent 沉默了 3 秒说“好的我帮你把工作区的文件都列出来。”我我还没说我要干嘛呢你“弄”什么啊它直接理解为“列文件”了——我也不知道它为什么这么理解可能因为“弄”在之前的对话里出现过一次它就默认了同一个意图。更尴尬的是它直接开始执行了然后列了一堆文件出来。我根本没想列文件。它不问它猜它干了然后错了。这感觉就像你走进一家餐厅服务员问都没问直接给你上了一盘菜然后说“我猜你想吃这个”。我说的是“随便来个菜”那你可以帮我推荐。但我说的是“帮我弄一下”——信息远远不够你应该先问我“弄什么”。所以今天这个更新核心解决两个问题信息不够时先问清楚别瞎猜。澄清门禁信息够了之后先分类任务类型再决定怎么做。任务拆解两条一起上Agent 从“瞎蒙乱撞”变成了“先问清楚再分类处理”。二、先解释概念2.1 什么是“澄清门禁”概念解释澄清门禁就是一道“安检门”——Agent 在进入“执行阶段”之前必须先检查信息够不够。不够的话门不开先追问。就像你去医院看病医生不会直接给你开药。他会先问“哪里不舒服多久了有没有过敏史”信息齐了才开药。Agent 也一样用户话 → 安检门 → 信息够吗 ↓ 不够 → 追问 ↓ 够了 → 放行 ↓ 进入任务拆解 → 执行2.2 什么是“结构化任务拆解”概念解释任务拆解就是把用户需求“分门别类”——它是闲聊是数据预览是数据导出还是需要先出方案的复杂任务不同的类别执行方式不一样任务类型举例怎么执行闲聊“你好”直接聊不进工具环数据预览“看看这个 Excel 有多少行”静默执行直接出结果数据导出“把文件列表导出成 Excel”简短告知再执行复杂计划“分析这个数据并按城市汇总”先出方案确认后再执行先分好类再选对方式。这是任务拆解的核心。三、澄清门禁不懂就问3.1 四类场景澄清门禁用一个简单的状态机把用户话分成四类状态意思Agent 行为chat纯闲聊直接聊不进数据工具不套报告模板unknown意图不明强制追问“您想让我做什么”clarify缺信息追问具体缺失的信息act信息够了放行进入执行用户话 → 是闲聊吗 → 是 → chat轻路径 → 意图清楚吗 → 不清楚 → unknown强制追问 → 缺槽位文件/条件/列名吗 → 缺 → clarify追问 → 都齐了 → act放行执行3.2 置信度机制还有一个聪明的设计置信度阈值。当 Agent 对用户意图的理解不是 100% 确定时比如置信度低于 0.55它会先“复述”一遍自己的理解然后等你确认再执行。用户“帮我筛一下那个文件。” Agent 会这样回复 “我理解你想对某个文件做筛选操作。请确认 - 文件路径是 examples/sample_data.xlsx 吗我默认用了最近的 - 筛选条件是什么 确认后回复‘继续’我会立刻执行。”用户可以纠正“不是这个文件是另一个。”Agent 收到纠正后更新信息再等确认。确认是什么就是用户说“继续 / 好的 / 可以”——这些词在澄清阶段时会自动触发执行。3.3 一个完整的澄清例子用户“帮我弄一下。” Agent“您想让我做什么比如分析数据、导出文件、筛选表格、还是其他” 用户“筛选一下 POI 数据。” Agent“好的请告诉我要筛选哪个文件、筛选条件是什么。” 用户“筛选 上海_poi.xlsx地址不为空。” Agent“收到。请确认文件是 上海_poi.xlsx条件是地址列不为空。确认请回复‘继续’。” 用户“继续。” Agent[开始执行]三层确认层层把关绝不瞎猜。四、任务拆解分完类再动手信息够了之后任务拆解接棒。它的工作是把用户需求拆成结构化的任务匹配内置模式决定怎么执行。4.1 内置模式有哪些模式什么时候用默认执行方式chat闲聊none不进工具环clarify缺信息none不进工具环profile预览表格silent静默执行export_list导出文件清单silent静默执行export_data导出数据soft先简短说再做transform筛选/汇总/清洗soft先简短说再做explore未命中的工具任务soft可用规划器补充步骤plan_review只要方案 / 需要确认hard先出方案等确认4.2 什么是“执行档位”这是任务拆解里最重要的一组概念——执行档位档位含义用户看到什么silent直接做不多说直接出结果soft简短告知再做“准备做 xxx……” 结果hard先出方案等确认完整方案卡片 等待用户确认区别在哪silent用户说“帮我看看这个文件有多少行”直接出结果不用等。soft用户说“把这个文件按城市汇总”先说一句“准备按城市汇总”然后执行。hard用户说“帮我全面分析这个数据”先出方案用户确认后再执行。这跟之前讲的 Plan 模式是什么关系hard对应 Plan 模式的“先出方案再执行”需要用户确认soft对应“简短说一下就执行”用户没机会纠正但至少知道在干嘛silent对应“全自动执行”适合简单可逆的任务4.3 选模优先级可解释选模不是黑盒有明确的优先级闲聊 → 澄清 → 需要确认的计划 → 导出清单 → 预览表格 → 导出数据 → 数据变换 → 探索兜底 → 闲聊回退为什么这个顺序闲聊和澄清最优先因为它们根本不该进工具环需要确认的计划次优先因为它需要用户确认不能轻易跳过然后是各种数据任务按“从简单到复杂”排列探索兜底处理未命中的情况这个优先级是可以解释的——每一层的选择都有理由。4.4 输出什么任务拆解会输出一个结构化的结果{mode:transform,modeReason:匹配数据配方: 筛选导出,planStyle:soft,planStyleReason:涉及导出先简短告知,steps:[{step:1,action:预览数据,toolHint:profile_dataset,doneWhen:获取列信息},{step:2,action:筛选行,toolHint:filter_rows,doneWhen:筛选完成},{step:3,action:导出 CSV,toolHint:write_csv,doneWhen:导出成功}],goalSummary:按城市筛选 POI 数据并导出}这个结构会注入上下文构造层模型看到了就知道你是transform模式筛选/汇总用soft档位简短告知再执行步骤有 3 步每一步用什么工具、怎么算完成模型不用自己猜了系统已经告诉它了。五、完整链路从用户话到执行两条合在一起流程是这样的用户话 ↓ ① 澄清门禁 ├── 闲聊 → 不进工具环 ├── 意图不明 → 追问 ├── 缺信息 → 追问 ├── 确认信息够了→ 放行 └── 低置信度 → 复述 等确认 ↓ ② 任务拆解 ├── 匹配模式闲聊/澄清/预览/导出/变换/... ├── 确定档位静默/简短/确认 ├── 生成步骤每步带工具提示 完成标准 └── 注入上下文构造层 ↓ ③ 执行工具引擎 ├── 任务状态追踪器 跟踪完成度 ├── 观察事实收集器 收集事实 └── 最终回答用户感知的变化以前说了句话Agent 直接开干干了错事现在先问清楚 → 分好类 → 再干活六、和之前功能的关系之前的功能和这次的关系Plan 模式任务拆解负责决定是不是“需要确认”档位是否触发 PlanPlan 负责执行确认流程意图规划器任务拆解是意图规划器的“上层”——它先分类决定是否用意图规划器数据配方是任务拆解选模的依据之一匹配到配方 → 对应模式任务状态追踪器任务拆解生成步骤带“完成标准”追踪器按步骤检查对话状态澄清门禁用对话状态做判断澄清门禁和任务拆解是整个决策流程的“前两层”之后的所有功能都在它们后面澄清门禁 → 任务拆解 → 上下文构造 → 工具引擎 → 任务状态追踪 → 回答七、验证一下 /forget 帮我弄一下预期澄清门禁检测到“意图不明” → 强制追问“您想让我做什么”不会直接进工具环 分析 examples/sample_data.xlsx预期澄清门禁信息够了 → 放行任务拆解匹配“预览表格” → “静默执行” → 直接执行 帮我全面分析这个数据按城市汇总并导出预期澄清门禁信息够了 → 放行任务拆解匹配“数据变换” → “简短告知”或“需要确认”取决于方案复杂度先简短告知再执行八、以前 vs 现在以前用户“帮我弄一下” Agent“好的列出工作区文件...” [直接执行错误]现在用户“帮我弄一下” Agent“您想让我做什么比如分析数据、导出文件、筛选表格、还是其他” [主动追问] 用户“筛选 POI 数据” Agent“请告诉我要筛选哪个文件、筛选条件是什么。” [追问细节] 用户“上海_poi.xlsx地址不为空” Agent“收到。请确认文件 上海_poi.xlsx条件 地址不为空。回复‘继续’执行。” [复述等确认] 用户“继续” Agent调用筛选工具 → 完成 → 输出结果多花了三次交互但做对了一件事。如果让 Agent 猜它可能猜错浪费时间更多。