首页 › ai-agents › 同模42到78:代码自主体脚手架实测

自主代码智能体这一轮洗牌,胜负手已经换地方了。把六个前沿模型塞进同一套 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
最佳场景 隔离的长任务 日常工程协作 自建/定制 研究、复现 高频小改、可控提交

一、为什么模型不再分化:六模不到 1 分

2026 年最值得记住的一个数据点来自第三方评测:把六个前沿大模型塞进同一套 agent 脚手架跑 SWE-bench Verified,最高分与最低分的差距压缩到 0.8 分以内。这个结果并不意外——SWE-bench Verified 是 500 条人工过滤的真实 GitHub issue,考验的不是单次推理的灵光,而是"读代码—定位—改—跑测试—回滚—再改"的长链路稳定性。一旦链路拉长,单步推理的微小差距被脚手架的容错机制抹平,模型之间的分化自然收窄。

这意味着选型逻辑要倒过来:过去是"先选最强模型,再配 agent",现在是"先定脚手架,再塞任意一个够用的模型"。榜单上 Claude 系 agent 普遍落在 65–72% 区间,部分自报已破 80%,但当你把同一模型换一套 harness,波动比换模型大一个数量级。模型是地基,脚手架是结构,结构定生死。

二、Devin:全自主远程机的脚手架税

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 的密度优势

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:事件总线的可塑性

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:极简 ACI 的研究基线

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:编辑格式与 git 原生的反潮流

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 的来源

把上面五家的共性抽出来,代码自主体的脚手架可以归为四根柱子,"同模 42→78"的全部秘密都在这里:

  1. 工具编排:工具多≠好。塞满即瞎,召回即失真。好的脚手架按阶段暴露工具,而非一次性全给。
  2. 错误恢复:测试挂了不是终点,是信号。脚手架要把报错结构化喂回模型,而不是让它"乱投医"。
  3. 上下文管理:长任务里上下文是会爆的。子 agent、摘要、遗忘策略决定了 agent 能跑多深而不塌。
  4. 重试逻辑:幂等的、带退避的、有预算上限的重试,是生产与 demo 的分水岭。
# 脚手架四柱的极简 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. 重试逻辑:幂等+退避

八、benchmark 到生产的落差

最后必须泼一盆冷水。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 最强",要问"我的脚手架四柱够不够硬"。模型齐平之后,脚手架才是代码自主体真正的护城河与税单。

参考来源

  1. Agent Scaffolding Beats Model Upgrades: 42% to 78% on SWE-Bench — Particula — 六前沿模型 SWE-bench Verified 差距<0.8 分、同模换脚手架 42%→78% 的核心数据来源
  2. SWE-bench Leaderboards(官方) — SWE-bench / Verified 官方榜单,含 mini-SWE-agent 100 行代码 74% 量级
  3. AI Coding Agent Showdown 2026: Devin, OpenHands, Aider, Cline, Codex, Claude Code — BirJob — 六家 agent 起源、SWE-bench-Verified vs 真实 PR 落差、METR 反证的综合分析
  4. Agent Token Cost Economics 2026 — AgentMarketCap — Claude Code / Cursor / Devin / Copilot 四种定价架构与每任务成本拆解
  5. Agent Tool Call Failures in Production 2026 — AgentMarketCap — 生产环境工具调用 12–18% 失败率与 benchmark 干净房评测的落差

[!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 等场景全覆盖。

51学通信知识星球海报-扫码加入