<!-- title: 代码Agent脚手架定胜负与生产鸿沟 -->

# 代码Agent脚手架定胜负与生产鸿沟

2026年5月，自主代码Agent的SWE-bench Verified分数已从2024年初的13%冲到78%，但同一个Agent在真实仓库里被人类reviewer合并的PR接受率只有35%–50%。这条横亘在基准与现实之间的鸿沟，是本期解剖的核心。更有意思的发现是：**同一颗模型，套上不同的脚手架（scaffold），分数可以差出20分**——Claude Sonnet 4.6在Cline上是59.8%，在SWE-agent v1上只有43.2%。这意味着代码Agent的胜负手从来不是模型，而是循环、检索、验证、记忆、停止条件这五件脚手架工程。本期用六栈实测数据拆解这道鸿沟的成因，并给出"该不该把issue丢给Agent"的决策红线。

## 六栈对比：基准饱和后的真实账本

| 维度 | Claude Code (Opus 4.7) | OpenAI Codex (GPT-5 Pro) | Cursor Agent (Sonnet 4.6) | Devin (Cognition) | OpenHands (开源) | Aider (Sonnet 4.6) |
|------|----------------------|--------------------------|--------------------------|-------------------|------------------|--------------------|
| SWE-bench Verified | ~78% | ~76% | ~67% | ~58% | ~52% | ~63% |
| TerminalBench | ~58% | ~54% | — | ~46% | ~42% | — |
| 生产PR接受率 | ~48% | — | ~42% | ~38% | — | — |
| time-to-PR（中等任务）| ~14 min | — | ~8 min | ~22 min | — | — |
| 每任务成本 | $1.5–3.0 | — | $0.4–0.9 | $3.0–6.0 | 取决于模型 | $0.3–0.7 |
| Token/任务（入+出）| 80K+20K | — | 40K+10K | 150K+35K | — | 30K+8K |
| review迭代到合并 | ~1.4次 | — | ~1.2次 | ~1.8次 | — | — |
| 定位 | 自主+交互混合 | 自主+GitHub集成 | 交互对program | 多小时长程自主 | 开源框架/SDK | CLI对program |

数据综合自SWE-bench官方榜、厂商发布与25+企业级rollout的生产埋点。一个反直觉结论先抛出来：**Devin单位成本最高（$3–6）且PR接受率最低（38%），但它生成的代码行数最多（180行/任务）**——长程自主的代价是范围失控，产出的往往是没人愿意审的800行大PR。

## 深度一：基准饱和的真相——为什么78%不再区分能力

SWE-bench Verified的头部已经挤在70%–80%区间，它**正在比所有人预期更快地饱和**。Top Agent之间的分差已被噪声淹没，单一分数不再具备区分度。这迫使我们去看更硬的基准：SWE-bench Pro（现代工业代码、更难）在2026年初头部只有约23%；TerminalBench（真实终端任务）头部52%–58%。三个基准的"天花板"完全不同，揭示了同一个事实——**代码Agent在"修一个已知的、有测试覆盖的、开源Python仓库的issue"这件事上接近人类水平，但换成"在没测试的工业代码上完成一个模糊需求"，能力断崖式下跌**。

评估真正能预测生产可用性的，不是SWE-bench，而是你自己的20任务内部eval（投入1–2天构建）+ 真实ticket的time-to-first-commit + 合并PR的diff大小。后者最容易作弊但也最能暴露范围纪律：缺乏强停止条件的Agent会刷出800行PR。SWE-bench区分不了这种失控。

## 深度二：78%到48%的生产鸿沟——基准漏掉了什么

78%的Verified分数对应48%的生产PR接受率，差出整整30个点。这道鸿沟来自三个基准无法捕捉的真实约束。第一，**隐式约定**：真实仓库有命名风格、错误处理范式、依赖注入习惯，这些从不出现在issue文本里，Agent只能靠概率猜，猜错就被打回。第二，**reviewer期望**：人类reviewer要的是"最小、可读、可回滚"的diff，而Agent倾向于"把问题彻底解决"——它会顺手重构、加防御性代码、补注释，结果是正确但不合规。第三，**测试的虚假安全感**："所有测试通过"是最弱的完成信号，因为测试本身可能错、可能缺失、可能被Agenttrivially patch（比如直接抛掉断言）。一个扎实的观察：Devin的test pass rate只有63%，但它的PR仍能合并——说明人类reviewer实际替代了测试做了最终判断。

```python
# 弱停止条件 vs 强停止条件 —— 决定PR是否会被合并
def weak_stop(obs):
    return obs.tests_pass          # Agent刷800行，没人审

def strong_stop(obs):
    return (obs.tests_pass
            and obs.diff_lines <= 200        # diff足够小可审
            and obs.agent_can_summarize())   # 能一段话说清改了什么
```

鸿沟的本质是：**基准奖励"把issue解决"，生产奖励"把issue解决得像人写的"**。两者目标函数不同，分数自然脱钩。

## 深度三：脚手架定胜负——同模型20分差的五个开关

这是本期最重要的发现。Claude Sonnet 4.6这一个模型，在Cline脚手架上是59.8%，在SWE-agent v1上是43.2%，差出16分；文献中极端差距可达20分。模型不变，变的是scaffold。生产级Agent的能力方差，80%来自五个架构决策：

1. **检索（Retrieval）**：50万行仓库里怎么找到对的文件。朴素embedding RAG会丢跨文件符号关系。Augment Code用BM25+embedding+code-graph三层（图追踪符号依赖）；Cursor和Claude Code用tree-sitter符号索引+按需grep；Aider让你手动加文件到context，用精度换自主性。
2. **动作面（Action surface）**：Agent发JSON工具调用，还是直接写可执行代码？OpenHands的CodeAct让模型写Python在沙箱里读文件、跑测试、改代码，可执行动作在复杂多步任务上碾压JSON-schema，代价是要硬化容器。
3. **验证节奏（Verification cadence）**：每次改动后re-verify还是只在最后跑？分数高的Agent永远re-verify。Cline与SWE-agent的16分差主要在这。
4. **记忆与范围纪律**：把整个仓库塞进context会drift，过度summarize会忘记自己在干嘛。2026的工作模式是**主循环只留小工作记忆，把噪声大的工具（浏览器、完整测试套件）丢给一次性sub-agent，只回收最终observation**。
5. **停止条件**：最难的开关，见深度二。

```python
# 主循环 + 一次性子Agent：2026的范围纪律范式
def main_loop(goal):
    ctx = ingest_issue(goal)            # 小工作记忆
    plan = plan(ctx)
    while not strong_stop(ctx):
        tool = decide_tool(ctx, plan)
        if tool.noisy:                  # 浏览器/全量测试
            ctx.observe = spawn_subagent(tool)  # 子Agent跑完即弃
        else:
            ctx.observe = tool.run()
        ctx = reflect(ctx, observe)
    submit_pr(ctx)
```

## 深度四：八步规范循环——所有产品级Agent的同构骨架

Devin、Cursor、Claude Code、Replit Agent 3、OpenHands，名字各异，控制循环同构。这八步是产品的本体，模型只是引擎：

```mermaid
flowchart TD
    A[1 INGEST<br/>读issue/相关文件/失败测试] --> B[2 PLAN<br/>产出短有序任务列表]
    B --> C[3 ACT<br/>选工具:read/edit/shell/test]
    C --> D[4 OBSERVE<br/>逐字读工具输出]
    D --> E[5 REFLECT<br/>观察是否匹配plan]
    E --> F{6 DECIDE}
    F -->|继续| C
    F -->|重规划| B
    F -->|升级/人工| G[HITL 人工接管]
    F -->|停止| H[7 VERIFY<br/>跑测试/type-check/lint/重读diff]
    H --> I[8 SUBMIT<br/>开PR+一段话总结]
    G --> I
```

落地形态分三类：**终端对program**（Aider、Claude Code、Codex CLI跑在你本地shell，Aider每次改动即commit，坏步骤一次git revert就回）；**云端沙箱VM**（Devin、Sweep循环跑几十分钟，你睡觉它干活，Replit Agent 3单ticket可持续200分钟wall time）；**VS Code内嵌**（Cline、Cursor）。三类不是能力差异，是**自主度与可控度的权衡**——本地=你随时叫停，云端=放手让它长跑，内嵌=人在环里随时干预。

## 深度五：检索层的分化——为什么Augment敢卷graph，Aider敢卷手动

检索是五个开关里分化最剧烈的，因为它直接决定Agent在大型仓库里"会不会迷路"。三派路线各有哲学。Augment Code押注**BM25+embedding+code-graph**三层：BM25抓精确词法命中，embedding抓语义近似，code-graph追踪符号的import/调用/继承依赖——当issue提到`PaymentService`，graph能瞬间把所有`implements PaymentGateway`的类拉进context，这是纯embedding做不到的跨文件推理。Cursor和Claude Code走**tree-sitter符号索引+按需grep**的轻量路线，不预建图，靠运行时grep和符号表动态拼context，启动快、维护成本低，但跨文件间接依赖会漏。Aider最反潮流——**让你手动`/add`文件到context**，明确放弃自主检索，换来了近乎为零的检索噪声和最高精度，代价是不能处理"我不知道该看哪些文件"的issue。

实操判断线很清晰：**仓库<5万行、符号关系简单**→grep+tree-sitter够用（Cursor/Claude Code）；**10万行+、强分层架构、跨文件契约多**→必须上code-graph（Augment路线）；**任务范围明确、文件少、追求成本最低**→手动add（Aider，单任务$0.3-0.7）。检索选错，模型再强也是睁眼瞎。

## 深度六：CodeAct vs JSON工具调用——可执行动作的沙箱红线

OpenHands的CodeAct脚手架是2026年最有意思的架构赌注：**让模型直接写Python，在沙箱里执行，而不是发结构化工具调用**。逻辑上这很优雅——模型本来就更擅长写循环和条件，而不是把循环压扁成一串JSON tool_call；遇到"对所有*.yaml文件批量改一个字段"这种任务，一段`for f in glob(...): ...`远比十次串行edit_file调用高效，而且模型能自己处理异常分支。实测在复杂多步任务上，CodeAct的可执行动作显著优于JSON-schema。

但红线在沙箱。可执行代码意味着Agent拥有了图灵完备的破坏力——它能`os.system("rm -rf")`，能起子进程联网外传，能fork bomb。JSON工具调用是白名单（Agent只能调你暴露的工具），CodeAct是黑名单（Agent能做Python能做的一切）。所以CodeAct必须配硬化容器：只读挂载仓库、禁网或代理出口、CPU/内存/时间quota、文件系统overlay可一键丢弃。Devin和OpenHands都为此构建了完整的容器化执行层。**选型法则：任务需要组合循环/条件/数据管道→CodeAct赢；任务边界清晰、只需read/edit/test几个动作→JSON工具调用更安全更可观测**。这条线决定了你是要雇一个"会写脚本的实习生"（CodeAct）还是一个"只会用你给的几个按钮的助手"（JSON）。

## 深度七：成本工程——10倍差距从哪来

同样修一个中等issue，Aider $0.3，Devin $6，差20倍。拆token就明白：Aider 30K入+8K出（你手动给了精准文件，context极小）；Devin 150K入+35K出（自主检索要反复读文件、跑失败测试、自己摸索，context爆炸）。**成本=自主度的直接定价**。Replit Agent 3能跑200分钟，意味着单ticket的token账单可能上百美元，这就是为什么SWE-bench榜上的"自主时长"在真实账单里是另一回事。

成本工程的四个杠杆：**检索精度**（少读无用文件=Aider路线，省60%输入）；**模型分级**（用便宜模型做检索/规划草稿，贵模型只在关键edit/reflection调用，OpenHands的SDK原生支持per-step切模型）；**上下文压缩**（把已读文件summarize成事实清单，丢弃原始大段代码，但只在sub-agent里做，主循环留原始）；**预算熔断**（设硬token上限，超了直接escalate给人类，而不是让Agent继续烧）。生产级rollout里，不做成本工程的团队，第一个月的API账单通常是预算的3–5倍。

## 推荐方案：按场景选Agent，别按热度

**交互式对program（你看着它写，30–90秒接受一次）**：Cursor Agent。time-to-acceptance最低（8分钟到PR），review迭代最少（1.2次），适合日常增量改动。它本质是你和Agent共同持有context，风险低。

**明确的、有测试覆盖的issue（一次性自主）**：Claude Code或Codex CLI在agent mode。SWE-bench 78%/76%，PR接受率48%，跑在你本地shell可随时叫停。适合"fix issue #482"这类边界清晰的任务。

**长程、模糊、需要web调研的绿field任务**：Devin，但要接受38%接受率和$3–6成本，且**强制配diff大小review gate**，否则会刷大PR。仅适合自包含、容错高的任务。

**自建、要掌控脚手架、多模型切换**：OpenHands（65K+ star，SDK化，CodeAct）。是唯一能让你per-step切模型（规划用Opus、实现用Sonnet、review用Haiku）的框架，也是研究代码Agent内部机制的最佳实验台。

**极致成本敏感、任务范围明确**：Aider+手动add，$0.3/任务，配合open-weight模型可降到几乎为零，代价是放弃自主检索。

**一条贯穿的红线**：无论选哪个，先花1–2天建你的20任务内部eval，再决定。SWE-bench 78%不代表它能在你的仓库里合格——你的隐式约定、你的测试质量、你的reviewer标准，才是真正的验收基准。

## 参考来源
1. [Coding Agent Benchmarks 2026 — Presenc AI](https://presenc.ai/research/coding-agent-benchmarks-2026) — SWE-Bench Verified/TerminalBench排行、生产PR接受率与每任务成本数据来源
2. [Building autonomous coding agents in 2026 — Cadence blog](https://cadence.withremote.ai/blog/autonomous-coding-agents-2026) — 八步规范循环、五个脚手架决策、评估rubric
3. [Introducing the OpenHands Index — OpenHands](https://www.openhands.dev/blog/openhands-index) — 五任务（issue/greenfield/frontend/testing/info-gathering）评估方法与多模型能力对比
4. [The OpenHands Software Agent SDK — arXiv 2511.03690](https://arxiv.org/pdf/2511.03690) — CodeAct脚手架、可组合可扩展架构与生产部署验证
5. [OpenHands Project Analysis — MartianLee](https://martianlee.github.io/posts/2026-05-17-openhands-architecture) — openhands-ai 1.7.0生产架构、容器化执行层与作为产品运行的边界

> [!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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
