自主编码 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 在不到三年里从 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)。
阅读完本节,你应当能够:
「哪个编码 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 去噪)。
原课程 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)
OpenHands(All-Hands-AI,原 OpenDevin)下了一个具体的架构赌注:模型不发明 JSON 工具调用让宿主解码执行,而是发 Python 代码,由 Jupyter 式内核在沙箱里跑。Agent 可以在一个动作里循环文件、链接工具、捕获自己的异常。
取舍:
两种架构都在生产中。CodeAct 在开放平台(OpenHands、smolagents)占主导;JSON 工具调用在托管服务(Anthropic Managed Agents、OpenAI Assistants,供应商控制执行器)仍是主导。
| 脚手架 | 许可 | 执行模型 | 显著属性 |
|---|---|---|---|
| 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 节)。可靠度跨步复合。脚手架买分的三处:
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 少几轮但爆炸半径大」。
跑 code/main.py:每种脚手架在同一任务集上各花几轮?各自的每动作爆炸半径多大?
读 OpenHands 论文(arXiv:2407.16741):论文论证 CodeAct 在复杂任务上胜过 JSON 工具调用。找出论文承认的一个失败模式,用一句话说它何时会在生产中占主导。
从你的 bug backlog 挑一个需跨两文件改 10+ 行的任务,估前沿模型在 (a) JSON 工具调用 和 (b) CodeAct 下的端到端成功率。为差距给出理由。
SWE-bench Verified 有 161 个单文件、1~2 行任务:构造一个排除它们的分数。排行榜如何重洗?
读 OpenAI 的「Introducing SWE-bench Verified」,解释移除歧义任务的具体方法,说出该精选会漏掉的一类。
下一节,我们深入一种脚手架的权限模型——Claude Code 的权限模式(plan/accept edits/full auto),看自主性等级如何映射到不同的风险与审查要求。