从"AI 辅助编程"到"AI 工程师"

GitHub Copilot 让开发者习惯了"AI 写代码、人来审查"的工作模式。但 Copilot 解决的是"怎么写"的问题,不是"做什么"和"怎么做"的问题。你仍然需要自己理解需求、设计方案、搭建项目结构、编写测试、调试部署。Copilot 就像一个打字很快但不太会思考的实习生——你告诉他写什么,他写得很快,但你得时刻盯着。

Devin 的定位完全不同。它要做的是"AI 工程师"——你给它一个 issue 或需求描述,它自己理解需求、规划方案、编写代码、运行测试、修复 bug、提交 PR。整个过程自主完成,人类只需要在关键节点做审查和决策。这个定位很大胆,也很有争议——它意味着 AI 不再是开发者的工具,而是开发者的同事。

Cognition AI 在 2024 年初首次展示 Devin 时,业界反应两极分化。支持者认为这是软件工程的未来,批评者认为演示视频有夸大之嫌。两年过去了,Devin 已经迭代到 2.0 版本,生产环境中的表现比演示时期更加成熟。我花了三周时间在实际项目中深度使用 Devin 2.0,以下是详细评测。

测试方法论

为了全面评估 Devin 的能力,我设计了三个层次的测试任务:

Level 1 - 独立小任务(10 个):修复单个 bug、添加小功能、编写单元测试。每个任务预期 1-2 小时人工工作量。

Level 2 - 模块级任务(5 个):实现一个完整功能模块,包含 API 设计、数据库迁移、业务逻辑、测试编写。每个任务预期 1-3 天人工工作量。

Level 3 - 项目级任务(2 个):从零搭建一个完整项目,包含技术选型、架构设计、核心功能实现、部署配置。每个任务预期 1-2 周人工工作量。

测试项目涵盖 Python(FastAPI)、TypeScript(Next.js)、Go(Gin)三种技术栈。

Level 1:独立小任务表现

Bug 修复(4 个任务)

Devin 在 bug 修复上表现最强。给它一个 issue 描述和代码仓库访问权限后,它的典型工作流程是:

  1. 阅读相关代码文件,理解上下文
  2. 复现 bug(如果可行)
  3. 定位根因
  4. 编写修复代码
  5. 运行相关测试验证
  6. 提交 PR 并附上分析说明

4 个 bug 修复任务中,Devin 完成了 3 个,pass@1 成功率 75%。未完成的那个是一个并发竞态条件 bug,Devin 正确定位了问题,但修复方案引入了新的死锁风险——在 code review 时被发现并驳回。

亮点:Devin 的 PR 描述质量很高。它不仅说明了改了什么,还解释了为什么这样改、考虑了哪些替代方案、有什么潜在风险。这种"工程素养"在 AI 编程工具中很少见。

不足:对于需要理解大量业务上下文的 bug,Devin 的分析深度不够。它倾向于从代码层面找原因,而忽略了业务逻辑层面的约束。

功能添加(3 个任务)

3 个任务中成功 2 个,部分成功 1 个。部分成功的那个是"给用户列表添加高级筛选功能"——Devin 实现了基本的筛选逻辑,但筛选条件的组合规则与产品需求有偏差,需要人工调整。

测试编写(3 个任务)

Devin 在测试编写上表现优异。3 个任务全部完成,测试覆盖率和代码质量都达到了可合并水平。它甚至发现了一个现有代码中的边界条件 bug——在编写测试时发现了未处理的空值情况。

Level 2:模块级任务表现

FastAPI 用户认证模块

任务描述:实现一个完整的用户认证模块,包含注册、登录、密码重置、JWT token 管理和权限控制。

Devin 的工作过程

约 45 分钟完成。它首先创建了数据库迁移文件(使用 Alembic),然后实现了用户模型、认证服务层、API 路由和中间件。测试覆盖了正常流程和常见异常场景。

评估

  • 代码结构:⭐⭐⭐⭐ 清晰的分层架构,符合 FastAPI 最佳实践
  • 安全性:⭐⭐⭐⭐ 密码哈希使用了 bcrypt,JWT 实现正确,但 refresh token 的轮换策略有改进空间
  • 测试质量:⭐⭐⭐⭐⭐ 覆盖了主要路径和边界条件
  • 可维护性:⭐⭐⭐⭐ 代码可读性好,但缺少部分内联注释

人工调整量:约 30 分钟。主要是调整了一些命名规范以匹配项目现有风格,以及修复了一个 Devin 对项目依赖版本的误判。

Next.js 仪表盘模块

任务描述:实现一个数据可视化仪表盘,包含图表展示、数据筛选和导出功能。

Devin 的工作过程

约 70 分钟完成。Devin 选择了 Recharts 作为图表库(合理的默认选择),实现了柱状图、折线图和饼图三种可视化。数据筛选支持时间范围和分类维度。

评估

  • UI 实现:⭐⭐⭐ 基本功能完整,但视觉设计偏简陋,交互细节(如 loading 状态、空数据提示)处理不够
  • 代码质量:⭐⭐⭐⭐ 组件划分合理,状态管理清晰
  • 响应式:⭐⭐⭐ 基本支持响应式,但在移动端的布局有溢出问题
  • 测试:⭐⭐⭐ 只写了组件渲染测试,缺少交互测试

人工调整量:约 2 小时。主要是 UI 样式优化和响应式修复。

Go 微服务模块

任务描述:实现一个订单管理微服务,包含 gRPC 接口、数据库交互和基础监控。

Devin 的工作过程

约 55 分钟完成。Devin 正确使用了 Gin 框架和 GORM,实现了 CRUD 接口和基本的日志中间件。

评估

  • 代码质量:⭐⭐⭐⭐ Go 语言惯用法使用得当
  • 接口设计:⭐⭐⭐⭐ RESTful 设计合理,错误码规范
  • 测试:⭐⭐⭐ 只有基本的 handler 测试,缺少集成测试
  • 监控:⭐⭐ 只实现了日志,缺少 metrics 和 tracing

人工调整量:约 1.5 小时。补充了 Prometheus metrics 和 Jaeger tracing。

Level 3:项目级任务表现

任务一:实时协作白板应用

任务描述:从零搭建一个基于 WebSocket 的实时协作白板,支持多用户同时绘制、同步光标位置、撤销/重做。

这是最具挑战性的测试。Devin 的工作过程持续了约 4 小时,期间自主完成了技术选型(Next.js + Socket.io + Canvas)、项目搭建、核心功能实现。

最终结果:基本功能可用,但存在几个关键问题:

  • WebSocket 连接管理在弱网环境下不稳定,缺少重连和状态同步逻辑
  • Canvas 绘制在多用户并发时出现绘制丢失
  • 撤销/重做只支持本地操作历史,不支持全局操作历史

这个任务超出了 Devin 当前的可靠能力范围。虽然它完成了约 70% 的工作量,但剩余 30% 恰恰是最难的部分——分布式状态同步和冲突处理。不过,作为"起手式",Devin 生成的项目骨架和基础实现节省了至少 2-3 天的人工工作量。

任务二:RESTful API 网关

任务描述:实现一个 API 网关服务,支持路由转发、认证鉴权、限流熔断和请求日志。

Devin 完成了约 85% 的工作量。路由转发和认证功能完整可用,限流实现了基础的令牌桶算法,但熔断机制只实现了基本版本,缺少半开状态和自定义降级逻辑。

Devin 的工作流分析

通过三周的使用观察,我总结了 Devin 的典型工作模式:

强项:系统化的工程流程

Devin 不是"上来就写代码"的。它会先做类似"需求分析"的工作——阅读代码库、理解现有架构、制定实施计划。这个计划会被记录在一个类似设计文档的形式中,然后按计划逐步实施。这种工作方式更接近资深工程师的行为模式,而非"接到任务就开始编码"的初级开发者。

强项:自我调试能力

当代码运行出错时,Devin 能够阅读错误信息、分析原因、修改代码并重新运行。在 Level 1 和 Level 2 的任务中,Devin 平均每个任务会经历 2-4 次自我调试循环。大多数情况下它能正确修复自己的错误,但对于复杂的并发问题或深层次的架构问题,自我调试的成功率明显下降。

弱项:设计决策的合理性

Devin 在技术选型上偏保守——它倾向于选择最流行的库和框架,但不会深入分析这个选择是否适合具体场景。在 API 网关任务中,它选择了 Express 而非更适合网关场景的 Fastify,导致在高并发测试中性能不理想。

弱项:上下文持续性

在长时间任务中(超过 2 小时),Devin 偶尔会"忘记"项目早期做的决策。比如在白板项目中,它在前端用了 camelCase 命名,但到后期某个文件突然切换到了 snake_case。这表明它的上下文管理在长任务中存在退化。

与竞品对比

Devin vs GitHub Copilot Workspace

Copilot Workspace 更适合"人主导、AI 辅助"的工作模式。它提供了更细粒度的人工控制点,适合需要严格 code review 的场景。Devin 更适合"AI 主导、人监督"的模式,在自主性和效率上更强,但可控性不如 Copilot Workspace。

Devin vs Cursor Agent

Cursor 的 Agent 模式与 Devin 定位类似,但深度集成在 IDE 中。对于"在现有代码库中工作"的场景,Cursor 的上下文感知更好。Devin 的优势在于它不依赖特定 IDE,且在"从零开始"的项目上表现更好。

Devin vs OpenAI Codex

Codex(基于 GPT-4o)在单文件代码生成质量上略优于 Devin,但在项目级任务的多文件协调和一致性上明显弱于 Devin。Devin 的"工程师思维"在复杂任务中体现出了差异化优势。

成本与 ROI

Devin 的定价为每月 $500(团队版)。按照一个中级工程师月薪 2-3 万元(人民币)计算,Devin 的成本约为人力成本的 1/10。

从实际测试来看,Devin 大约能节省 40-60% 的开发时间(取决于任务类型)。但需要注意的是,节省的时间中有一部分需要用于 code review 和调整修正。净时间节省大约在 30-50%。

对于以下场景,Devin 的 ROI 较高:

  • 有大量结构化的小任务需要完成(bug 修复、测试编写、小功能添加)
  • 团队有成熟的 code review 流程,能高效审查 Devin 的 PR
  • 项目文档完善,Devin 能快速获取必要的上下文

对于以下场景,ROI 可能不理想:

  • 需要深度领域知识的项目(如金融风控规则引擎)
  • 对代码质量和架构一致性要求极高的核心系统
  • 团队缺乏 code review 能力,无法有效把关 Devin 的输出

最佳实践:如何与 Devin 高效协作

  1. 写好任务描述:Devin 的表现高度依赖输入质量。一个好的任务描述应该包含背景、目标、约束和验收标准。
  2. 先让它做计划:在让 Devin 写代码之前,先让它输出实施计划。审查计划后再授权执行,能显著提高成功率。
  3. 控制任务粒度:单个任务控制在 1-4 小时工作量范围内效果最好。更大的任务应该拆分。
  4. 及时 review:不要等 Devin 完成所有工作再 review。在每个关键节点(设计、实现、测试)都做快速检查。
  5. 建立项目约定文档:让 Devin 了解你的项目规范——命名规则、架构约定、测试标准。这能减少后续的调整工作量。

结语

Devin 不是"替代软件工程师"的产品——至少现在不是。它更像是一个"能力不错但需要指导的初级工程师"。给它明确的任务、合适的上下文和适时的反馈,它能产出高质量的贡献。但如果你期望它独立处理复杂的设计决策和架构问题,你会失望。

Devin 的真正价值在于释放资深工程师的带宽。当代码编写、测试编写、bug 修复这些相对机械的工作可以交给 Devin 时,资深工程师可以把更多精力放在架构设计、技术选型和复杂问题解决上。这种人机分工模式可能是当前阶段最优的软件开发方式。

从 1.0 到 2.0 的进步是显著的。如果 Devin 保持这个迭代速度,下一版可能会在分布式系统、复杂调试和架构设计能力上有质的提升。软件工程的未来,正在被重新定义。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。