问还是假设?面向编码智能体的不确定性感知主动澄清 Ask or Assume? Uncertainty-Aware Clarification-Seeking in Coding Agents
提出不确定性感知多智能体框架,让 LLM 编码代理像人类开发者一样识别指令缺失并主动提问。
前置知识
外部不确定性(External Uncertainty)
指来源于输入本身的歧义或不完整性,与模型自身的内部不确定性(如参数知识缺乏)相区别。Li et al. (2026b) 形式化地区分了这两类不确定性:内部不确定性来自模型本身的能力边界,而外部不确定性则来自任务输入的不充分描述,例如用户给了一个缺少关键细节的 GitHub issue。
本文的核心研究对象正是外部不确定性——智能体必须识别出『指令没说清楚』,并主动询问用户以消除歧义。理解这个区分对理解为什么需要专门的『Intent Agent』至关重要。
SWE-bench Verified
OpenAI 与 SWE-bench 团队合作推出的人工标注子集,从 12 个流行 Python 仓库中筛选 500 个真实 GitHub issue,要求 LLM 智能体在沙箱中自动定位、修改代码以通过隐藏测试用例。该数据集是当前评估 LLM 真实软件工程能力的核心基准,本文使用的是其『不充分指定变体』——通过 GPT-4o 摘要原始 issue,移除关键细节但保留仓库术语。
本文的实验完全建立在 SWE-bench Verified 的不充分指定变体之上,所有 resolve rate(54.80% 到 72.80% 区间)都是相对于这一基准的相对提升。理解它能帮助读者把握实验场景的真实复杂度。
OpenHands 智能体框架
Wang et al. (2025) 提出的开源通用 AI 软件开发平台,允许 LLM 通过迭代的工具调用在沙箱中浏览代码库、编辑文件、执行 Bash/Python 脚本。本文所有实验都基于 OpenHands,最大 100 轮迭代,与 Vijayvargiya et al. (2026b) 保持一致以便对比。
OpenHands 的多轮工具调用机制是 LLM 智能体完成复杂任务的基础架构,也是本文设计多智能体分离(Main Agent + Intent Agent)的技术前提。
用户模拟器(User Simulator)
一种『oracle』式 LLM 智能体,持有完整信息但被约束只能根据编程代理的提问回答。本文使用 GPT-5.1 作为用户模拟器,它能看到完整 issue 但被规则限制:最多回答 3 次、不得修改测试文件、需提醒代理区分 /testbed 与 /workspace 目录。该方法来源于 τ-bench、SWEE T-RL 等交互式评估协议。
用户模拟器是本文实验的『被试』替代方案,理解其设计有助于认识到实验结论向真实人类开发者推广时的边界。
研究动机
现有 LLM 编码智能体在 SWE-bench Verified 等真实软件工程基准上表现优异,但这些基准提供的是『充分指定』的 issue 描述。而在实际开发中,用户提交的需求常常缺少关键细节——例如省略操作系统配置、具体报错信息或代码片段。当使用不充分指定版本的 SWE-bench Verified 时,Claude Sonnet 4.5 作为标准单智能体的 resolve rate 从 FULL 设置下的 70.80% 骤降到 HIDDEN 设置下的 54.80%(Kimi K2.6 同样从 72.80% 降到 55.40%),说明现有自主执行型智能体在面对不完整指令时会出现严重的能力退化。人类开发者面对类似问题会自然地通过反问澄清,但当前 LLM 智能体大多被优化为单轮自主完成任务,缺乏主动识别信息缺失并发起对话的能力,导致用户意图与执行结果之间存在显著鸿沟。
本文的目标是本文系统评估 LLM 编码智能体在不充分指定任务上主动识别信息缺失并请求澄清的能力,具体目标包括三个层面:第一,量化不同 LLM 在缺乏显式澄清指令时自发提问的能力,对比 Claude Sonnet 4.5 与 Kimi K2.6 两个前沿模型在没有『必须先问』硬编码提示时,实际能识别多少比例的真实信息缺失;第二,设计并验证一个『不确定性感知』的多智能体框架(UA-MULTI),使其能在不依赖硬编码提示的情况下,由专门的 Intent Agent 持续监测执行轨迹,自主决定何时(早/中/晚)提问、问什么、问几次;第三,验证该框架能否在 SWE-bench Verified 不充分指定变体上将 resolve rate 显著拉回到拥有完整信息时的水平,从而弥合用户意图与代理执行之间的差距。最终本文报告 69.40% 的 resolve rate,与 FULL 设置(拥有完整 issue 的自主智能体)无显著差异(Claude p = 0.458)。
与已有工作不同的是,与已有工作相比,本文的独特切入角度是『行为层面的不确定性评估』——既不要求 LLM 输出形式化的概率置信度(如 semantic volume),也不强制要求在轨迹起点进行单次澄清,而是让多智能体持续监测执行过程中的上下文演化,自适应地决定何时(早/中/晚)、问什么、问几次。Vijayvargiya et al. (2026a) 和 Darji and Lutellier (2025) 等先前方法都把提问限制在轨迹最开头,但本文发现相关缺失信息往往只有在对代码库进行初步探索后才会显现,因此多智能体必须在整个执行过程中持续监控。另一个不同点是,本文同时考察了『闭源前沿模型』(Claude Sonnet 4.5)与『开源前沿模型』(Kimi K2.6),并发现后者的校准能力显著弱于前者,揭示了『不确定性感知』不仅需要架构设计,还需要针对性的训练。
核心方法
本文的核心方法论是在 OpenHands 框架上搭建两类『不确定性感知』智能体:UA-SINGLE(单智能体,每轮通过提示工程要求其自我评估不确定性)与 UA-MULTI(多智能体,新增一个专门的 Intent Agent 持续监测状态历史并对是否需要澄清做出二元决策)。两者都使用与 SWE-bench 相同的默认任务提示(即不预先告知 issue 是不充分指定的),完全依赖模型自身对『外部不确定性』的校准来决定是否调用 clarify 工具。评估使用 Vijayvargiya et al. (2026b) 提供的 SWE-bench Verified 不充分指定变体,500 个 GitHub issue 通过 GPT-4o 摘要生成,同时对比三种基线:FULL(完整 issue,不允许交互)、HIDDEN(不充分 issue,不允许交互)、INTERACTIVE(不充分 issue 但提示词里硬编码『先问用户』)。整个评估在沙箱中以最大 100 轮迭代运行,使用 GPT-5.1 模拟用户,最多回答 3 次。
核心创新点在于『将不充分指定检测与代码执行解耦』——在 UA-MULTI 中,Main Agent 专注代码执行(读写文件、运行测试),而 Intent Agent 在每轮分析完整状态历史后输出一个二元决策(needs_clarification: bool),由系统强制 Main Agent 在检测到缺失时必须停下询问用户。这与已有方法的本质区别在于:单智能体(UA-SINGLE)需要自己判断『什么时候该停下问』,但研究发现模型往往在已经执行了大量代码操作之后(Late 阶段 43.9% 的提问集中在末尾)才意识到信息缺失;而 UA-MULTI 通过把『意图感知』作为独立模块持续监控,使得 Claude 4.5 的提问分布更均匀地覆盖 Early(41.8%)和 Mid(43.4%)阶段,模拟了人类开发者在编码过程中随时提问的协作模式。
方法步骤详情
方法的具体执行步骤如下:第一步,实验准备——使用 SWE-bench Verified 500 条 GitHub issue 的不充分指定变体作为输入(原始 issue 保留作为评估金标准),搭建 OpenHands 沙箱环境。第二步,配置后端模型——分别用 Claude Sonnet 4.5 和 Kimi K2.6 作为 LLM 骨干;用户模拟器固定为 GPT-5.1,并加入两条规则补丁:不得修改测试文件、提醒代理 /testbed 与 /workspace 目录差异。第三步,对于 UA-SINGLE,每个轮次在工具调用前插入『不确定性评估』提示,要求模型输出 Ambiguity assessment: ,若为 ambiguous 则调用 clarify 工具。第四步,对于 UA-MULTI,Main Agent 装备标准工具集独立执行代码,Intent Agent 在每轮接收完整状态历史(包括用户消息、Main Agent 动作与观察),通过结构化 JSON 输出 {needs_clarification: true/false, reasons: ...} 决定是否中断执行以询问用户。第五步,用户模拟器根据其持有的完整 issue 回答问题(最多 3 次),随后强制结束对话。第六步,运行隐藏测试集评估 resolve rate,并通过置换检验(permutation test)对比各设置的统计显著性。
技术新颖性
技术新颖性主要体现在三个方面。第一,方法论层面提出『行为层面的不确定性感知』评估范式——不要求模型输出形式化置信度,而是通过其自发提问的频率、时机、针对性来衡量校准能力,这比单纯的 calibration error 指标更能反映实际部署效果。第二,架构层面把 MetaGPT、ChatDev 等多智能体协作范式应用于『意图感知』这一细粒度子任务,证明即使是简单的双智能体分工(执行 vs. 监控)也能显著提升 resolve rate(Claude 从 61.20% 提升到 69.40%,p < 0.001)。第三,分析层面首次系统比较了『闭源 vs 开源』前沿模型的不确定性校准差异——Kimi K2.6 在 UA-MULTI 下的提问率高达 8.71 Q/Task(Claude 仅 3.06),且在中等难度到高难度任务之间没有单调递增(ask rate 从 36.02% 反降到 30.95%),暴露了开源模型在指令遵循与校准上的局限性。
实验结果
核心发现可总结为三点。第一,UA-MULTI 在两个模型上都达到了 69.40% 的 resolve rate,与 FULL 设置(拥有完整 issue 的自主智能体,Claude 70.80%、Kimi 72.80%)无显著差异(Claude p = 0.458, Kimi 接近),证明通过主动澄清可以在不预先获得完整信息的情况下逼近『信息充分』场景的性能。Claude 上的 INTERACTIVE BASELINE 也达到 70.40%,但其代价是几乎在每个任务上都提问(Nask=496/500),而 UA-MULTI 仅在 344 个任务上提问,其干预更具针对性——在提问的任务上 resolve 65.99%,不提问的任务上仍能达到 76.92%。第二,UA-MULTI 的提问时机与任务难度高度校准:Claude 上 UA-MULTI 在『<15 min』与『15 min–1 hour』难度间的 ask rate 提升 9.28%,远高于 UA-SINGLE 的 2.43%;且 UA-MULTI 的提问在轨迹中分布更均匀(Early 41.8% / Mid 43.4% / Late 14.8%),而 INTERACTIVE 几乎全部集中于 Early(97.6%)。第三,Kimi K2.6 的校准显著弱于 Claude——其 UA-MULTI 平均每任务提问 8.71 次(Claude 3.06 次),且查询的字数更短(96.73 tokens vs 171.57),获得的答案也更短(57.06 tokens vs 173.65),表明底层模型能力会显著影响澄清行为的质量。值得注意的是,INTERACTIVE BASELINE 在 Kimi 上仅获得 47.20% resolve rate,低于其 HIDDEN 设置 55.40%,这主要源于 Kimi 在『硬编码提示』下的指令遵循失败——错误地用任务完成工具来提问题。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SWE-bench Verified Resolve Rate (Claude Sonnet 4.5) | Resolve Rate (%) | 69.40% (UA-MULTI) | 54.80% (HIDDEN), 70.40% (INTERACTIVE), 70.80% (FULL) | 相比 HIDDEN 提升 +14.60 pp (p<0.001),与 FULL 相比无显著差异 (p=0.458) |
| SWE-bench Verified Resolve Rate (Kimi K2.6) | Resolve Rate (%) | 69.40% (UA-MULTI) | 55.40% (HIDDEN), 47.20% (INTERACTIVE), 72.80% (FULL) | 相比 HIDDEN 提升 +14.00 pp (p<0.001),但与 FULL 仍有显著差距 (p<0.05) |
| UA-SINGLE 单独评估 (Claude Sonnet 4.5) | Resolve Rate (%) | 61.20% (UA-SINGLE) | 54.80% (HIDDEN) | 提升 +6.40 pp,但显著低于 UA-MULTI (p<0.001) |
| 提问任务上的子集表现 (Claude UA-MULTI) | Resolve Rate (%) on Queried Tasks | 65.99% (Nask=344) | 55.81% (UA-SINGLE), 44.48% (HIDDEN), 66.57% (INTERACTIVE) | 与 INTERACTIVE / FULL 持平 (66.57%),但提问数远少 (344 vs 496) |
| 不提问任务上的子集表现 (Claude UA-MULTI) | Resolve Rate (%) on Non-Queried Tasks | 76.92% (Nnot=156) | 73.08% (UA-SINGLE), 77.56% (HIDDEN), 78.85% (INTERACTIVE) | 与 HIDDEN 接近,证明 UA-MULTI 能正确识别可自行解决的任务而不过度提问 |
| 提问密度(迭代性) | Queries per Task | Claude 3.06 Q/Task, Kimi 8.71 Q/Task | Claude UA-SINGLE 1.84, Kimi UA-SINGLE 1.23; INTERACTIVE 约 1.00 | UA-MULTI 展现更迭代、上下文驱动的提问模式(分布更均匀) |
局限与改进
作者明确承认的主要局限有三点:其一,评估使用 LLM 模拟用户(GPT-5.1)替代真实人类,而 LLM 模拟用户往往过于配合、缺乏真实用户的细微差异(Naous et al., 2026; Seshadri et al., 2026),结论在真实人机交互下可能变化;其二,实验仅使用两个前沿模型(Claude Sonnet 4.5 与 Kimi K2.6),先前研究显示小规模开源模型即使在显式提示下也缺乏校准能力,因此本结论未必能推广到 <70B 参数的模型;其三,多智能体框架带来显著的推理成本(Claude 上 $1748.08 总额,是 FULL 的 2.14 倍,单任务 $3.50),需要权衡开发者生产力提升与算力开销。从读者视角还可补充几个隐含局限:模拟用户最多 3 次回答的限制可能让某些本可成功但需要更多轮次的澄清任务被截断;评估完全基于 SWE-bench Python 仓库,能否推广到 Java/Go 等多语言场景、嵌入式系统、安全关键代码等高风险领域尚未验证;GPT-4o 自动生成的不充分指定变体已被 spot-check 证明『比自然发生的不充分指定更严重』,这放大了任务难度。
独立分析的弱点
独立审视本文可以发现以下几个可改进的弱点。第一个是 Intent Agent 决策粒度过粗——目前只输出 needs_clarification: bool 这种二元判断,无法告知 Main Agent 『具体哪些细节缺失』,这导致每次 Main Agent 收到『需澄清』信号后只能自己重新组织问题,可能造成多轮重复询问。改进方向是让 Intent Agent 同时输出 missing_slots 列表(如 {file_path, error_message, expected_output}),让 Main Agent 可以直接针对槽位提问。第二个弱点是 Kimi K2.6 的过问行为没有得到根本解决,作者实验性地加入『如果用户已表示无法提供更多细节则不再询问』的提示,但仅略微减少提问次数,Kimi 仍把绝大多数任务标记为不充分指定,这说明单一 prompt 调整无法解决开源模型校准问题。改进方向可能是先用 few-shot 演示或基于 RL 的反馈训练,让模型在内部形成『何时该问、何时该执行』的决策边界。第三个弱点是用户模拟器的规则 5、规则 6 是针对 OpenHands 沙箱环境手工定制的硬约束,难以迁移到其他框架——改进方向是建立一个环境无关的『信息缺失检测』schema,让模拟器根据统一的元数据动态给出环境相关提示。第四个弱点是评估的『不充分指定』分布是 GPT-4o 自动生成的,自然不充分 issue 通常保留更多具体技术细节,本文的难度被人为放大,结论的有效性可能比表面看起来更乐观。
未来方向
作者明确提出的未来方向是将 UA-MULTI 的成功轨迹作为监督信号,通过标准微调或强化学习(Sun et al., 2025)让单模型内生地具备校准的澄清能力,摆脱对多智能体推理开销的依赖。基于本文成果还可延伸的研究包括:(1)将不确定性感知范式从 SWE-bench 扩展到多语言、多领域(前端、嵌入式、数据库 schema 迁移),验证是否需要针对领域调整 Intent Agent 提示;(2)探索 Intent Agent 与 Main Agent 之间的『对话结构』——目前是单向二元信号,未来可以让 Intent Agent 主动反问 Main Agent 的中间结果(如『你读到的 X 文件是否就是用户说的 Y?』),实现真正的双向协作;(3)将用户模拟器从 GPT-5.1 升级为人机混合评估,在关键决策点引入真实开发者判断;(4)研究在 Anthropic API 的 tool_use 框架下,是否能让 Intent Agent 的澄清决策对 Main Agent 透明化,从而构造可解释的『决策链』供事后审计;(5)把『外部不确定性』与 Li et al. (2026b) 提出的 semantic volume 形式化度量结合,建立『外部不确定性 + 内部不确定性』的联合校准指标。
复现评估
复现性方面,本文提供较为完善的支撑。代码已在 https://github.com/nedwards99/ask-or-assume 开源,实验基于 OpenHands 公开框架与 SWE-bench Verified 公开数据集;用户模拟器 GPT-5.1 与 Claude Sonnet 4.5 通过 API 调用,不充分指定变体由 CMU LTI 团队发布在 HuggingFace。复现的主要门槛在于:(1)成本——500 任务 × 2 模型 × 5 设置的实验在 Claude API 上总开销约 $5179.75(Table 5 累计),Kimi 上约 $1826.49,对个人研究者不友好;(2)沙箱环境——需要部署 OpenHands 的 docker 沙箱并支持长达 100 轮的迭代执行,单任务耗时可能数十分钟到数小时;(3)评估指标——作者使用非参数置换检验计算 p 值,报告的 resolve rate 略低于官方 OpenHands 结果(Claude 70.80% vs 官方 74.20%,Kimi 72.80% vs 74.60%),可能源于 100 轮上限(而非 500 轮)与 prompt 微小差异,复现者需要遵循附录 C 的完整 prompt;(4)随机性——主实验未报告多次随机种子的均值与方差,单次 resolve rate 的 95% 置信区间已在 Figure 2 标注。综合评估,复现难度为中等偏高,主要瓶颈是 API 成本与计算时间,但因代码、数据、prompt 全部公开,技术层面完全可复现。
论文图表
展示了 SWE-bench 默认任务提示的完整模板,其中粗体高亮部分是 INTERACTIVE BASELINE 专用的额外指令:『I have not provided all the necessary details... Please ask me specific questions using non-code commands... You have a limited number of turns. Do NOT interact with me more than three times』。
理解该图是理解各基线之间差异的关键——INTERACTIVE BASELINE 与 UA-* 的根本区别就在于是否包含这段硬编码的『先问』指令,而 UA-MULTI 完全依赖 Intent Agent 自身判断。
Part A 展示了 UA-SINGLE 每轮插入的『不确定性评估』提示:要求模型在选择工具前先推理,输出『Ambiguity assessment: <clear|ambiguous>』,若为 ambiguous 则调用 clarify 工具。Part B 展示了 UA-MULTI 中 Intent Agent 的完整系统提示,包括 ROLE(理解对话历史、识别歧义)、WORKFLOW(枚举歧义并调用 clarify_decision 工具输出 JSON)和 EXTRA_GUIDELINES(限制 30-50 字推理、识别用户答案格式等)。
这两段 prompt 完整定义了 UA-SINGLE 与 UA-MULTI 的行为差异,是复现实验与未来工作直接借鉴的关键资源。
展示了用户模拟器(GPT-5.1)的完整 prompt:6 条规则——若问题相关则按 issue 信息回答、保持用户人设、回答简洁、最多 3 轮、测试文件已处理不要修改(Rule 5)、提醒 /testbed 与 /workspace 目录差异(Rule 6);无法回答时统一输出『I don't have that information』。
了解用户模拟器的规则设计对评估实验可靠性至关重要——尤其 Rule 5/6 是为适配 OpenHands 沙箱特别加上的补丁,反映了模拟器在多智能体评估中的工程挑战。
通过 pytest-dev__pytest-7324 任务(Python 解释器崩溃 bug)对比三种智能体的实际对话轨迹:INTERACTIVE BASELINE 一次性问 3 个通用问题、UA-SINGLE 一次性问 4 个更具技术性的问题(提到 None/True/False 等具体常量名)、UA-MULTI 不仅在 Turn 1 提出针对性问题,还在 Turn 2 测试失败后进行 mid-stage 跟进澄清。
这是定性分析的核心证据,直观展示 UA-MULTI 如何在轨迹中段根据观察到的测试失败发起二次澄清——这是单智能体方法难以做到的『持续不确定性监控』。
上半部分 pylint-dev__pylint-7080 案例:原始 issue 包含 Windows 10 系统与 src\gen\about.py 反斜杠路径等关键信息,不充分版本去掉了这些导致无法定位;下半部分 scikit-learn__26323 案例:保留了 ColumnTransformer、set_output、remainder 等关键 API 名称,智能体仍可自主定位。
这张图说明不充分指定的『严重程度』存在显著方差——5/10 的样本关键信息被删除导致必须澄清,另 5/10 保留足够信号可自主解决,这与 HIDDEN 基线在 Claude 上能解 5/10 任务的实证表现一致。