跳转到内容

SWE-Skills-Bench — Agent 技能真的帮得上软件工程吗

已复核 · 稳定内容

SWE-Skills-Bench 专门测一个问题:给 coding agent 注入 SKILL.md 这类过程知识,真实软件工程任务会不会变好。

类比:给新同学一张“做饭 SOP”不一定让菜更好吃。如果他本来会做,这张纸可能只是多占注意力;如果纸上的步骤和厨房设备不匹配,还可能把他带偏。

论文构造了 49 个公开 SWE skills、固定 commit 的真实 GitHub 仓库、带验收标准的 requirement 文档,形成约 565 个任务实例。核心实验是成对比较:同一个 agent,同一任务,一次带 skill,一次不带 skill。

Skill 系统的常见默认假设是:只要把更完整的流程知识塞给 agent,结果就会更好。SWE-Skills-Bench 反过来问:这份知识在真实仓库、真实 acceptance criteria 下到底有没有边际收益。

论文把问题从“skill 看起来是否专业”改成“skill 是否改变最终可验证结果”。如果 pass rate 不变但 token 成本暴涨,那对生产系统来说不是免费增强,而是更贵的推理路径。

这个问题特别适合软件工程,因为 SWE task 本来就有 repo 版本、测试套件和明确验收条件,能把 skill 的贡献压到可测量的 A/B 差值里。

很多 agent 平台把 skill 当成低成本能力扩展:写一个 Markdown,推理时塞进上下文,就像给模型装插件。但这篇论文提醒:skill 是上下文干预,不是权重更新,也不是能力保证。

最刺眼的结果是:49 个 skills 里有 39 个没有 pass-rate 提升;平均收益只有 +1.2%。更麻烦的是,有些 skill 会把 token 成本推高到 451% 左右,甚至让性能下降。

这对 swe-bench 和所有 coding agent 产品都很重要:我们不能只问“有没有 skill”,还要问“这个 skill 是否和当前 repo、版本、任务粒度匹配”。

论文的设计关键是 paired evaluation

维度做法
任务来源真实仓库 + 固定 commit + requirement
skill 来源49 个公开 SWE skills
验证方式把 acceptance criteria 映射成可执行测试
比较方式with-skill 与 without-skill 成对比较
主要指标pass rate delta、token overhead、cost efficiency

这比“跑一次带 skill 的成功率”可靠,因为它能隔离 skill 的边际贡献。否则你不知道成功来自模型本身、仓库简单,还是 skill 真有用。

假设一个任务要求“给 API 增加分页参数,并补测试”。有两个 skill:

skill内容可能结果
API pagination checklist明确要求参数校验、默认值、边界测试可能提升 pass rate
enterprise service mesh guide大量 mTLS、路由、部署模板可能增加上下文污染

如果基础 agent 已经会改分页,第一份 skill 可能只减少遗漏;第二份 skill 即使写得很专业,也和当前任务错位,会扩大搜索空间。

这个 toy 对应论文里的核心机制:skill 的价值取决于 任务-仓库-版本-粒度 四者对齐,而不是取决于 skill 文档看起来多完整。

  1. 好 skill 也可能过宽:通用最佳实践容易把小任务变成大重构。
  2. 版本不匹配会变成负资产:skill 示例如果对应旧 API,会和仓库事实冲突。
  3. token 成本不是细节:pass rate 不变但 token 增长 2-4 倍,在产品里就是成本和延迟风险。

这篇给 skill 系统一个很实用的评估框架:上线前要做 paired A/B,不要只看“有 skill 后能不能过”。

对 study 自己的 agent workflow 来说,技能文件应该更像窄而准的“任务夹具”,不是越全越好。下一步如果设计 skill,就应该记录适用 repo、适用版本、反例和 token 预算。