想看懂 AI 怎样修测试,mini-swe-agent 把执行循环摊在代码里

开源项目猫目发布于 来源:mini-swe-agent v2 官方资料
当前 v2 用简单的模型、环境和代理循环组织任务,适合研究一次失败怎样变成下一条命令和源码修改。

为什么值得关注

线性的消息轨迹和清晰的查询执行循环,便于分析修复过程、替换模型与建立自己的编码代理基线。

适合谁:想理解或改造编码代理、需要保存修复轨迹的开发者与研究者

这次有哪些亮点

  • DefaultAgent把query、执行动作与观察回传分成清晰方法
  • 序列化保存消息、模型调用统计与退出状态

使用前需要知道

模型能力与费用另行配置;本地命令环境会直接影响工作目录,应使用适合任务的隔离环境,简单循环不保证修复正确。

AI 编程工具能跑测试、改文件,但一次修复为什么成功,失败后又是怎样改变下一步,界面里未必看得清。mini-swe-agent 的吸引力在另一处:把这条循环写得足够直接,让开发者能沿着真实代码看懂模型与执行环境怎样来回合作。

先对齐项目。同一团队在 README 中把 mini-swe-agent 推荐为默认选择,并保留 SWE-agent 面向工具接口与历史处理实验的用途;当前仓库明确是 v2,旧版留在 v1 分支。这篇看的是当前实现,不借历史榜单把它包装成今天刚发布的工具。

一次测试失败,怎样进入下一轮

快速开始列出一个很实用的任务:运行当前项目的 pytest,找到失败测试并尝试修复,最后再验证。它是理解代理循环的好材料,因为每一步都有可读的输入输出。

你给它仓库与任务,模型先产生动作;环境执行相应命令,返回结果;观察加入消息历史,成为模型判断下一步的材料。失败信息可能让它继续读取相关源码、调整实现,然后再运行测试。这里描述的是官方任务入口与执行机制,并不是本文运行过的修复结果。

DefaultAgent 源码把核心分成了很容易追踪的方法:step() 先调用 query(),再把模型产生的动作交给 execute_actions();后者让环境执行动作,并把格式化后的观察写回消息列表。循环持续到出现退出消息,或触及配置的限制与异常路径。

轨迹就是下一轮看到的材料

项目强调线性历史:步骤逐次追加到模型消息中,没有另一份独立、难以对照的隐藏执行故事。对于研究者,这让一次失败更容易复查:模型此前看过什么,执行了什么,拿回的错误又是什么。

README 还强调动作独立执行,而不是维持一个持久 shell 会话。需要工作目录或变量时,命令必须把相应状态说清。这种设计便于切换环境,也意味着不能照着人工终端习惯,默认前一条命令设置的一切都持续存在。

序列化代码会保存消息、调用统计、配置、退出状态等;指定输出路径时,可以把轨迹落盘。要比较两个模型或两种提示,你可以围绕同一任务读这些记录,而不只比较最终一句“已完成”。

更适合想改造工具的人

当前代码采用 MIT 许可,CLI 首次运行会引导模型配置,环境也可以选择本地或容器等路径。模型调用和运行环境仍有各自成本;代码简单,不意味着所有模型都能稳定执行长任务。

尤其要把“代理停止”与“修复成功”分开:它可能因为格式错误、费用或步骤限制退出,也可能生成测试未覆盖的修改。最终成果应是能解释的代码差异和对应验证结果。

如果你只需要现成助手界面,未必有必要读这一层;如果正准备研究修复策略、保存训练轨迹或搭自己的代理基线,我会从这个 DefaultAgent 循环开始。它把可修改的位置交得很清楚,方便把一个想法落实到真实执行过程。

原始资料:mini-swe-agent v2 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享