本文是关于Devin平台运行和扩展云代理的完整指南。它详细介绍了Devin的功能,包括如何设置第一个代理、将其扩展到多个入口、部署审查代理、运行并行代理舰队、创建Playbook以及自动化任务。文章强调Devin如何通过自动化各种开发工作来提高团队效率。

如何运行云代理舰队(完整指南)
我们是 Devin 背后的团队。这是我们关于如何运行云代理的指南,从首次会话到舰队规模。
Stripe 每周使用其内部系统合并超过 1,000 个代理编写的 PR。高盛、花旗、Ramp、Cal.com、Exa 和 Eight Sleep 等团队使用 Devin。在这些团队以及数百个其他团队中,Devin 已经生成了 120 万个已合并的拉取请求。
这是我们充分利用 Devin 的指南。它带有我们自己的观点,我们认为这是最快的入门方式。
有三件事必须首先实现:
模型已足够好,能够独立完成范围明确的任务。
验证可自动化(lint、测试、类型检查、审查),因此代理知道何时完成任务。
代理平台现在提供带有自己的 shell、IDE 和浏览器的沙盒环境。
无论是单人开发者还是 200 人的组织,只要你有任务需要分配,就可以并行运行任意数量的代理。
根据对话者的不同,你可能会听到它们被称为 云代理、后台代理 或远程代理。名称不重要,重要的是其理念:代理在自己的基础设施上运行,异步工作,并可供你的整个团队访问。
云代理可跨团队扩展。本地代理了解你打开的仓库。云代理可以针对你组织中的每个仓库进行配置。本地代理需要你进行观察、批准编辑和引导。云代理异步运行:描述 10 个任务,返回 10 个 PR。本地代理非常适合一个仓库中的一个开发人员。云代理将这项工作分布到整个组织:有人找出如何处理一类任务,编写一个 Playbook,任何人都可以触发它(无论是技术人员还是非技术人员)。
设置你的第一个云代理
扩展到多个入口点(Slack、Linear、API)
部署审查代理以处理 PR 瓶颈
运行一个无人值守的并行工作的代理舰队
为重复任务创建 Playbooks
自动化按计划运行的重复性或一次性会话
以下是每个 Devin 会话为你提供的内容:
云基础设施
每个会话都在远程基础设施上运行
每个代理一个独立的 devbox(shell、IDE、浏览器)
预热环境(数秒内启动,2.2 版后速度提高 3 倍)
无需本地设置
工作区
每个 Devin 会话都包含:
计算机使用:完整的 Linux 桌面,因此 Devin 可以启动应用程序、点击用户界面、测试桌面应用程序,并发送其工作的屏幕录像。
Shell:运行命令、查看输出、实时调试
IDE:完整的 VSCode,具有语法高亮、跳转到定义、多文件编辑功能
浏览器:浏览网站、阅读文档、填写表单
Devin 支持多个入口点(Slack、web、Linear/Jira、API),每个入口点将在下面详细介绍。
DeepWiki 和 Ask Devin 帮助你的团队在会话之前和期间理解你的代码库(将在下面的知识管理部分介绍)。
设置 - 先决条件:
一个 GitHub、GitLab 或 Bitbucket 账户
你想在其上工作的仓库(可以是个人或组织的)
10 分钟
步骤 1:注册
访问 https://app.devin.ai/ 并注册。在提示时连接你的 GitHub/GitLab 账户。
步骤 2:添加你的第一个仓库
访问 Devin's Machine 并点击“添加仓库”。选择你的仓库,然后按照设置步骤操作(git pull、secrets、依赖项、lint、测试、本地应用等)。Devin 会根据你的仓库自动建议其中大部分内容。

根据需要添加任意数量的仓库。
步骤 3:开始你的第一个会话
接下来,描述一个 Devin 要完成的任务:

提交它,然后观察 Devin 工作。
当 Devin 工作时,你可以在三个面板中跟踪其进展:
Shell:Devin 的终端显示正在执行的命令:实时查看输出,或者接管并自己运行命令。

Devin Shell
IDE:完整的 VSCode 实例。Devin 打开文件、进行编辑、保存更改。你可以点击任何文件来阅读或同时编辑。

Devin IDE
浏览器:Devin 阅读文档、测试 Web 应用和研究错误消息的地方。

一旦你了解了基本循环,下面是一个真实世界会话的示例。假设你的安全扫描器在你的依赖项中标记了 3 个 CVEs:
[在 Slack 或 Devin Web UI 中]
@devin 修复我们第四季度安全报告中的 CVEs:
https://your-security-scanner.com/report/q4-2024
要求:
- 将受影响的包升级到已打补丁的版本
- 运行完整的测试套件以确保没有回归
- 如果任何 CVE 无法修复(存在破坏性更改),请说明原因
- 提交包含摘要的 PR
Devin 获取报告,升级受影响的包,运行你的测试套件,并打开一个 PR。
## CVE 修复 - 2024 年第四季度
通过升级依赖项修复了 3 个 CVEs:
| 包名 | 旧版本 | 新版本 | 修复的 CVEs |
| ------- | -------- | -------- | -------------- |
| lodash | 4.17.19 | 4.17.21 | CVE-2021-23337 |
| express | 4.16.0 | 4.18.2 | CVE-2022-24999 |
| axios | 0.21.0 | 1.6.0 | CVE-2023-45857 |
**测试:**
- ✅ 所有单元测试通过 (247/247)
- ✅ 集成测试通过 (42/42)
- ✅ 类型检查无错误
- ✅ Lint 检查无错误
**安全报告:** https://your-security-scanner.com/report/q4-2024
该 PR 已准备好进行审查,所有测试均通过。同样的输入/输出模式,更复杂的任务。
Devin 拥有自己的知识文件系统——相当于 AGENTS.md。你可以在其中定义项目的架构、测试约定、验证要求和常见陷阱,它会在该仓库的每次会话中自动加载。在仓库设置期间或在你的仓库设置中配置这些内容。
Slack 集成
将 Devin Slack 应用程序添加到你的工作区。(设置 -> 集成)

然后:
[在 #engineering 频道中]
@devin 修复 src/api/routes.ts 中的类型错误
[在 #bug-reports 频道中]
@devin 登录按钮在移动设备上未对齐。
截图:[已附加]
[与 Devin 的私信中]
启动一个会话,将我们所有的依赖项升级到最新的稳定版本
Devin 在线程中回复,在工作时进行更新,并在完成后发布 PR。
Linear/Jira 集成(设置 -> 集成)
有三种方法可以从 Linear 票证启动 Devin 会话:
将 Devin 分配给一张票证 - 直接在 Linear 中将票证分配给 Devin。Devin 将使用你在 Linear 集成设置 中配置的默认 Playbook 开始处理该票证。
添加一个 playbook 标签 - 将一个 playbook 标签(例如 !plan, !implement, !triage, !review)添加到票证中。Devin 将使用与该标签匹配的特定 playbook 启动一个会话。这些标签从你在集成设置中配置的同步 playbook 标签同步而来。在评论中 @mention Devin - 在票证评论中 @Devin 并附带具体说明。Devin 将启动一个会话,并使用你的评论作为任务指令,而不应用 playbook。
示例:一张名为“当查询参数格式错误时,API 在 /users 返回 500 错误”的票证被分配给 Devin。Devin 读取票证上下文,修复验证问题,并打开一个 PR。
API 自动化
通过 API 将 Devin 接入基础设施:
import devin
# 在 CI 失败时触发
@app.post("/ci/webhook")
def handle_ci_failure(payload):
if payload.status == "failed":
devin.start_session(
prompt=f"修复 {payload.commit_sha} 中的 CI 失败:{payload.logs}",
repo=payload.repo,
branch=payload.branch
)
[周一早上]
@devin 将所有前端包中的 React 升级到 v19
@devin 为 src/billing 添加全面的测试
@devin 修复所有 TypeScript 严格模式违规
@devin 从 Jest 迁移到 Vitest
@devin 更新 API 文档以匹配当前端点
[午餐时回来查看]
5 个 PR 已准备好进行审查。
向 Devin 扔更多的任务,它们会自动并行运行。每个 Devin 都在自己独立的环境中运行(git 分支、开发服务器、测试数据库、shell)。
在 Cognition,工程师甚至在一个单一功能开发期间,会同时运行 5-10 个 Devin:
主会话:构建新功能
后台会话:测试覆盖率、文档、迁移、相关清理
更多的 PR 意味着更多的审查工作。Devin Review 吸收了这些工作。
Devin Review 的作用
对于 Devin 创建的每个 PR,它还会生成一个智能审查:
智能差异组织:将相关更改分组在一起,而非按字母顺序排列
所有类型更改都在一个部分
API 更改在另一个部分
测试更新按测试文件分组
复制/移动检测:显示“文件从 X 移动到 Y”,而不是完整的删除 + 插入
错误检测:自动标记具有置信度(严重、可能、潜在)的潜在问题
代码库感知聊天:在完整上下文下询问有关 PR 的问题
为你的仓库启用自动审查,并将 devin-ai-integration[bot] 添加到你的 机器人评论允许列表 中(在“设置 > 自定义 > 拉取请求设置 > 机器人评论设置”下,选择“仅回复特定机器人”)。现在:
Devin 打开一个 PR
Devin Review 自动分析它
如果发现错误,Devin Review 留下评论
原始 Devin 阅读评论并自动修复问题
重复直到干净
人工审查最终的、完善的 PR

Devin Autofix
Devin Review 适用于任何 GitHub PR,其他机器人也以同样的方式工作,只需将你的机器人添加到允许列表即可。
除此之外,你可以添加你的 CI 机器人,Devin 将自动修复你的管道标记的 lint 失败和构建错误。添加一个安全扫描机器人,Devin 将直接处理漏洞报告。从允许列表方法开始,一次添加一个机器人,以便在扩展之前验证每次交互。
DeepWiki 自动索引你的仓库并生成:
架构图(什么依赖于什么)
模块摘要(每个目录的作用)
数据流图(数据如何在系统中移动)
对于公共仓库,请访问 https://deepwiki.com/ 查看自动生成的 wiki。
对于私有仓库,当你将仓库添加到 Devin 时,DeepWiki 会自动运行。
在开始会话之前探索代码库:
@Devin: 代码库中在哪里进行认证?
Devin: 认证发生在三个地方:
1. src/server/middleware/auth.ts - JWT 验证
2. src/lib/auth-client.ts - 客户端身份验证状态
3. src/app/api/auth/route.ts - 身份验证 API 端点
你想启动一个会话来处理身份验证吗?
从这一点开始会话时,Devin 会以完整的上下文开始。用于界定工作范围、理解架构或查找示例。
Devin 通过 MCP 连接到数百个工具。常见的集成包括:
可观察性:Sentry、Datadog、Vercel、内部 API。
示例:
@devin 调查 /api/checkout 上错误激增的原因
使用 Sentry 查看堆栈跟踪
数据库:Postgres、Snowflake、BigQuery、Redshift
生产力:Notion、Linear/Jira、Slack、Google Drive
自定义 MCPs:为内部工具构建你自己的 MCP。
数据分析代理 (DANA)
Devin 还提供了一个专门的 数据分析代理。DANA 通过 MCP(Postgres、Snowflake、BigQuery、Redshift)直接连接到你的数据库,编写并执行 SQL,并在几秒钟内返回指标和可视化。你可以从 Slack(/dana 或 @Devin !dana)、Web 应用或 API 触发它。

DANA
DANA 在会话之间持久化模式知识,因此查询会随着时间推移而变得更快。它专为数据工作而设计;对于代码更改,请使用标准 Devin。
会话洞察
每次会话结束后,Devin 会生成会话洞察:
## 会话分析:迁移到 React 19
**成功之处:**
- 自动化依赖项升级
- 全面的测试套件捕获了破坏性更改
- 增量 PR 方法(每次一个包)
**减缓速度之处:**
- 第三方库中的类型错误(需要手动修补)
- E2E 套件中的测试抖动(与 React 升级无关)
**建议改进:**
1. 在升级前添加对第三方类型问题的预检查
2. 单独修复 E2E 测试抖动(它们阻碍了进展)
3. 考虑每周自动化依赖项升级(而不是每季度)
**下次改进后的提示:**
“将 React 升级到最新版本。首先检查 `@types` 包中的破坏性更改。
最初跳过 E2E 测试(它们不稳定)。在所有其他测试通过后运行 E2E。”
利用这些洞察来:
优化你的 Playbooks
改进知识文件
培训你的团队了解有效的方法
分析仪表板
跟踪你组织的使用情况:
每周会话数
成功率(导致合并 PR 的百分比)
节省的时间(估算)
最常见的任务
最常见的失败
利用此功能来:
识别瓶颈(“Devin 在 X 方面遇到了困难,我们来添加一个 Playbook”)
衡量投资回报率(“我们每周在迁移上节省 40 小时”)
指导投资(“我们应该专注于更好的测试覆盖率还是更快的 CI?”)
Playbooks
一旦你发现了模式(CVE 修复、测试覆盖率、数据库迁移、框架升级、lint 清理),请将它们捕获为 Playbooks,而不是每次都重写指令。
示例:测试覆盖率 Playbook
1. **分析现有代码:**
- 阅读指定模块中的所有文件
- 识别公共函数和类
- 检查现有测试
2. **识别覆盖率差距:**
- 运行覆盖率报告:`npm run test:coverage -- <module_path>`
- 列出覆盖率低于 80% 的函数
3. **编写测试:**
- 在 `__tests__` 目录中创建测试文件(如果不存在)
- 为未覆盖的函数编写单元测试
- 遵循代码库中现有的测试模式
- 包括边缘情况(null、undefined、空数组等)
4. **验证:**
- 运行测试:`npm test`
- 检查覆盖率:`npm run test:coverage -- <module_path>`
- 确保达到 >80% 的覆盖率
5. **文档:**
- 为已测试的函数添加 JSDoc 注释(如果缺失)
- 如果存在测试 README,请更新它
## 后置条件
- 所有测试通过
- 模块覆盖率 >80%
- 无 lint 错误
- 无类型错误
## 禁止操作
- 不要修改实现以使测试通过(测试应按原样通过)
- 不要跳过边缘情况测试以达到覆盖率数字
- 不要禁用 linter 规则
## 示例调用
"@devin 对 src/lib/billing 使用测试覆盖率 Playbook"
保存此 Playbook。下次:
@devin 对 src/lib/payments 使用测试覆盖率 Playbook
有些任务不应该需要人类来记住。依赖项更新、站立会议报告、lint 清理、覆盖率检查:这些都应该自动发生。
计划会话允许你设置 Devin 会话以 cron 计划(每小时、每天、每周或自定义)运行,或作为在特定时间的一次性运行。附加一个 Playbook,它每次都会遵循相同的过程。

计划会话
每个计划都允许你配置:
Devin 遵循的提示
哪个代理运行它(标准 Devin、Data Analyst 或 Advanced)
一个 Playbook(可选)
电子邮件通知(总是、仅在失败时或从不)
示例设置:
每周一 UTC 时间上午 9 点进行依赖项更新
每日站立会议总结已合并的 PR 和未解决的问题
每晚对所有仓库进行 lint 和类型检查扫描
所有过去的会话都记录在每个计划下,因此你可以审计运行了什么、何时运行以及是否成功。
50 个仓库面临相同的任务?你无需一个接一个地启动会话。
描述工作一次。Devin 会为你提供单独的会话以供审查,然后再启动:
将此 CSV 中的每个仓库升级到 Java 25
使用 Notion MCP 阅读 auth PRD,并提议独立的 Devin 会话来实现此功能
使用选定的 playbook 为附加 CSV 中的每个仓库启动一个 Devin 会in
附加一个 Playbook,这样每个会话都遵循相同的过程。我们看到团队通过这种方式单次运行批量处理了 10-100 个仓库。
你的第一个会话需要 10 分钟:app.devin.ai > 延伸阅读:
,
,
- 原文链接: x.com/dabit3/status/2028...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!