自主编程 Agent 的分水岭
2025 年是自主编程 Agent 从”酷炫 demo”到”有人真用”的转折点。Devin 在 Y Combinator 的 Demo Day 上展示了从 Issue 到 PR 的全自动流程,OpenHands 在开源社区中积累了超过 40K star,SWE-agent 在学术界成为评估 Agent 能力的标准工具。
但”有人用”和”好用”是两回事。这篇横评基于我过去 3 个月的实际使用经验,覆盖了 SWE-bench 基准测试、真实项目任务和成本分析。
三款 Agent 的定位
| Devin | OpenHands | SWE-agent | |
|---|---|---|---|
| 开发者 | Cognition Labs | 开源社区 (AllHands AI) | Princeton NLP |
| 开源 | 否 | 是 (MIT) | 是 (MIT) |
| 定位 | 商业产品 | 开源平台 | 研究工具 |
| 架构 | 端到端黑盒 | 模块化 Agent 框架 | 最小化 Agent Loop |
| 支持模型 | 自有模型 + Claude/GPT | 任意 LLM | 任意 LLM |
| 部署方式 | SaaS | 自托管 / Cloud | 自托管 |
| 价格 | $500/月起 | 免费(自付 LLM 费用) | 免费 |
SWE-bench Verified 基准对比
SWE-bench Verified 是当前评估自主编程 Agent 最权威的基准,包含 500 个从真实 GitHub 仓库中提取的 bug 修复任务。
| Agent | 完成率 | 平均耗时 | 平均成本/任务 |
|---|---|---|---|
| Devin | ~26% | 18 分钟 | $2.80 |
| OpenHands (Claude Sonnet 4.6) | ~22% | 12 分钟 | $1.50 |
| OpenHands (GPT-5.4) | ~20% | 14 分钟 | $1.80 |
| SWE-agent (Claude Sonnet 4.6) | ~18% | 8 分钟 | $0.90 |
| SWE-agent (GPT-5.4) | ~16% | 10 分钟 | $1.10 |
几个观察:
- Devin 领先但差距在缩小:半年前 Devin 的领先幅度更大(~32% vs ~15%),开源方案追赶很快
- OpenHands 的 Claude Sonnet 配置最具性价比:完成率接近 Devin 但成本只有一半
- SWE-agent 最快最便宜:适合大规模批量运行
基准之外:真实项目测试
我在三个真实项目中测试了这三款 Agent,每个项目给 10 个任务(5 个 bug 修复 + 5 个功能添加):
项目 A: Express.js REST API (TypeScript)
| 完成 | 部分完成 | 失败 | 代码质量 (1-5) | |
|---|---|---|---|---|
| Devin | 6 | 2 | 2 | 3.8 |
| OpenHands | 5 | 3 | 2 | 3.5 |
| SWE-agent | 3 | 3 | 4 | 3.0 |
项目 B: React + Next.js 前端 (TypeScript)
| 完成 | 部分完成 | 失败 | 代码质量 (1-5) | |
|---|---|---|---|---|
| Devin | 4 | 3 | 3 | 3.2 |
| OpenHands | 4 | 2 | 4 | 3.3 |
| SWE-agent | 2 | 2 | 6 | 2.8 |
项目 C: Python 数据管线 (Python)
| 完成 | 部分完成 | 失败 | 代码质量 (1-5) | |
|---|---|---|---|---|
| Devin | 7 | 2 | 1 | 4.0 |
| OpenHands | 6 | 2 | 2 | 3.8 |
| SWE-agent | 5 | 3 | 2 | 3.5 |
关键发现:
- 所有 Agent 在 Python 项目上表现最好,TypeScript 次之,前端最差
- Devin 在简单 bug 修复上几乎 100% 成功,差距主要在功能添加任务
- OpenHands 的代码质量偶尔比 Devin 高——因为可以选择更强的底层模型
- SWE-agent 在前端任务上表现明显弱于其他两个
架构对比
Devin: 端到端黑盒
Devin 的内部架构不公开,但从行为观察:
- 有独立的”规划”和”执行”两个阶段
- 内置了浏览器、终端、代码编辑器三个工具
- 支持多步骤任务分解和自我纠错
- 有记忆系统,能从历史任务中学习
优点:集成度最高,开箱即用。缺点:不透明,无法定制,调试困难。
OpenHands: 模块化框架
OpenHands 的架构清晰分层:
用户任务 → Controller → Agent(可替换)→ Action Space → Sandbox
↓
Observation → Memory → Agent(下一步)
- Controller: 管理 Agent 的生命周期和状态
- Agent: 可插拔,支持 CodeAct、Browsing、Delegation 等多种策略
- Action Space: 定义 Agent 可执行的操作(bash、编辑文件、浏览网页)
- Sandbox: Docker 隔离环境,安全性好
优点:完全可定制,支持多模型切换,社区活跃。缺点:需要自己搭建基础设施。
SWE-agent: 最小化 Agent Loop
SWE-agent 的设计哲学是”最小化 Agent 框架”:
while not done:
observation = get_current_state()
action = llm.decide(observation, history)
result = execute(action)
history.append((observation, action, result))
核心创新是 Agent-Computer Interface (ACI)——一套专门为 LLM 设计的命令行工具(open、edit、search、submit),比原生 bash 命令更容易让 LLM 正确使用。
优点:代码简洁(核心不到 2000 行),易于理解和修改。缺点:功能有限,不支持浏览器操作。
成本分析
以一个月 100 个任务为基准:
| 平台费 | LLM 费用 | 基础设施 | 月总成本 | |
|---|---|---|---|---|
| Devin | $500 | 含在内 | $0 | $500 |
| OpenHands (自托管) | $0 | ~$150 | ~$50 | $200 |
| OpenHands (Cloud) | $100 | ~$100 | $0 | $200 |
| SWE-agent | $0 | ~$90 | ~$30 | $120 |
OpenHands 和 SWE-agent 的成本约为 Devin 的 1/3-1/2,但需要更多的配置和维护工作。
可控性与安全性
Devin
- 在自己的云沙箱中运行,代码不会泄露到你的基础设施
- 但你也无法完全控制它的行为——它可能安装意想不到的依赖
- 没有开源,无法审计内部逻辑
OpenHands
- Docker 沙箱隔离,可配置网络和文件系统权限
- 完全开源,可审计每一行代码
- 支持设置 Agent 的 action 白名单
- 可以通过 callback 在关键操作前加入人工确认
SWE-agent
- 最简单的沙箱(Docker + 受限 bash)
- 没有浏览器访问,减少了攻击面
- 开源,架构简单,容易理解安全边界
安全性排名:SWE-agent > OpenHands > Devin
我的选型建议
场景 1: 企业团队,预算充足
选 Devin。原因:
- 开箱即用,不需要工程师维护 Agent 基础设施
- 端到端体验最好,任务完成率最高
- 有企业级的安全和合规支持
场景 2: 小团队/个人开发者
选 OpenHands。原因:
- 免费开源,只付 LLM API 费用
- 可以选择最适合你项目的底层模型
- 社区活跃,每周都有更新
- 可以针对你的项目定制 Agent 行为
场景 3: AI 研究/Agent 开发
选 SWE-agent。原因:
- 架构最简洁,适合在其基础上做研究
- ACI 的设计思想值得学习和借鉴
- 是 SWE-bench 的”标准跑分工具”
场景 4: 混合使用
这是我目前的方案:
- Claude Code 做日常编程(占 70% 的编程时间)
- OpenHands 处理明确的 bug 修复和 routine 任务(占 20%)
- Devin 处理复杂的跨文件重构(占 10%,按需使用)
未来展望
2026 年下半年值得关注的趋势:
- Agent 专业化:通用 Agent 向垂直领域分化(前端 Agent、数据管线 Agent、DevOps Agent)
- 多 Agent 协作:一个 Agent 做规划,多个 Agent 并行执行不同文件的修改
- Agent 评测升级:SWE-bench 之后,需要更全面的评测基准(代码质量、安全性、可维护性)
- 开源追赶加速:OpenHands 的更新速度意味着它和 Devin 的差距会持续缩小
自主编程 Agent 还远未成熟,但已经开始产生实际价值。关键是找对它擅长的任务类型,而不是期待它替代工程师。