第 26 章:从 Agent 到评测——环境为何影响结果
SWE-agent:观察行动接口
SWE-agent 把模型与代码仓库、终端和编辑工具连接起来,适合观察“模型提出动作—环境返回结果—继续决定”的循环。[26] 学习重点是 Agent 与计算机的交互方式,而不只是一个成功率数字。
本次 README 明确建议新用户转向更简单的 mini-swe-agent,并指出当前主要开发投入在那里。本书因此保留 SWE-agent 作为研究参考,同时增加 mini-swe-agent 阅读入口。[27] 不把历史推荐当成永远不变的项目状态。
新手先选一个没有外部副作用的小任务,阅读它如何收集命令输出、处理错误和限制循环。不要一开始接入真实仓库凭证,也不必跑完整排行榜。mini-swe-agent 是理解交互闭环的补充,不是额外的底层隔离机制。
SWE-bench:任务、补丁与验证环境
SWE-bench 给定真实软件仓库与问题,要求系统产生解决问题的补丁;其仓库说明使用 Docker 提高评测复现性。[28] 它首先是基准与评测体系,不能直接当作通用沙箱平台。
评测要固定仓库版本、依赖、测试命令和产物。模型给出补丁以后,测试环境负责判断其效果。环境构建失败、测试超时和补丁确实错误,应该分开报告,否则你会把基础设施问题算成模型能力差异。
同样需要注意缓存:本次 README 说明按 run_id 与 instance_id 缓存结果,改变补丁却复用相同标识可能继续命中旧结果。它说明“有结果文件”并不证明“这次补丁刚刚重新测试过”。实际操作应按当前文档使用新的运行标识或正确清理自己的缓存。
Inspect:接口边界写得清楚才方便换后端
Inspect 是模型评测框架,官方沙箱文档提供 exec、文件读写等环境接口,内建 Docker 支持并可扩展其他后端。[29] 很适合学习怎样把工具与具体执行基础设施解耦。
一条特别关键的说明是:配置沙箱不会自动把整个工具函数、Agent 或评分器放进容器。评测主进程中的代码仍在外部,只有通过 sandbox 接口请求的工作才进入对应环境。工具如果绕开接口直接执行宿主机命令,就不会因配置了 sandbox 而自动受到同一边界限制。
这与第 2 章的角色划分一致:接口决定动作走哪条路径,执行环境才决定那条路径上有哪些限制。抽象的好处是更容易换后端,但前提是调用者遵守边界。
OWASP:把应用权限补回系统图
OWASP Agentic Security Initiative 提供围绕自主 Agent 与多步工作流的风险、威胁建模和防护资料入口。[30] 本版读取的是该倡议页面及其资源目录,没有宣称逐份审阅所有白皮书。
用它补上沙箱之外的问题:目标被外部内容改变、工具获得过大权限、身份跨步骤传播、敏感动作未经正确授权。沙箱减少执行层可触及的资源,但如果另一个工具已经获得发信或支付权限,仍要在应用层约束。
完成本章后,应能把三个对象分开:Agent 决定动作,沙箱执行并限制动作,基准与评分器评估结果。把这三者混在一起,会同时妨碍排错和选型。