Ambig-SWE: Interactive Agents to Overcome Underspecificity in Software Engineering¶
会议: ICLR 2026
arXiv: 2502.13069
代码: https://github.com/sani903/InteractiveSWEAgents
领域: AI安全
关键词: underspecification, interactive agent, SWE-Bench, clarification, software engineering
一句话总结¶
构建 Ambig-SWE(基于 SWE-Bench Verified 的欠指定变体),系统评估 LLM 编程 agent 在三个维度上的交互能力——检测欠指定、提出澄清问题、利用交互信息——发现交互可将欠指定场景下的解决率提升最高 74%,但模型默认非交互行为且难以区分指定充分/不足的指令。
研究背景与动机¶
- 领域现状:LLM agent 在软件工程中被广泛部署(如 SWE-Bench 上的 OpenHands),但用户指令经常欠指定。人类开发者遇到信息不足时会主动询问,而 AI agent 则直接假设并继续执行。
- 现有痛点:(1) 欠指定指令导致错误输出、安全风险和计算资源浪费;(2) 现有关于欠指定的研究只关注缺少单一细节,而真实软件工程任务涉及多个相互依赖的信息缺口;(3) LLM 默认非交互行为——即使面对严重信息不足也不会主动询问。
- 核心矛盾:交互能有效恢复因欠指定损失的性能(最高 74%),但模型不知道什么时候该交互、该问什么、如何利用获得的信息。
- 本文要解决什么? 系统评估和量化 LLM agent 处理欠指定指令的能力,分解为可独立改进的原子能力。
- 切入角度:在 SWE-Bench Verified 上构建欠指定变体,设计三种评估设置(Full/Hidden/Interaction),用 GPT-4o 模拟用户。
- 核心idea一句话:将欠指定处理分解为"检测-提问-利用"三步,用交互实验量化每步的能力和改进空间。
方法详解¶
整体框架¶
三种评估设置:(1) Full——完整 GitHub issue,不交互;(2) Hidden——欠指定版本(GPT-4o 摘要),不交互;(3) Interaction——欠指定版本,可与持有完整信息的 GPT-4o 代理人交互。在 OpenHands 框架下测试 6 个模型。
关键设计¶
- 三维评估分解:
- RQ1: 交互效果——比较 Hidden vs Interaction vs Full 的解决率,量化交互的恢复能力
- RQ2: 欠指定检测——随机给模型 Full 或 Hidden 输入,看模型是否能区分并选择交互(测准确率/FPR/FNR)
-
RQ3: 问题质量——分析模型提出的澄清问题是否有针对性、是否获取了关键信息
-
用户代理人设计:
- GPT-4o 持有完整 issue,仅回答所持信息中明确存在的内容
- 若被问到超出所持信息的内容,回答"I don't have that information"
-
保守设计——隔离 agent 的信息获取能力,避免代理人幻觉
-
交互鼓励梯度:
- 三级 prompt:Neutral(可以问)→ Moderate(仔细检查信息完整性)→ Strong(提问对成功至关重要)
- 测试模型在不同鼓励强度下的行为变化
损失函数 / 训练策略¶
N/A(评估论文,不训练模型)
实验关键数据¶
主实验(解决率 %)¶
| 模型 | Hidden | Interaction | Full | 恢复率 |
|---|---|---|---|---|
| Claude S4 | 49.0 | 52.4 | 58.8 | 89% |
| Claude S3.5 | 27.3 | 35.0 | 43.8 | ~80% |
| Qwen3 Coder | 45.6 | 53.6 | 59.2 | ~85% |
| Haiku 3.5 | 13.0 | 20.8 | 26.0 | ~80% |
| Deepseek-v2 | 2.0 | 7.2 | 12.2 | 59% |
| Llama 70B | 1.4 | 3.6 | 6.6 | 54% |
欠指定检测(Strong prompt)¶
| 模型 | Accuracy | FPR↓ | FNR↓ |
|---|---|---|---|
| Claude S4 | 0.89 | 0.03 | 0.18 |
| Claude S3.5 | 0.76 | 0.36 | 0.10 |
| Qwen3 Coder | 0.50 | 0.00 | 1.00 |
关键发现¶
- Qwen3 Coder FNR=1.0:即使在 Strong prompt 下也从不主动交互——完全忽略欠指定!遵循固定的 SWE-Bench 解题协议
- 交互最高可提升 74%(Hidden→Interaction),但仍明显低于 Full——说明模型利用交互信息的能力有限
- 信息类型分析:获取导航信息(文件路径)对弱模型帮助最大,对强模型帮助有限(因为它们自己能定位代码)
- 模型规模/编码能力 ≠ 交互能力——Haiku(小模型)的信息利用率与 Sonnet 3.5 相当
- Claude S4 在 Hidden 场景下大量探索代码库弥补信息不足(平均 65 步),交互时增加到 75 步——交互增加了效果但不增加效率
亮点与洞察¶
- "检测-提问-利用"的分解框架:将模糊的"交互能力"分解为可独立评估和改进的原子技能,方法论价值高
- 揭示了训练范式的缺陷:当前模型训练优化任务完成率,不优化"什么时候该问"——导致默认非交互行为
- Qwen3 Coder 的刻板行为:即使收到用户回答的信息也按固定协议重新探索——说明模型不真正理解交互的目的
局限性 / 可改进方向¶
- 欠指定版本由 GPT-4o 生成,可能比真实欠指定用户 issue 更"干净"
- Interaction 设置中代理人是 GPT-4o,不一定反映真实用户行为
- 仅在 SWE-Bench(Python 仓库)上评估,其他语言/领域未覆盖
- 未提出改进模型交互能力的训练方法,仅诊断
相关工作与启发¶
- vs AQuA VQA: AQuA 研究 VLM 对视觉歧义的策略选择,Ambig-SWE 研究编码 agent 对信息缺失的交互能力——不同模态但同一主题(如何处理不确定性)
- vs SWE-Bench: SWE-Bench 假设指令完整,Ambig-SWE 专门测试指令不完整时的行为——更贴近真实场景
- vs ClearVQA: ClearVQA 训练模型"二元选择"(答/问),Ambig-SWE 分解为三步且在复杂软件工程场景中评估
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次系统评估 SWE agent 的交互能力,三步分解框架新颖
- 实验充分度: ⭐⭐⭐⭐⭐ 6 个模型、3 种设置、3 级 prompt、多维分析
- 写作质量: ⭐⭐⭐⭐⭐ 实验设计严谨,分析深入
- 价值: ⭐⭐⭐⭐⭐ 对 agent 交互能力的重要诊断,直接指导未来训练方向