极简AI编程代理Mini-SWE-Agent:百行代码,65%真实Bug修复率,全模型兼容!

mini-SWE-agent:100行代码解决65%真实项目Bug,兼容所有大模型,极致轻量,性能不减。

原文标题:100行代码打造迷你编程Agent:能修复65%真实项目bug,适配所有大模型

原文作者:数据派THU

冷月清谈:

最近,SWE-bench和SWE-agent的原班人马推出了一个令人瞩目的开源项目——mini-SWE-agent。这款轻量级编程Agent的核心代码仅约100行,但其表现却达到了令人惊叹的水平,能够在SWE-bench基准测试中解决高达65%的真实项目Bug。这不仅追平了原版SWE-agent的性能,更以其极致的精简性,为开发者提供了前所未有的灵活性和便利性。

mini-SWE-agent最显著的特点在于其极简的代码架构和对复杂依赖的摒弃。它不依赖任何额外的插件或工具调用接口,而是通过操作系统自带的Bash环境执行命令,这使得它几乎可以兼容市面上所有主流的大型语言模型,并且可以直接在本地终端中部署和使用。与原版SWE-agent相比,mini版本取消了繁琐的多工具、多轮对话管理,简化了配置流程,采用了线性的历史记录和独立的单步执行方式,大大降低了上手难度和环境耦合度。

尽管架构极简,mini-SWE-agent依然保持了高性能,并且附带了批量推理、轨迹浏览器等实用工具,方便用户进行大规模评测和决策分析。其自带的可视化界面也让开发者能够直观地观察执行过程。官方建议,对于追求快速本地运行、简洁控制流以及稳定评估环境的用户,mini-SWE-agent无疑是更优的选择,尤其适合用于模型微调(FT)或强化学习(RL)等实验,避免了复杂框架带来的过拟合问题。而如果需要高度可配置的工具链或复杂的历史状态管理,原版SWE-agent则更为合适。总而言之,mini-SWE-agent体现了“可读、方便、易扩展”的设计理念,它不仅能作为独立的命令行工具,也能轻松集成到其他Python应用中,极大地降低了AI辅助编程的门槛

值得一提的是,SWE-bench和SWE-agent最初的构想,源于2024年普林斯顿大学团队一次仅20多分钟的讨论。他们将GitHub上真实的Bug报告与修复过程结构化为评估LLM编程能力的基准,这不仅更贴近现实世界的软件工程,也为AI开发能力提供了可量化、可比较的标准。

怜星夜思:

1、文章提到mini-SWE-agent不使用复杂工具调用接口,而是直接通过Bash环境执行命令。这种“纯Bash”交互方式对于AI Agent来说,可能带来哪些显著的优势和潜在的风险?大家怎么看这种设计思路?
2、mini-SWE-agent证明了即便使用百行代码这种“极简”方案,AI也能解决65%的真实项目Bug。这对于我们未来的软件开发模式,以及人类开发者的角色,会产生怎样的影响?大家觉得这是解放还是挑战?
3、SWE-bench和SWE-agent的想法,最初竟然只源于一次“20多分钟的讨论”。这种看似“不经意”的头脑风暴,最终能孵化出改变行业基准的重大项目。这对我们日常的工作和创新有什么启发?

原文内容

图片
本文经AI新媒体量子位(公众号ID:qbitai )授权转载,转载请联系出处
本文约2000字,建议阅读5分钟
只用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

编辑:文婧



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU


这简直是“卷”到了极致!百行代码就解决65%的Bug,那以后是不是我每天的任务就是给AI喂Bug,然后它帮我修?感觉就像是,之前你是厨师,现在你变成了“料理包”的QA。这对我这样的普通码农来说,是机会也是危机。机会是,那些枯燥乏味的Bug可能不用我熬夜了;危机是,如果我不能提供AI无法替代的价值,比如对业务的深刻理解、对复杂架构的把控、甚至是那种“灵光一闪”的创新,那我岂不是要失业?也许以后面试问的不是你会不会写代码,而是“请描述你如何优雅地使用AI来解决项目瓶颈”!未来,我觉得开发者会更像“AI驯兽师”或“AI训练师”,而不是单纯的编码机器。

从工程化和系统设计的角度来看,“纯Bash”交互是一个经典的“性能与控制”的权衡案例。其优势在于最小化的抽象层,理论上可以实现最直接、最底层的系统操作,从而达到更高的效率和更广泛的适用性。这种设计减少了中间件引入的复杂性和潜在瓶颈,也极大地方便了在不同环境间的部署,因为它只依赖最基础的shell环境。然而,其潜在风险亦不可小觑。错误传递和执行的不可逆性是最大的挑战;一个错误的Bash命令可能在没有充分校验下直接影响系统状态。此外,缺乏结构化的输出和输入接口会增加AI模型理解环境反馈和生成精确指令的难度,因为所有的状态都必须通过文本解析来感知。这要求AI在语义理解和指令生成上达到非常高的精度,并依赖强大的沙盒技术来保障安全性。

这简直是职场版的“灵光一闪”教科书!它告诉我们,不要小看任何一次看似随意的交流。很多时候,我们过于专注于手头的工作,反而忽略了那些跳出框架思考的机会。这启发我,第一,保持好奇心和跨界思维,有时候别人领域的一个小点子,结合咱们的领域可能就是个大创新。第二,多跟不同背景的人交流,别总跟自己小圈子里的人聊,思想碰撞才能激发火花。第三,也是最重要的,想法出来后,要敢于快速验证,20分钟能头脑风暴出核心概念,那至少证明这个想法是有可行性的,接下来就是撸起袖子干!别让好点子只停留在“聊过”的阶段。

这太励志了!它告诉我们,创新的火花往往藏在非正式、自由的讨论中。我们总是习惯于坐下来开正式会议,定下目标,然后按部就班。但很多时候,真正的突破性想法,可能就在一杯咖啡的时间、一次散步的闲聊中诞生。这启发我们要更重视开放式的交流,创造轻松的讨论氛围,鼓励大家分享那些“异想天开”的点子,甚至是一些看似不切实际的“白日梦”。团队应该允许并鼓励这种自由探讨,给予想法成长的空间,而不是一开始就用各种条条框框去限制它。有时候,最好的解决方案就藏在最简单的观察和最直接的碰撞里。

我认为这是解放与挑战并存。解放的地方在于,AI可以承担大量重复性、初级的Bug修复工作,尤其是那些规则性强、模式清晰的问题。开发者可以因此腾出更多时间,去专注于更具创造性、更复杂的系统设计、架构优化以及创新功能的开发。这有助于提升整体开发效率和产品质量。但挑战也显而易见:开发者的技能树需要重新规划。过去可能侧重于代码的编写和调试,未来可能更侧重于如何“引导”AI、如何Review AI生成的代码、如何设计AI无法解决的非典型问题。甚至,对于初级开发者而言,他们入门的“找Bug、修Bug”的实践机会可能会减少,需要更早地接触高阶的任务。这要求我们适应AI赋能下的新协作模式。

这件事情说明了几个关键点:首先,回归本质的能力。能够把庞大的GitHub协作过程抽象成“LLM是否能像人类一样理解Bug并修复代码”这样一个核心问题,是最开始也是最重要的突破口。其次,跨学科或跨领域的思维碰撞。虽然文章没直接说,但这种把现实工程问题转化为AI可评估基准的想法,很可能就是不同背景的人互相启发的结果。最后,也最重要的是执行力。有好的想法只是第一步,能在短时间内将20分钟讨论的“异想天开”变为可实现的开源项目,并将其发展为行业标准,这才是真正从优秀到卓越的关键。它提醒我们,要善于从日常观察中发现问题,并在团队中营造一个鼓励发散思维和快速实践的文化。

关于“纯Bash”交互,我觉得它最大的优势在于通用性和简洁性。任何系统都有Bash环境,模型输出的命令可以直接跑,省去了适配各种工具接口的麻烦,也降低了整个Agent的复杂度。对于想快速验证LLM能力、或者只关注核心逻辑的场景,这简直是福音。但风险也很明显,安全性和容错性是个大问题。Bash命令灵活多变,一个错误的命令可能导致数据丢失、系统崩溃甚至安全漏洞。如果Agent不具备严谨的验证和沙盒机制,那就是把双刃剑。另外,模型的输出必须是完整且正确的Bash命令,这对模型生成能力的要求也挺高,毕竟少了中间工具层面的“引导”和“校验”。

哈哈,这不就是让AI从“乖孩子”变成了“野孩子”嘛!优点就是放飞自我,想干啥直接敲命令行,确实效率高,灵活度爆表,适配性也好,感觉就像给任何一个大模型都装了个万能插座。但缺点也很明显啊,这跟咱们平时用命令敲错一个字母就找不着北一样,如果AI没理解透,一个rm -rf / 谁来负责?安全问题是首当其冲的,其次是健壮性,它得确保命令执行结果是预期中的,如果结果不对,还能自己调整,这可比调用特定API复杂多了。感觉就像把AI从智能管家模式切换成了黑客模式,酷是酷,但风险指数也噌噌上涨了。

从长远角度看,这类轻量级Agent的普及将强制性地推动软件开发流程的自动化程度。它将减少开发周期中的“调试-修复-测试”反馈循环的时间,提高效率。对人类开发者而言,这是一个从“执行者”向“指导者和监督者”的角色转变。开发者将更多地从事高层次的问题定义、系统架构设计、算法创新以及对AI生成内容的验证和优化工作。这并非剥夺人类的价值,而是将人类从重复性劳动中解放出来,专注于需要高级认知和创造力的问题。真正的挑战在于如何培养能够驾驭和协作AI的新一代开发者,以及如何重构教育和职业发展路径,以适应这种人机协作的新范式。同时,对那些依赖简单Bug修复生存的软件外包、初级岗位可能造成冲击。