近期的研究已经充分证明,大语言模型(LLM)智能体在代码生成方面具备显著的能力。然而,当问题上升到更复杂、更工程化的层面------例如完整的软件工程(Software Engineering, SE)------AI 的探索仍处于起步阶段。
使用语言模型智能体去解决真实的代码 bug 问题的 workflow (Auto Debug Agent),是一个非常大需求的市场,而且是一个非常合适的AI应用场景。
目前国内在这一领域已有探索者,如 通义灵码 与 豆包 MarsCode,而国际上代表性研究包括 SWE-Agent、AutoCodeRover 与 SWE-Swiss。

SWE-Agent:AI 智能体解决软件工程问题的第一步
- 概述
SWE-Agent 是一个使用语言模型智能体自动解决软件工程任务的系统。
它基于 Agent Computer Interface (ACI) ,在计算机与智能体之间建立抽象层,使智能体具备创建、编辑、浏览代码文件和执行程序的能力。
2. ACI 框架设计理念
ACI 框架统一了工具调用、提示工程(prompting)与代码执行。
其高效性主要来自以下几点:
●动作简单:易被 LLM 理解。
●动作高效:重要操作数量少。
●环境反馈清晰:输出简洁却信息量大。
●Guardrails:内置语法检测与自动修复低级错误。
相比传统的人机接口(如 VSCode),ACI 提供了更适合 LLM 的交互方式。
3. 评测与表现
SWE-Agent 在权威评测集 SWE-Bench 上表现出色。
在 2300 条测试数据中,使用 GPT-4 Turbo 模型的准确率达到 12.5%,超越最强无交互检索系统 3.8%,也比 Linux 终端环境提升 10.7%。
Claude-3-Opus 基线表现为 10.5%。
4. 智能体行为机制
SWE-Agent 的行为可分为以下模块:
搜索与导航: 查找文件与目录(find_file、search_file)。

文件浏览: 支持打开文件、上下滑动、跳转行号(open、scroll_up、goto)。

文件编辑: 可精确编辑指定行区间,并使用语法检测器防止错误。

上下文管理: 通过保留简明的历史交互与报错信息,控制上下文窗口大小,提高有效性。

实验表明,编辑动作是任务解决的核心;平均成功案例 12 步完成,失败案例则需 21 步。增加 Token 预算并不能显著提升性能。
5. 提示词结构(Prompt Workflow)
SWE-Agent 的提示工程由四部分组成:
System Prompt: 定义操作环境与命令约束;
vbnet
SETTING:
您是一位自主编程的程序员,正在使用一个特殊的界面直接在命令行中工作。这个特殊的界面包含一个文件编辑器,可以一次显示 100 行文件内容。除了常见的 Bash 命令外,您还可以使用以下命令来导航和编辑文件。
COMMANDS: {documentation}
请注意,EDIT 命令需要正确的缩进。如果您想添加 " print(x)" 这一行,必须完整地写出来,包括代码前的所有空格!缩进非常重要,未正确缩进的代码将运行失败,需要修复后才能运行。
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>) <cwd> $
You need to format your output using two fields; discussion and command. Your output should always include one discussion and one command field EXACTLY as in the following example:
DISCUSSION:
First I'll start by using ls to see what files are in the current directory. Then maybe we can look at some relevant files to see what they look like.
```
ls -a
```
您应该只在命令部分包含一个命令,然后等待 Shell 的响应,然后再继续进行更多讨论和命令。
您在"discussion"部分包含的所有内容都将被保存以供将来参考。如果您想同时执行两个命令,请不要这样做!请先提交第一个命令,然后在收到响应后才能执行第二个命令。
除了上面列出的特殊命令外,您还可以自由使用任何其他您想要的 Bash 命令(例如 find、grep、cat、ls、cd)。但是,该环境不支持交互式会话命令(例如 python、vim),因此请不要调用它们。
Demonstration: 提供操作范例;
typescript
这里有一个如何正确完成此任务的演示。
它旨在向您展示如何正确使用界面,您无需完全按照演示中的方法操作。
--- DEMONSTRATION ---
{{INSTANCE PROMPT}}
代码已更新,使用 `round` 函数,这应该可以修复四舍五入问题。提交更改之前,最好再次运行一下 replicate.py 代码,以确保此更改达到预期效果。我看到 "Current directory" 仍然是 `/marshmallow-code__marshmallow`,所以我们可以直接运行 `reproduce.py`。
```
python reproduce.py
```
345
(Open file: /marshmallow-code__marshmallow/src/marshmallow/fields.py)
(Current directory: /marshmallow-code__marshmallow)
bash-$
输出已从 344 更改为 345,这表明四舍五入问题已修复。我们删除 replicate.py 文件,因为它不再需要了。
```
rm reproduce.py
```
Your command ran successfully and did not produce any output.
(Open file: /marshmallow-code__marshmallow/src/marshmallow/fields.py)
(Current directory: /marshmallow-code__marshmallow)
bash-$
rm 删除成功后没有任何输出,所以肯定成功了。既然问题已经解决,我们应该将更改提交到代码库。让我们使用 `submit` 命令提交更改。
```
submit
```
--- END OF DEMONSTRATION ---
Instance Message: 描述任务与调试目标;
markdown
我们目前正在解决代码库中的以下问题。
以下是问题内容:
ISSUE:
{issue}
INSTRUCTIONS:
现在,您将自行解决这个问题。您的终端会话已启动,并且您位于代码库的根目录中。您可以使用任何 Bash 命令或特殊界面来帮助您。编辑所有需要的文件,并运行任何您想要的检查或测试。
请记住,您一次只能输入一个命令!您应该在执行每个命令后等待反馈。当您对所有更改感到满意时,只需运行提交命令即可将更改提交到代码库。但请注意,您无法在此环境中使用任何交互式会话命令(例如 Python、vim),但您可以编写脚本并运行它们。
例如,您可以编写一个 Python 脚本,然后使用 `python <script_name>.py` 运行它。 关于编辑命令的注意事项:缩进非常重要!编辑文件时,请确保在每行前插入适当的缩进!
IMPORTANT TIPS:
1. 请务必先尝试复现问题中提到的错误。如果问题包含用于复现错误的代码,我们建议您在您的环境中重新实现该代码并运行,以确保您可以复现错误。然后开始尝试修复它。当您认为错误已经修复后,请重新运行错误复现脚本,以确保错误确实已修复。
2. 如果您运行某个命令但不起作用,请尝试运行其他命令。一次不起作用的命令,除非您修改它,否则第二次也不会起作用!
3. 如果您打开一个文件,并且需要转到不在前100行中的特定行(例如第583行)附近的区域,请不要多次使用scroll_down命令。相反,请使用goto583命令。它更快。
4. 如果错误复现脚本需要输入/读取特定文件(例如 buggy-input.png),而您想了解如何输入该文件,请在现有的代码库代码中进行搜索,看看是否有人已经这样做过。执行以下命令:find_file "buggy-input.png"
如果此命令无效,请使用 Linux 的"find"命令。
5. 务必查看当前打开的文件和当前工作目录(紧接着当前打开的文件)。当前打开的文件可能与工作目录位于不同的目录中!请注意,某些命令(例如 "create")会打开文件,因此它们可能会更改当前打开的文件。
6. 编辑文件时,很容易意外指定错误的行号或编写缩进不正确的代码。执行编辑后,请务必检查代码,以确保其反映了您想要实现的目标。如果没有,请执行另一个命令进行修复。
(Open file: {open_file})
(Current directory: {working_dir})
bash-$
Next Step Template: 生成下一步操作模板。
javascript
{OBSERVATION}
(Open file: /path/to/open/file.py)
(Current directory: /path/to/cwd)
bash-$
SWE-Bench:AI4SE 的权威评测集
SWE-Bench 是软件工程领域的标准化评测集,包含真实代码仓与调试任务。

评测集构建背景

数据爬取与过滤筛选

观察到的现象:input 增加,模型 debug 的能力下降
研究发现:随着输入信息量增加,模型的 Debug 能力反而下降,因此需要设计能压缩上下文、提炼结构化信息的智能体,以提升效率与鲁棒性。
AutoCodeRover:结构化调试的自动化智能体
1. 技术要点
AutoCodeRover 通过 AST(抽象语法树) 解析代码结构,并基于文件、类、函数层级组织上下文。
该方法显著减少 LLM 的上下文窗口压力,提高 Debug 精度。
●采用 程序结构检索 与 故障定位 技术;
●0.5~1 小时的调试时间可接受;
●解决了 57 个 GitHub 实际问题,成功率达 2/3;
●平均 4 分钟修复一个问题,而人工平均需 2.68 天。
2. 工作流
从问题描述出发,AutoCodeRover 自动调用相关 API、分析代码、定位 Bug、生成补丁,形成完整闭环。

SWE-Swiss:强化学习驱动的高性能智能体
由字节跳动 Seed 团队提出的 SWE-Swiss,在 AI4SE 领域取得突破。
基于 Qwen2.5-32B-Instruct 模型,结合 多任务微调(SFT)+ 强化学习(RL) ,在 SWE-Bench Verified 上取得 60.2% 的 SOTA 成绩。
1. 三阶段数据构建
●定位阶段: 确定需修改文件;
●修复阶段: 筛选有效补丁;
●验证阶段: 生成并通过单元测试。
总计使用 10,254 个数据样本完成 SFT 训练。
2. 强化学习策略
采用 GRPO 算法,结合 DAPO 中的动态采样与无 KL 损失设计,分两阶段训练:
●第一阶段: 广泛构建通用问题解决能力;
●第二阶段: 聚焦难点数据集,提升修复性能。

最终通过多补丁自一致性评估,将性能从 45.0% 提升至 60.2%。
3. 验证机制与增强自一致性
为解决代码语义等效但非精确匹配的问题,SWE-Swiss 引入增强自一致性机制:
●综合精确匹配与相似度打分;
●通过编辑距离计算候选补丁间相似性;
●采用自洽投票与加权评分选出最优补丁。
这一方法显著提升了最终修复的准确率。
总结与展望
AI4SE(AI for Software Engineering)正在成为大模型落地的关键方向。
从 SWE-Agent 到 AutoCodeRover,再到 SWE-Swiss,我们看到 AI 智能体已经从代码生成逐步进化为能理解、调试、修复与验证的完整开发伙伴。
未来的研究方向包括:
●构建多智能体协同架构;
●在 MoE 模型上提升性能;
●引入更密集的过程奖励信号;
●优化上下文压缩与知识检索。
AI4SE 的边界,正在快速扩展,真正的"自编程"时代或许已在不远的未来。