自主代码智能体这一轮洗牌,胜负手已经换地方了。把六个前沿模型塞进同一套 agent 脚手架跑 SWE-bench Verified,最高与最低只差不到 1 分;但把同一个模型塞进不同脚手架,分数能从 42% 一路拉到 78%。换句话说,2026 年的代码自主体战场,模型军备基本封顶,真正决定一个 agent 能不能修掉真实 issue 的,是它外面那层"脚手架"——agent loop、工具编排、错误恢复、上下文管理与重试逻辑。本文以 Devin、Claude Code、OpenHands、SWE-agent、Aider 五个最具代表性的实战形态为样本,拆解它们的脚手架差异,并直面一个尴尬现实:benchmark 高分不等于生产环境好用,工具调用在生产里仍有 12–18% 的失败率,METR 甚至报告经验开发者用 agent 反而更慢。
| 维度 | Devin | Claude Code | OpenHands | SWE-agent | Aider |
|---|---|---|---|---|---|
| 脚手架形态 | 全自主远程机 | 人在回路 CLI | 事件总线 + 容器 | 极简 ACI 研究基线 | 编辑格式 + git 原生 |
| 自主度 | 高(端到端) | 中高(可托管可介入) | 中(可插拔) | 中(研究向) | 低(配对编程) |
| SWE-bench Verified 量级 | 自报领先区间 | Claude 系 65–72% 区间 | 开源 SOTA 级 | 经典基线/教学 | 非该赛道主力 |
| 成本模型 | 按 ACU 时长计费 | 订阅 + token | 自托管算力 | 自托管算力 | 订阅 + token |
| 最佳场景 | 隔离的长任务 | 日常工程协作 | 自建/定制 | 研究、复现 | 高频小改、可控提交 |
2026 年最值得记住的一个数据点来自第三方评测:把六个前沿大模型塞进同一套 agent 脚手架跑 SWE-bench Verified,最高分与最低分的差距压缩到 0.8 分以内。这个结果并不意外——SWE-bench Verified 是 500 条人工过滤的真实 GitHub issue,考验的不是单次推理的灵光,而是"读代码—定位—改—跑测试—回滚—再改"的长链路稳定性。一旦链路拉长,单步推理的微小差距被脚手架的容错机制抹平,模型之间的分化自然收窄。
这意味着选型逻辑要倒过来:过去是"先选最强模型,再配 agent",现在是"先定脚手架,再塞任意一个够用的模型"。榜单上 Claude 系 agent 普遍落在 65–72% 区间,部分自报已破 80%,但当你把同一模型换一套 harness,波动比换模型大一个数量级。模型是地基,脚手架是结构,结构定生死。
Devin(Cognition)把自主度推到最极端:一个隔离的云沙箱,自带浏览器、终端、编辑器,给一个任务就放手跑。它的脚手架核心是"远程机 + 持久上下文 + 可记忆的 knowledge 机制"——前者保证环境干净可复现,后者让 agent 跨会话积累项目知识,避免每次从零摸索。
代价同样明显。最早的 13.86% 争议(被指任务挑选与人工介入比例不透明)奠定了"自报数字打折看"的行业习惯;按 ACU(agent compute unit)时长计费的模型,让长任务成本不可预测;而完全自主意味着错误恢复全靠脚手架自己,一旦钻进死胡同,没有人在回路及时拽一把。Devin 适合隔离的、可验收的长任务(如"把某依赖从 v2 升到 v3 并修掉所有破坏性变更"),不适合需要频繁对齐语义的协作场景。
# Devin 脚手架的关键不是模型,是"远程机 + knowledge"的耦合
session = devin.create_session(clone_url, base_commit)
session.teach("测试用 pytest 跑,CI 在 .github/workflows/ci.yml") # 跨会话记忆
pr = session.assign("修复 issue #421,跑通测试后开 PR") # 端到端自主
Claude Code 走的是另一条路:它不假装是"远程同事",而是一个常驻终端、随时可打断的 CLI。脚手架的差异化在两个工具——TodoWrite 强制 agent 把模糊目标拆成可勾选的待办,Task(子 agent)把大上下文隔离成若干小窗口,避免主线被搜索结果淹没。这种"高密度人在回路"的设计,让模型推理能力被脚手架放大,而不是被上下文噪声稀释。
它的实战甜区是日常工程协作:在真实仓库里改一批文件、跑测试、根据报错迭代。SWE-bench 上 Claude 系 agent 的强势,很大程度来自这套脚手架而非裸模型——这也是"同模 42→78"现象最直接的注脚。短板是自主度受限于会话长度与打断频率,超长任务仍需要人工分段验收。
# Claude Code 风格:显式 todo + 子 agent 隔离上下文
todos = TodoWrite(["定位回归测试", "复现失败", "改源码", "跑全量测试"])
fix = Task(prompt="在 tests/ 下找到与 issue 相关的失败用例", isolation=True)
OpenHands(前身 OpenDevin)是开源阵营里脚手架最"工程化"的一个。它的核心抽象是 event stream——所有动作(读文件、跑命令、改代码)都作为事件流入总线,AgentController 在事件层做编排、限速、错误恢复与回放。这个设计的好处是可插拔:换模型、换工具、换编排策略都不必动主干,因此成为自建/定制 agent 的首选底座。
可塑性也是它的双刃剑。开箱即用的默认配置未必跑得过商业产品的精调 harness,要榨出 SOTA 级分数,需要团队自己在事件总线上做 retry、context compaction、tool routing 的调参。它的价值不在"开箱最高分",而在"你可以把同模 42% 的脚手架,亲手改成 78%"。对有能力维护 agent 平台的团队,这是最划算的起点。
# OpenHands 事件总线:动作即事件,编排与模型解耦
controller = AgentController(event_stream, agent, max_iterations=200)
controller.run(user_message) # 所有 action/observation 经总线,可重放与熔断
SWE-agent(Princeton)的价值不在分数,而在它定义了"agent-computer interface"(ACI)这个概念:给模型的工具不是 shell 全集,而是一组精心设计、反馈友好、难以误用的命令(如 find_file、search_dir、open + 行号滚动)。它的论点是——agent 失败往往不是模型蠢,而是工具的反馈让模型无法自我纠正。好的 ACI 让模型"看得见自己错在哪"。
这套 100 行级别的 mini-SWE-agent 能在 Verified 上做到 70%+ 区间,恰恰证明了脚手架的杠杆:极简但反馈清晰的 ACI,胜过臃肿的工具集。SWE-agent 适合做研究基线、教学样本、以及"我想搞清楚 agent 到底卡在哪一步"的诊断工具。
Aider 是五个里最"不自主"的,反而因此最稳。它的脚手架差异在两处:一是编辑格式(edit format)——从 whole-file、udiff 到 search-replace block,针对不同模型选最不容易改崩的格式;二是 git 原生——每一次改动自动 commit,可回滚、可审计、可 diff。它不追求端到端修 issue,而追求"每一次提交都干净可信"。
在 SWE-bench 这条赛道上 Aider 不是主力,但在真实开发者的高频小改场景里,它的可靠性远高于更激进的 agent。当你需要的不是"放手让它跑",而是"它改的每一行我都看得见、随时能退",Aider 的脚手架哲学就是答案。
# Aider 的 search-replace block:显式锚点,避免改崩
# <<<<<<< SEARCH
def old_func():
return None
=======
def new_func():
return compute()
>>>>>>> REPLACE
把上面五家的共性抽出来,代码自主体的脚手架可以归为四根柱子,"同模 42→78"的全部秘密都在这里:
# 脚手架四柱的极简 agent loop(伪码)
while not done and steps < budget:
obs = run_tools(plan) # 1. 工具编排:按阶段调度
if obs.failed:
obs = recover(obs.error) # 2. 错误恢复:结构化反馈
ctx = compact(ctx) # 3. 上下文管理:防爆炸
if retryable(obs):
plan = retry_with_backoff() # 4. 重试逻辑:幂等+退避
最后必须泼一盆冷水。SWE-bench Verified 是干净房间评测:任务定义清晰、测试可验、环境可控。生产环境完全是另一回事——有第三方报告指出生产 agent 的工具调用失败率高达 12–18%,远高于 benchmark 暗示的水平。原因包括工具签名漂移、鉴权过期、网络抖动、上下游服务版本不一致,这些 benchmark 根本不覆盖。
更刺眼的是 METR 的反证:在经验开发者熟悉的任务上,使用 agent 反而比手写更慢。这并不否定 agent,而是提醒——benchmark 分数衡量的是"在结构化任务上的天花板",而真实工程的价值在于"在非结构化干扰下的可用性"。脚手架的真正功夫,是在那 12–18% 的失败里把 agent 拽回正轨。
flowchart TD
A[真实 Issue / 任务] --> B{脚手架核心}
B --> C[Agent Loop 编排]
C --> D1[工具调度 按阶段]
C --> D2[上下文管理 子agent/压缩]
C --> D3[错误恢复 结构化反馈]
C --> D4[重试逻辑 退避+预算]
D1 --> E[沙箱执行: 跑测试]
D2 --> E
D3 --> E
D4 --> E
E --> F{测试通过?}
F -- 否 --> D3
F -- 是 --> G[开 PR / Commit]
G --> H[人在回路验收]
H --> I[合入]
style B fill:#fef3c7
style F fill:#fee2e2
style G fill:#dcfce7
一句话收口:2026 年别再问"哪个模型做 agent 最强",要问"我的脚手架四柱够不够硬"。模型齐平之后,脚手架才是代码自主体真正的护城河与税单。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
