课程
欢迎回来!在第二篇教程结尾,我们已经拥有了一个粉彩主题的 fp-ts 操作台、NestJS + PostgreSQL 的后端,以及匿名 UUID 进度跟踪。
您可以在此处访问 Devin 系列的全部教程:
- 环境搭建与首个 Pull Request(第 1 部分)
- 用 Devin 交付一条垂直功能线(第 2 部分)
- 集成、测试与 CI/CD(第 3 部分)
- 安全、防护、部署与运维(第 4 部分)
到目前为止所做的工作非常适合个人黑客式开发,但现在该看看 Devin 与团队工作流的整合效果了。在第三篇教程中,我们将关注:
- 集成:Devin 会打开 Jira 工单、着手处理它们,并将每个 PR 的状态直接广播到 Slack。
- 质量闸口:我们将为 API 添加 Jest 单元测试、为 UI 添加 Playwright 端到端流程,并强制 90% 覆盖率。
- CI/CD:GitHub Actions 会进行 lint、类型检查、运行全部测试,并在合并前将 Playwright 报告附加到 Pull Request。
暂不涉及认证和生产部署,这些将放在第 4 部分!
在 Devin 上设置 Slack 集成
将 Devin 接入您的沟通与工单流程完全是手动操作,通过 Devin 的界面完成。
您可以在 Devin 设置的集成选项卡中连接 Slack,或从 Slack 应用目录安装“Devin AI”应用。


该应用在 OAuth 对话框中仍显示“未获 Slack 批准”。Cognition 表示其安全审查正在进行中,不影响功能。
然后选择一个频道:

您可以只需提及一下就与 Devin 对话:

它会开启一个会话,您可以在 UI 中访问:

默认情况下,您会在所选频道收到 PR 更新通知,但您可以在每个会话的参数中微调不同的通知设置。
在 Devin 上设置 Jira 集成
要与 Jira 集成,您需要创建一个专用的机器人用户(例如,devin-bot@…)账号,并在 Devin → Team ▸ Integrations ▸ Jira 下关联这些凭据。
随后,您可以使用个人账号创建新工单并添加 devin 标签。
Devin 会发布一条包含计划纲要的分析评论,并提示“开始会话?”。输入“yes”允许其编写代码,或移除该标签以将工单保留为仅由人工处理。
注意:Devin 不会自动在看板上移动卡片。您或您的 PM 仍需将其拖动到 In Progress 或 Done。这样可将工作流控制权保留在人类手中。
让 Devin 从 Jira 工单开展工作
当 Slack 和 Jira 接好线后,我尝试了一次真正的“把代理当队友”实验,把真实工单抛给 Devin,看看它是否能在无需手把手引导的情况下完成实现。
我使用的工作流
我的流程如下:
- 在我新建的 JIRA 项目中创建工单,并写清验收标准。
- 添加
devin标签,这是提示 Devin 进行分析的信号。 - Devin 会评论一个分步计划、信心评估,并询问“开始会话?”

- 我回复“Yes”。工单显示“会话已开始”,并给出 Web IDE 链接。当 PR 合并时,Devin 会将“Merged ✅”发布回 Slack,然后我在看板上移动卡片。在我回答“Yes”之前,这些都不消耗 ACU。
五个真实工单,五种迥异结果
以下是五个真实工单的简要情况:
|
工单 |
计划工作 |
ACU |
Devin 实际表现 |
|
迁移 SQLite → Postgres |
更换数据库引擎,运行迁移 |
0.6 |
无懈可击。一次提交,测试保持通过。 |
|
改进 Sandpack UI 并修复失败的测试 |
UI 微调 + 测试稳定性 |
5.0(两次会话) |
执意切回SQLite,漏掉迁移脚本,烧掉 ACU。最后我把 UI 与测试拆成两个提示,才在上限内完成。 |
|
在列表中显示完成勾选 |
在练习列表中添加 ✓ 徽章 |
0.8 |
一击成功;甚至加了乐观 UI。 |
|
验证发现系统 |
端到端检查每个文件都被解析 |
2.6 |
后端检查通过,但前端错误仍在。需要两次轻推。 |
|
移除废弃的成就代码 |
删除功能开关与陈旧组件 |
0.4 |
Devin 警告“低置信度”,然后精确移除了 30 个文件,并更新了 import,毫无差错。 |
看起来有些随机的点
以下方面还有待改进:
- PR 标题:我在每个提示中都指定了命名模式,但 Devin 每次都会发明一种新格式。
- 数据库忠诚度:在一个工单中它迁移到了 Postgres,而在另一个工单中又默默地重新引入了 SQLite。
- ACU 估算:分析评论称 sandpack 工单需 1.5 ACU,实际上是两次会话、5 ACU。
- 信心与执行:一个低置信度的工单 3 分钟完美执行;一个高置信度的工单折腾了 45 分钟。
Devin 在 Jira 上的表现颇有前景:两个工单完美收尾,一个稍加引导即可,最糟也只是耗时而非回滚。但一致性仍不足,因此紧凑的范围界定与明确的约束会很有帮助。
用 Jest 与 Playwright 添加自动化测试
在聊天与工单流转畅通后,下一步是确保坏代码无法混入。我让 Devin 做两件事:后端单元测试,以及模拟学习者在浏览器中编辑练习的 Playwright 端到端测试。
后端单元测试:出乎意料的顺利
我让 Devin 为 GraphQL resolver、服务层和 Prisma 模型编写 Jest 测试套件。当我询问 ACU 估算时,它回复了 20 ACU!!
我觉得这肯定是个错误,还是启动了任务。结果只花了 1.1 ACU,而且是迄今执行得最好的一项任务。
Playwright e2e:红墙、绿墙
这项稍贵一些,花了 2.3 ACU。
录制的流程:打开 /learn/option-01 → 编辑代码 → 等待 ✓ → 刷新页面 → ✓ 仍然存在。
首次运行约 70% 的断言失败。出现了许多尺寸变更的毛刺、仪表盘计数滞后,甚至“快乐路径”也会抖动失败。
尽管我在提示中写了“忽略失败测试,稍后再修”,Devin 还是不断改动代码,直到套件大多变绿(有用,但不是我要求的)。
系统里仍有一些 Bug,所以仍有测试失败。但这没关系,我们之后会把这些问题理顺,让所有测试都变绿。
添加一键 GitHub Actions 流水线
在单元与端到端测试就位后,最后一步是确保每个 Pull Request 都会自动运行这些检查。我让 Devin 提供一个极简工作流,不要制品、不要覆盖率闸口,只要 lint → 类型检查 → 测试。
Devin 一次性交付了一个令人惊喜的精致流水线,无需任何后续提醒:
- 零配置漂移:Devin 复用了已有 npm 脚本,无需学习新工具。
- 全面并行:Lint、类型检查与两套测试并行运行,整个工作流在 GitHub 的免费 runner 上约 4 分钟内完成。
- 清晰分诊:即便 ESLint 失败而测试通过,汇总作业仍会报告 lint 错误;您不会合并“部分为红”的代码。
Devin 推送了工作流,等待 GitHub 中的检查完成,确认无误后才宣布完成。不得不说,0.4 ACU 就得到一个完整可用的流水线,很难超越。YAML 显然是 Devin 的舒适区。
合并该工作流后,每个 PR 都必须通过 lint、编译以及两套测试,大家才能按下绿色按钮!
Devin 的内置 Wiki
Devin 自带一个可与您的代码并存的“Wiki”。它是一套轻量的、自动生成的知识库,代理在工作时既可读取也可写入。连接了 Slack、Jira 和 CI 之后,这个 Wiki 很适合放置架构笔记。值得一看!

据我所知,这不是手动可编辑的,您需要依赖 Devin 来保持 Wiki 更新。
成本与时间快照及思考
当所有集成、测试与流水线上线后,我统计了费用与用时:
|
工作模块 |
ACU |
动手时间 |
备注 |
|
Slack 与 Jira 接入 |
0.0 |
10 分钟 |
手动 OAuth 点击;无代理用时。 |
|
5 个 Jira 工单 |
9.4 |
2 小时推动与评审 |
两个工单尚可,一个需要推动、重试与测试,一个卡在 SQLite 切换。 |
|
Jest 单元套件(API) |
1.1 |
5 分钟评审 |
Devin 的“20 ACU”惊吓变成了 1 ACU 的精品。 |
|
Playwright e2e 套件(web) |
2.3 |
10 分钟评审 |
Devin 无视“不要修代码”,一路修到只剩 3 个测试为红。 |
|
GitHub Actions 流水线 |
0.4 |
3 分钟微调 |
一页 YAML;首试即绿。 |
|
合计 |
13.2 ACU |
≈ 2 小时 30 分钟 |
≈ $30(Core 价位)。 |
也就是说,大约 2 小时的人力投入,就把工单、测试与 CI 推了上去。比我自己做肯定更快。
不过此时我有些矛盾。系统仍有不少 Bug,如果整个代码库都是我写的,我也许能比 Devin 烧积分更快地修好问题。
但大部分应用是 Devin 写的,所以这个代理其实“比我更熟”结构。尽管如此,它依然难以把硬编码替换成动态值,每个文件里都会留下一些尾巴,而且需要我坐在电脑前看护它的所有动作。
我也觉得这个过程有点令人沮丧,但与我抓不到 Bug 时的沮丧不一样。就我个人而言,“为代码不工作而沮丧”与“为一个 AI 代理连基本指令都跟不住而沮丧”是截然不同的后者真让人抓狂。
我认为用得好时 Devin 非常有帮助,但和所有 AI 代理一样,它不能取代软件工程师。用于某些任务可以,但不适合、也难以可持续地用于每一张工单。
下一步是什么?
我们已接入 Slack 与 Jira,测试转绿,CI 闸口也会拦下每个草率的 PR。但要真正上线生产,我们还缺四大支柱:
- 认证:串起 NextAuth 凭据 → JWT Cookie → NestJS 中的
GqlAuthGuard,让进度与真实用户绑定。 - 安全加固:在 Web 与 API 运行时接入 Sentry 错误跟踪。
- 持续部署:为 Vercel(Web)配置流水线,在每个分支上生成预览 URL,并在主分支变绿时提升到
prod。
这就是第 4 部分的议程,也是最后的冲刺——看看 Devin 能否在几乎无需人工介入的情况下为应用提供安全、部署与看护。请再次把数据库固定到 Postgres、限制好 ACU,用最后一章见。
如果您已准备继续,请点击下方最后一项进入第四篇教程:
- 环境搭建与首个 Pull Request(第 1 部分)
- 用 Devin 交付一条垂直功能线(第 2 部分)
- 集成、测试与 CI/CD(第 3 部分)
- 安全、防护、部署与运维(第 4 部分)

我是一名具有产品思维的技术负责人,专注于帮助早期初创公司从首个原型成长到实现产品与市场匹配,并持续向前发展。我对人们如何使用技术充满好奇,热爱与创始人及跨职能团队紧密合作,将大胆的想法变为现实。不在打造产品的时候,我会在世界的新角落寻找灵感,或在瑜伽馆放松减压。