量子位 07-27
100行代码打造迷你编程Agent:能修复65%真实项目bug,适配所有大模型
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

只用 100 行代码,打造最强轻量编程 agent。

SWE-bench、SWE-agent 原班人马再出手,推出全新开源项目——

mini-SWE-agent

不依赖任何额外插件,仅通过基础命令即可运行。而且对模型没有限制,几乎兼容所有主流语言模型,支持直接在本地终端中部署和使用。

而在如此精简的架构下,仅凭 100 行核心代码轻松解决 SWE-bench 上65%的问题。

这个 65% 是啥水平呢?

也就和原版差不多吧~(关键人家还轻量啊)

网友:厉害

百行代码,实力不打折

SWE-agent 是一个开源项目(16.8k GitHub Star),它的目标是让 agent自动修复 GitHub 上真实项目中的代码 Bug

不过,原版的 SWE-agent 基于 LangChain 构建,从接受 issue、理解问题、编辑代码、到提交 PR,涉及多工具、多轮对话管理,任务流程繁琐。

除此之外,开发者要跑通还需要安装多个依赖,精调工具调用逻辑,而且项目代码动辄上千行,对模型、环境的耦合也比较强。

而随着语言模型性能越来越强大,构建一个有用的代理已经不再需要这些工具和接口了。

由此,团队开始思考:能否让 SWE-agent 小 100 倍,并保持原有的性能。

mini-SWE-agent 由此而来。

那么,相较于 SWE-agent,mini-SWE-agent 有什么不同呢?

极简代码和依赖:mini-SWE-agent 本身仅约 100 行 Python 代码,加上环境、模型、脚本才共约 200 行,没有复杂的依赖关系。

取消工具调用接口:mini 版本不集成专用的代码编辑、搜索等工具;它只使用操作系统的 Bash 环境执行命令。每一步由语言模型输出一个完整的 shell 命令,不通过独立的 "tool call" 协议,从而可兼容任何语言模型。

线性历史记录:agent 的每一步都只是附加到消息中。

独立单步执行:每条命令通过 Python 独立执行,并非保持一个持续的 shell 会话,这使得在沙盒中执行操作变得非常简单,并且可以轻松扩展。

简化配置与接口: 取消了 SWE-agent 依赖的复杂 YAML 配置;mini-swe-agent 采用代码内置模板,并提供直观的命令行工具。用户可以通过 mini 命令快速启动代理,或使用 mini-v 启动可视化界面。

多样的运行环境支持: 除了本地 Shell,mini-swe-agent 还内置支持多种容器与虚拟化环境(如 Docker、Podman、Singularity、Apptainer 等),这意味着开发者可以在不同平台和容器中轻松部署,而无需额外修改代码。

保留高性能和工具:虽然架构极简,mini-swe-agent 在 SWE-bench 验证集上仍能解决约 65% 的问题。同时,它附带批量推理(batchinference)、轨迹浏览器(trajectorybrowser)等工具,帮助用户进行大规模评测和决策分析。代理还提供可视化界面,方便开发者交互式地观察执行过程

此外,对于应在何种场景下使用 SWE-agent 或 mini-SWE-agent,团队也根据不同的需求给出了建议:

mini-swe-agent 更适合希望快速本地运行、追求简洁控制流和更稳定评估环境的用户。它非常轻量,适合用于微调(FT)或强化学习(RL)等实验,不容易陷入对复杂框架的过拟合。

如果你需要高度可配置的工具链、更复杂的历史状态管理,或希望通过修改 YAML 文件自由切换组件而无需动代码,那么功能更丰富的 SWE-agent 会是更合适的选择。

总体而言,mini-swe-agent 体现了可读、方便、易扩展的开发理念。

对于日常开发者而言,它既可以作为简单的命令行工具使用。如在本地终端快速解决问题),也可以作为库被集成到其他 Python 应用中。

相比于重型框架,它降低了上手成本,让开发者可以像使用脚本一样灵活地 " 驾驭 " 智能代理。

One more thing

SWE-bench 和 SWE-agent 是由 John Yang、Carlos E. Jimenez、Alexander Wettig、Kilian Lieret、姚顺雨(OpenAI 研究员,2015 年毕业清华姚班)、Karthik Narasimhan 和 Ofir Press 于 2024 年在普林斯顿大学发起的开源项目。

该项目推动了基于大型语言模型的软件工程代理(Software Engineering Agent)研究。

其中,SWE-bench 一经发布后,就成为了评估大语言模型编程的经典 benchmark,伴随 SWE-agent 一同提出的 Agent ‑ Computer-Interface(ACI)则进一步定义了 " 智能体如何与计算机交互 " 的标准接口方式。

而这一杰出的想法最初仅仅来自一次 20 多分钟的讨论。

在 Matthew Berman 的播客节目上,Carlos E. Jimenez 分享道:SWE-bench 最初的想法源自他和 John Yang 在闲逛时的一次头脑风暴:

他们意识到,GitHub 不只是一个存储代码的地方,更是一个活跃的协作开发平台,充满了真实的软件工程过程:用户报告 bug,开发者提交修复,社区公开审核和合入。

相比传统的编程竞赛,这些交互和修改才是真正代表 " 现实世界编程 " 的任务。于是他们设想,能否把这种开源协作的过程结构化下来,变成一种评估语言模型能力的标准流程?

这便催生了 SWE-bench,一个基于 GitHub 上真实 Issue 与 PullRequest 构建的 benchmark,用来测试 LLM 是否能像人类开发者一样,理解 bug 报告并修复代码。

这个系统不仅更接近现实,也让模型的 " 开发能力 " 变得可观察、可比较,而 SWE-agent 则是他们为这一评估任务设计的开源 agent,目标就是成为能在 SWE-bench 上 " 修最多 bug" 的 AI 程序员。

项目主页:

[ 1 ] https://github.com/SWE-agent/mini-swe-agent

[ 2 ] https://github.com/SWE-agent/mini-swe-agent?tab=readme-ov-file

一键三连「点赞」「转发」「小心心」

欢迎在评论区留下你的想法!

—    —

量子位「AI 100」产品榜单启动招募!

快来提名你心目里的百强产品~

点亮星标

科技前沿进展每日见

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

编程 python mini 开源 界面
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论