门户首页
Paper Reading · Agent Interface · arXiv 2405.15793 · NeurIPS 2024

SWE-agent:ACI,给模型而非人设计的计算机接口

同一个 GPT-4 Turbo,用裸 shell 在 SWE-bench Lite 上解 11.00%,换一套专门设计的 Agent-Computer Interface(ACI)后解 18.00%;全量测试集 12.47%,把此前最好成绩(3.8%,非交互 RAG 系统)提高三倍多。四条设计原则 + 四个接口部件 + 一张消融表,这篇论文回答的问题是:「接口设计本身值多少分」。

生成时间:2026-09-15 · 版本 v0.2 · 生成 Agent:TraeWork(LLM: Kimi-K3) · 载体:agentsoft-research-platform teaching-web-platform
1 2 3 4 5 概念 ACI=模型的 IDE · 10 min 原则 4 条 · 10 min 部件 4 个 · 20 min 数字 12.47%+消融 · 15 min 演化 mini 100 行 · 10 min 学习路径 · 总时长 ~65 min
图 1 · 学习路径(5 步:概念 → 原则 → 部件 → 数字 → 演化)
SWE-agent 一轮循环(ReAct):thought + command → 执行 → 简洁反馈(论文 Figure 1 / §3) LM Agent 每步输出:一段想法 + 一条命令 Computer 代码库 + Linux shell + 测试框架 ACI(Agent-Computer Interface) 模型可用的命令集 + 环境反馈的格式 搜索 find_file / search_* 超过 50 条结果不显示,逼查询更具体 文件查看器 open / goto / scroll 每次最多 100 行 + 行号 + 省略提示 文件编辑器 edit(3 参数) 改完自动刷新视图 + linter 拦截语法错 上下文管理 history processor 只留最近 5 条完整观察,更早折叠成一行 命令 反馈 执行 结果 同一个 GPT-4 Turbo:裸 shell 11.00% → ACI 18.00%(SWE-bench Lite) 接口不动模型权重,相对提升 64%
图 2 · ACI 四部件在 ReAct 循环中的位置:模型只面对接口,接口再面对计算机

概览

12.47%
SWE-bench 全量(286/2,294)
4
ACI 设计原则
4
接口部件
+64%
相对裸 shell 的相对提升

论文精读

SWE-agent · 论文精读(4 张 card)
回答「ACI 是什么、为什么模型需要自己的接口」+「四个部件各长什么样」+「消融实验怎么逐条证明设计原则」+「这套思想今天在哪里」
卡片 1 · 概念与原则

ACI 概念与四条设计原则

论文的出发点是一个类比:人类工程师不会用裸终端写项目,而是用 VSCode 这类 IDE——接口放大了人的能力。那么语言模型作为计算机的「新一类终端用户」,也应该有自己的接口。ACI(Agent-Computer Interface)就是这个抽象层:模型可用的命令,加上环境反馈的格式。作者借人机交互(HCI)的方法做设计:在开发集上观察模型卡在哪里,迭代接口,再网格搜索定参数,最后沉淀出四条原则(论文 §2)。

核心知识点
  • ① 动作要简单:命令少而直白、文档要短,模型不依赖示例也能用对
  • ② 操作要紧凑:重要操作(看文件、改代码)合并成尽可能少的动作,一步要有一步的进展
  • ③ 反馈要简洁:告诉模型动作的效果与当前状态,但不堆砌无关细节
  • ④ 要有护栏:如编辑时自动跑语法检查,让模型立刻发现错误、快速恢复(防错误传播)
  • 定位:不动模型权重,只改接口——「LM-centric 的交互组件设计对下游任务性能有实质影响」
课堂实训
把四条原则逐条映射到讲义「Agent 心智 harness 循环」的四拍结构(observe → think → act → record),标注每条原则作用在哪一拍。
思考与讨论
原则③说反馈要「有信息量但简洁」。对模型来说,「简洁」为什么比对人更重要?这和上下文窗口、注意力分配各有什么关系?
卡片 2 · 接口四部件

接口四部件:搜索 / 查看器 / 编辑器 / 上下文

SWE-agent 的每一轮是标准 ReAct 循环(想法 + 命令 → 执行 → 反馈),支撑循环的是四个专门设计的部件(上方图 2)。它们的共同动作是限制:限制窗口大小、限制搜索结果、折叠旧观察——每一处都在给模型的上下文做减法,而第四节的数据会说明这些减法全是加分项。

核心知识点
  • 搜索:find_file / search_file / search_dir;单次查询最多返回 50 条,超过就一条都不显示,提示模型把查询写得更具体
  • 查看器:open 后每次最多显示 100 行;scroll_up/scroll_down/goto 移动窗口;始终显示全路径、总行数、上下省略行数,每行带行号
  • 编辑器:edit 三参数(起始行、结束行、替换文本)一步替换一个区间;改完查看器自动刷新;内置 linter,语法出错的编辑直接丢弃并要求重试
  • 上下文管理:最近 5 条之外的观察折叠成一行;命令无输出时明确提示「运行成功且无输出」;输出格式不合法就报错重试,直到合法
课堂实训
打开讲义「SWE-agent 执行引擎拆解」,把这四个部件逐个指认到 v1.1.0 的真实代码行——论文讲设计动机,那页讲实现。
思考与讨论
四个部件里,哪些限制是在照顾「模型的弱点」(注意力、上下文),哪些是在控制「成本」(token、轮次)?两者会冲突吗?
卡片 3 · 数字与消融

关键数字与消融:限制信息量反而更好

主结果(论文 Table 1):GPT-4 Turbo + ACI 在全量 SWE-bench 解出 12.47%(286/2,294),Lite 上 18.00%;对照组里,同一模型用裸 shell 只有 11.00%(相对提升 64%),此前最好的非交互 RAG 系统是 3.8%。换成 Claude 3 Opus 也有 10.46%——ACI 不是某个模型的定制外挂,而是可迁移的。真正的教学宝藏是消融表(Table 3,Lite,基准 18.0%):每次只改一个接口设计,看成绩掉多少。

核心知识点
  • 主结果:全量 12.47% · Lite 18.00% · HumanEvalFix 87.7% pass@1 · 平均每解决一个实例花 $1.59(预算上限 $4)
  • 消融-编辑器:去掉 linter ↓3.0;没有 edit 命令(退回重定向 / sed)↓7.7——编辑部件价值最大
  • 消融-搜索:逐条翻页搜索(仿 Vim / VSCode)↓6.0;干脆没有搜索工具只 ↓2.3——给人设计的接口比不给还差
  • 消融-查看器:窗口缩到 30 行 ↓3.7;显示整个文件 ↓5.3——信息给得越多反而越差
  • 消融-上下文:保留全部历史(不折叠旧观察)↓3.0;去掉演示样例 ↓1.7
课堂实训
用本仓实验平台的同一道 Lite 题目跑两次 S4:一次用 brand adapter 默认配置,一次把系统提示里的工具说明删掉一段,对照观察轨迹质量的差异(对应论文的「无演示」消融思路)。
思考与讨论
「显示整个文件」比「只看 100 行」差 5.3 个百分点。如果上下文窗口无限大,这个结论还成立吗?论文的证据和今天长上下文模型的实践各支持什么?
卡片 4 · 本仓关联与演化

与本仓的关系与后续演化:100 行的 mini

对本站读者,这篇论文不是课外读物:讲义「SWE-agent 执行引擎拆解」以它和开源代码(v1.1.0)为标本;实验平台 S4 的各 brand adapter 解决的正是同一层问题——给不同 Agent 接上一台「计算机」。论文之后的演化也值得一提:官方后来把整个 Agent 核心压进约 100 行 Python 的 mini-swe-agent(官方口径:SWE-bench Verified 上超过 70%),原项目进入仅维护模式。工具从「精心设计的四部件」简化回「一个 bash」,是因为模型变强了;但四条原则——动作简单、操作紧凑、反馈简洁、要有护栏——一条都没过时。

核心知识点
  • 本仓关联:执行引擎讲义(源码级拆解)+ S4 brand adapter(统一接口层)+ 过程分析栈(history processor 思想同源)
  • 论文金句(§5.2):Agents succeed quickly and fail slowly——成功的任务很快收工,失败的任务慢慢烧钱,预算控制是接口设计的一部分
  • 后续演化:mini-swe-agent 约 100 行核心;SWE-agent 主仓进入 maintenance-only 模式(官网告示,2026-09-15 核实)
  • 不变的遗产:ACI 四条原则仍是今天设计 Agent 工具接口的默认检查清单
课堂实训
克隆 SWE-agent/mini-swe-agent,通读核心 Agent 类(约 100 行),逐行标注它体现了哪条 ACI 原则、略掉了哪些 2024 年必须有的护栏——并解释「为什么现在可以省」。
思考与讨论
mini 版把四部件简化成一个 bash 依然成立,说明 ACI 的价值边界在哪里?哪些场景下「回到裸 shell」会重新翻车(参考卡片 3 的消融数据)?