自主编码 Agent 全景(2026)


文档摘要

自主编码 Agent 全景(2026) 本节摘要:SWE-bench Verified 在不到三年里从 4% 涨到 80.9%。同一个 Claude Sonnet 4.5,在 SWE-agent v1 上得 43.2%、在 Cline autonomous 上得 59.8%——模型外围的脚手架(scaffolding)已经和模型本身一样重要。OpenHands(原 OpenDevin)是最活跃的 MIT 许可平台,它的 CodeAct 循环直接在沙箱里执行 Python 动作,而非 JSON 工具调用。

自主编码 Agent 全景(2026)

本节摘要:SWE-bench Verified 在不到三年里从 4% 涨到 80.9%。同一个 Claude Sonnet 4.5,在 SWE-agent v1 上得 43.2%、在 Cline autonomous 上得 59.8%——模型外围的**脚手架(scaffolding)**已经和模型本身一样重要。OpenHands(原 OpenDevin)是最活跃的 MIT 许可平台,它的 CodeAct 循环直接在沙箱里执行 Python 动作,而非 JSON 工具调用。但头条数字藏着一个方法论问题:SWE-bench Verified 的 500 题里有 161 题只需改 1~2 行,而 SWE-bench Pro(10+ 行任务)上同一批前沿模型只有 23~59%。本节讲透 2022→2026 的能力曲线、脚手架为何承重(检索/验证器循环/失败隔离)、CodeAct 与 JSON 工具调用的取舍,以及为什么「选哪个编码 Agent 最好」是错的问题——正确问题是「在我自己的任务分布上、用我将上线的脚手架,端到端可靠度是多少」。

对应原课程:Phase 15 · Lesson 09 · coding-agent-landscape(原英文 phases/15-autonomous-systems/09-coding-agent-landscape/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 复述 SWE-bench 家族:SWE-bench(原始)、SWE-bench Verified(500 题人工精选)、SWE-bench Pro(10+ 行),并说出 Verified 易任务尾(161/500 题仅 1~2 行)如何抬高头条分。
  2. 解释为什么脚手架承重:同一个模型在不同脚手架下分差可达 16.6 个绝对点,基础模型只是组件、循环才是产品。
  3. 对比 CodeAct 与 JSON 工具调用:前者组合性强但需硬沙箱、后者每动一轮易审计但组合性弱。
  4. 列出脚手架买分的三处:检索、验证器循环(test-and-retry)、失败隔离沙箱。
  5. 设计一条选型评估:在自己的 bug backlog 上跑一个 Pro 式子集,得到能代表「我会上线」任务分布的端到端分。

一、问题与直觉

「哪个编码 Agent 最好」是错的问题。正确的问题是:在一个匹配我工作的任务分布上、用我将在产线跑的脚手架,我得到的端到端可靠度是多少?

2022 到 2026,这个领域学到:脚手架(检索层、规划器、沙箱、编辑-验证循环、反馈格式)是承重的。Claude Sonnet 4.5 在 SWE-agent v1 上 SWE-bench Verified 得 43.2%;同一模型在 Cline autonomous 脚手架里得 59.8%。16.6 个绝对点的差异,同样的权重。基础模型是组件,循环是产品。

伴随的问题是基准饱和隐藏回退。SWE-bench Verified 接近饱和,易任务尾(500 题里 161 题只需 ≤2 行)把头部分数拉高。真实质量在 SWE-bench Pro(10+ 行改动)这样的分布上量得更准——同样的领跑者仍只有 23~59%。

💡 斜率来自三个复利源:更好的基础模型、更好的脚手架(CodeAct/反思/验证器循环)、更好的基准(Verified 去噪)

二、从零实现:CodeAct vs JSON 工具调用对照

原课程 code/main.py 在一个固定迷你任务分布上对比两种玩具脚手架:一个 JSON 工具调用脚手架(每轮一动);一个 CodeAct 脚手架(每个动作可发一小段 Python)。两者都用确定性规则的「桩模型」,从而把脚手架差异与模型质量隔离开。输出显示:CodeAct 脚手架用更少轮次解更多任务,代价是每个动作的爆炸半径更大

两种执行模型对照

# JSON 工具调用:每动作一轮,显式验证器把关 def json_action(model, task): call = model.emit_json(task) # {"tool":"read","path":"x.py"} if not validator.ok(call): return REJECT # 默认安全 return host.execute(call) # 易审计,组合性弱 # CodeAct:每动作是一段程序,Jupyter 式内核在沙箱跑 def codeact(model, task): snippet = model.emit_python(task) # 可循环/链工具/捕异常 return sandbox.run(snippet) # 组合性强,需硬沙箱(Docker)

CodeAct vs JSON 工具调用

OpenHands(All-Hands-AI,原 OpenDevin)下了一个具体的架构赌注:模型不发明 JSON 工具调用让宿主解码执行,而是发 Python 代码,由 Jupyter 式内核在沙箱里跑。Agent 可以在一个动作里循环文件、链接工具、捕获自己的异常。

取舍:

  • JSON 工具调用:每个动作一轮;易审计;组合性有限;默认安全,因为每次调用过显式验证器。
  • CodeAct:一个动作可以是一整个程序;组合性强;需要硬沙箱(OpenHands 用 Docker 隔离);失败模式包括沙箱运行时允许的一切。

两种架构都在生产中。CodeAct 在开放平台(OpenHands、smolagents)占主导;JSON 工具调用在托管服务(Anthropic Managed Agents、OpenAI Assistants,供应商控制执行器)仍是主导。

2026 脚手架全景

脚手架 许可 执行模型 显著属性
OpenHands(OpenDevin) MIT Docker 里 CodeAct 最活跃开放平台;事件流可重放
SWE-agent MIT Agent-Computer Interface(ACI) 首个端到端 SWE-bench 脚手架
Aider Apache-2 本地仓库 edit-via-diff 极简脚手架,回归稳定性强
Cline Apache-2 带工具策略的 VS Code Agent Sonnet 4.5 上得分最高的开放脚手架
Devin(Cognition) 专有 托管 VM + 规划器 首个「AI 软件工程师」品类
Claude Code 专有 权限模式 + routines 第 10 节详讲 Agent 循环

脚手架为何承重

一次编码运行是一条长程轨迹(第 01 节)。可靠度跨步复合。脚手架买分的三处:

  1. 检索:找到该读的文件是无声瓶颈。SWE-agent 的 ACI、OpenHands 的文件索引、Aider 的 repo-map 都攻这。
  2. 验证器循环:跑测试、读栈迹、重试,在 SWE-bench 上是 10+ 分的差。
  3. 失败隔离:出错就回滚的沙箱防止复合损害。同一模型有/无验证器循环,看起来像两个不同的产品。

三、框架对比:基准饱和与真实分布

OpenHands 作者和 Epoch AI 都指出 SWE-bench Verified 有易任务尾:500 题里 161 题只需 12 行改动。高分部分由这条尾驱动。SWE-bench Pro 限制到 10+ 行改动,**即便对前沿系统也只回到 2359%**。你的生产分布几乎肯定更接近 Pro 而非 Verified。

基准 任务规模 前沿模型分 用途
SWE-bench(原始) 全谱,含噪声 头部 80%+ 历史对照
SWE-bench Verified 500 题精选,含易尾 70~80%+ 头条数字,接近饱和
SWE-bench Pro 10+ 行 23~59% 更接近真实分布

⚠️ 选型含义:选 Agent 时,跑一个你自己 bug backlog 的 Pro 式子集。要紧的是在代表你会上线的任务上的分,不是 Verified 头条。

四、可复用产物

outputs/skill-scaffold-audit.md 帮你在采用一个编码 Agent 脚手架前审查它:检索质量(找文件准不准)、有没有验证器循环(跑测试读栈迹重试)、沙箱隔离强度、基准到分布的匹配度。它专门抓「Verified 头条分高,但在我的任务上崩」的错配。

code/main.py 用确定性桩模型把脚手架差异与模型质量隔离,适合在选型评审里演示「同样模型,CodeAct 比 JSON 少几轮但爆炸半径大」。

五、练习

  1. code/main.py:每种脚手架在同一任务集上各花几轮?各自的每动作爆炸半径多大?

  2. 读 OpenHands 论文(arXiv:2407.16741):论文论证 CodeAct 在复杂任务上胜过 JSON 工具调用。找出论文承认的一个失败模式,用一句话说它何时会在生产中占主导。

  3. 从你的 bug backlog 挑一个需跨两文件改 10+ 行的任务,估前沿模型在 (a) JSON 工具调用 和 (b) CodeAct 下的端到端成功率。为差距给出理由。

  4. SWE-bench Verified 有 161 个单文件、1~2 行任务:构造一个排除它们的分数。排行榜如何重洗?

  5. 读 OpenAI 的「Introducing SWE-bench Verified」,解释移除歧义任务的具体方法,说出该精选会漏掉的一类。

本节要点回顾

  1. SWE-bench Verified 三年 4%→80.9%:斜率来自更好模型、更好脚手架、更好基准三者复利。
  2. 脚手架承重:同一 Claude Sonnet 4.5 在 SWE-agent v1 得 43.2%、在 Cline 得 59.8%,16.6 点差同权重;模型是组件,循环是产品。
  3. CodeAct vs JSON 工具调用:前者组合性强、需硬沙箱;后者每动一轮、易审计、组合性弱;两者在生产中并存。
  4. 脚手架买分三处:检索(找文件)、验证器循环(test-and-retry,10+ 分)、失败隔离沙箱。
  5. 基准饱和藏回退:Verified 500 题里 161 题仅 12 行;Pro(10+ 行)上前沿只有 2359%。
  6. 正确选型问题:在我自己的任务分布上、用我将上线的脚手架,端到端可靠度是多少。
  7. 生产分布更接近 Pro:跑自己 backlog 的 Pro 式子集,而非看 Verified 头条。

下一节,我们深入一种脚手架的权限模型——Claude Code 的权限模式(plan/accept edits/full auto),看自主性等级如何映射到不同的风险与审查要求。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U