如何运行云代理舰队 (完整指南)
本文是关于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
[周一早上]
@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
DeepWiki 自动索引你的仓库并生成:
-
架构图(什么依赖于什么)
-
模块摘要(每个目录的作用)
-
数据流图(数据如何在系统中移动)
对于公共仓库,请访问 https://deepwiki.com/ 查看自动生成的 wiki。
对于私有仓库,当你将仓库添加到 Devin 时,DeepWiki 会自动运行。
- Ask Devin
在开始会话之前探索代码库:
@Devin: 代码库中在哪里进行认证?
Devin: 认证发生在三个地方:
1. src/server/middleware/auth.ts - JWT 验证
2. src/lib/auth-client.ts - 客户端身份验证状态
3. src/app/api/auth/route.ts - 身份验证 API 端点
你想启动一个会话来处理身份验证吗?
从这一点开始会话时,Devin 会以完整的上下文开始。用于界定工作范围、理解架构或查找示例。
- MCP 集成
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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~