CodeScout: Contextual Problem Statement Enhancement for Software Agents

本文提出了 CodeScout,一种通过轻量级预探索将模糊的用户请求转化为包含复现步骤、预期行为及探索提示的综合性问题陈述的上下文查询优化方法,该方法在不修改现有智能体架构的前提下,显著提升了其在 SWEBench-Verified 基准上的代码问题解决率。

Manan Suri, Xiangci Li, Mehdi Shojaie, Songyang Han, Chao-Chun Hsu, Shweta Garg, Aniket Anand Deshmukh, Varun Kumar

发布于 Mon, 09 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 CodeScout(代码侦察兵)的新工具,它的核心任务是帮人工智能(AI)程序员“读懂”任务,而不是盲目地开始干活

我们可以用"修车"和"侦探破案"的比喻来理解它。

1. 核心问题:AI 为什么经常“翻车”?

想象一下,你是一位天才修车师傅(现在的 AI 编程助手),你的技术非常精湛,能修好任何复杂的引擎。

但是,客户(开发者)给你的修车指令却非常模糊:

“师傅,我的车开起来有点怪,好像有点不对劲,你帮我看看。”

没有具体描述:

  • 是刹车响?还是方向盘抖?
  • 是刚换过轮胎后出现的?还是下雨天才这样?
  • 具体是哪款车?

结果会怎样?
这位天才师傅虽然技术好,但他只能盲目地试错

  1. 先拆了轮胎看看(过度探索)。
  2. 发现没坏,又去换机油(重复尝试)。
  3. 换了三个零件还是没修好,最后累得半死,车还是没修好。

在论文中,这种现象被称为"过度探索"(Over-exploration)和"死胡同循环"。AI 因为缺乏上下文,在代码库里乱撞,浪费了大量时间却找不到真正的 Bug。

2. CodeScout 的解决方案:先侦察,后行动

CodeScout 就像是一个经验丰富的“现场侦察兵”。在让那位“天才修车师傅”动手之前,CodeScout 先做三件事:

第一步:快速扫描(构建知识图谱)

CodeScout 不会直接去修车,而是先拿着图纸(代码库结构)快速浏览一遍。它知道车的引擎、轮胎、刹车系统大概在哪里,它们之间是怎么连接的。

第二步:精准定位(上下文分析)

当客户说“车有点怪”时,CodeScout 会结合图纸去分析:

  • “哦,客户提到是刚换了轮胎后出现的,那重点检查轮胎和悬挂系统。”
  • “根据经验,这个型号的车在雨天容易刹车失灵,这可能是个线索。”
  • “这里有个零件是最近刚改过的,嫌疑最大。”

第三步:生成“超级任务卡”(增强问题陈述)

CodeScout 把原本模糊的“车有点怪”,转化成了一张超级详细的维修工单,交给 AI 修车师傅:

任务: 修复刹车异响问题。
线索: 发生在雨天,且最近更换过轮胎(PR #27515)。
重点检查: 悬挂系统的第 3 号螺丝(具体文件路径)。
预期结果: 刹车时不应有金属摩擦声。
避坑指南: 别去动引擎,那是好的。

现在的 AI 修车师傅拿到这张单子后:

  • 直奔第 3 号螺丝。
  • 拧紧螺丝,问题解决了。
  • 只用了 6 步就修好了,而之前盲目尝试用了 21 步还没修好。

3. 这个工具厉害在哪里?

  • 不改变 AI 的大脑:CodeScout 不需要给 AI 换大脑(不需要重新训练模型),它只是给 AI 递了一张更清晰的“地图”。
  • 省钱省力:实验证明,用了 CodeScout 后,AI 解决问题的成功率提高了 20%,而且能多修好 27 个 以前修不好的 Bug。
  • 以小博大:甚至可以用一个比较便宜、简单的 AI 来当“侦察兵”(写任务卡),然后让一个昂贵、强大的 AI 去“修车”。这样既省了钱,又保证了修车质量。

4. 总结

CodeScout 的核心思想是:
在让 AI 动手写代码或修 Bug 之前,先花一点时间把问题想清楚、把背景理清楚

这就好比磨刀不误砍柴工

  • 以前:AI 拿到模糊指令,像无头苍蝇一样乱撞,越撞越远。
  • 现在:CodeScout 先帮 AI 把“模糊的抱怨”翻译成“精准的技术指令”,让 AI 能有的放矢,一击即中。

这篇论文告诉我们,提升 AI 编程能力的关键,不仅仅是让 AI 变得更聪明,更重要的是如何把人类模糊的需求,转化成 AI 能听懂的精准指令。CodeScout 就是那个完美的翻译官和侦察兵。