本文介绍了如何利用 Devin API 快速构建类似于 Ramp 公司内部编程代理 Inspect 的功能,从而避免数月的底层基础设施搭建工作。文章详细阐述了 Devin API 在沙盒环境、会话管理、结构化输出、并行代理、技能管理、秘密管理以及外部工具集成等方面的能力,并提供了具体的使用示例。

Ramp 构建了 Inspect,这是一个令人难以置信的内部后台编码 Agent,负责了他们大约 60% 的合并 PR。构建它需要数月的基础设施工作:托管沙盒、Agent 编排、会话状态和自定义工具。
像 AWS 和 Cloudflare 这样的云基础设施消除了管理物理服务器、修补操作系统和维护正常运行时间的需要。开发人员可以专注于他们的应用程序逻辑,而云提供商处理其余部分,而不是管理基础设施。Devin 将同样的原则应用于编码 Agent:沙盒、开发环境、Agent 运行时、编排、集成和工具都得到全面管理。你提供 prompt;Devin 处理其背后的一切。
以下是如何在 Devin API 之上复制 Inspect 功能的方法。你无需进行数月的基础设施工作,可以直接构建你团队独有的部分。
让我们直接开始!
通过 API 在此处涵盖的所有内容也都是
平台的一部分。
在你的 Devin 组织中创建一个服务用户(设置 > 服务用户)。你将获得一个以 cog_ 为前缀的 API 密钥。以下所有示例都从 .env 文件加载凭据:
Base URL: https://api.devin.ai/v3
Ramp 的规范在沙盒基础设施上投入了大量精力:每 30 分钟构建一次镜像,在 Modal 上快照文件系统,同步 Git 状态,预热沙盒池,以及管理生命周期。这是他们构建中最困难的部分。
Devin 会话已经在 隔离的 Linux VM 中运行,并拥有完整的开发环境。每个会话都从保存的快照启动,其中包含你克隆的仓库、安装的依赖项和配置的环境。机器拥有 shell、IDE、浏览器、Docker 和你需要的任何运行时。
你在 Devin 的仓库设置中配置一次。之后,每个通过 API 创建的会话都会自动从该快照启动。没有镜像注册表,没有重建镜像的 cron job,没有池管理。
你还可以传递 max_acu_limit 来限制每个会话的计算使用量。这对于自动化管道非常重要,因为失控的会话可能会消耗大量信用。
响应:
注意:API 返回一个
session_id(例如,abc123),但会话端点期望一个devin_id,它是以devin-为前缀的会话 ID(例如,devin-abc123)。通过在session_id前面加上devin-来构建devin_id。
status_detail 字段为你提供更细粒度的状态:在会话运行时为 working、waiting_for_user、waiting_for_approval 或 finished,以及在暂停时为 inactivity 或 usage_limit_exceeded 等原因。
Ramp 将执行期间发送的后续 prompt 排队。你也可以这样做:
终止一个失控的会话或归档一个已完成的会话:
Ramp 称多人模式为“任务关键型”。他们希望多人共同参与一个会话,并将提交归属于正确的作者。
Devin 的 API 通过 create_as_user_id 支持此功能。拥有 ImpersonateOrgSessions 权限的服务用户可以代表任何组织成员创建会话:
会话会出现在该用户的会话列表中。PRs 会归属于他们。任何团队成员都可以打开会话 URL 并发送消息。
Ramp 将 Token 实时流式传输到其客户端。使用 Devin,你将获得结构化输出:通过 structured_output_schema 参数传递 JSON Schema,Devin 会在工作时验证并更新它。你轮询会话以读取它。
这就是你将 Devin 的工作导入你自己的 UI、Slack bot 或仪表板的方式。
Ramp 的规范推荐一种工具,让 Agent 衍生子会话用于研究或将大型任务拆分为更小的 PRs。Devin 通过 Managed Devins 内置了此功能。你无需编写编排代码;只需用自然语言要求 Devin 并行处理工作。
Devin 充当协调者:它确定工作范围,启动子会话(每个都在自己的隔离 VM 中运行),监控进度,解决冲突,并汇总结果。
例如,跨多个表并行化迁移:
或者在多个模块中运行相同的任务:
Devin 分析你的请求并在启动之前提出会话供你批准。协调者还可以向子会话发送消息,监控它们的 ACU 消耗,并终止卡住的会话。
Ramp 使用“编码 Ramp 交付方式的技能”。Devin 有三种机制来实现这一点:
SKILL.md 文件提交到你的仓库 .agents/skills/<name>/SKILL.md。Devin 会自动发现它们。这些遵循开放的 Agent Skills 标准,因此它们适用于多种 AI 工具。Ramp 将 Inspect 连接到 Sentry、Datadog、LaunchDarkly 等。每个集成都需要凭据。Devin 以两种方式处理此问题:
Ramp 将 Inspect 连接到 Sentry、Datadog、LaunchDarkly、Braintrust、GitHub、Slack 和 Buildkite。在 Devin 中,你将这些配置为 MCP 服务器。Devin 的市场有 40 多个预配置集成:Datadog、Sentry、Linear、Slack、Figma、PostgreSQL、BigQuery 等。
对于自定义内部工具,使用 STDIO、SSE 或 HTTP 传输添加你自己的 MCP 服务器。配置在 Devin UI 的设置中完成。
Ramp 的第二篇博客文章描述了一个监控生产并自动分类警报的系统。
计划会话 API 允许你直接设置此功能:
对于 Ramp 的监控驱动模式(Datadog 警报触发,Agent 调查),使用调用 Devin API 的 webhook:
上传文件供 Devin 使用:
下载会话生成的文件(屏幕截图、生成的代码、日志):
Devin 已经有 原生的 Slack 集成,让你的团队可以直接从 Slack 启动会话、发送后续消息和获取更新。对于大多数团队来说,这已足够。
如果你想要自定义行为(将消息路由到特定仓库、使用来自其他系统的上下文丰富 prompt,或连接到你自己的内部工具),你可以在 API 之上构建自己的 bot。这是一个最小版本:
Ramp 建议构建一个分类器来确定要在哪个仓库中工作。你可以在创建会话之前使用快速模型调用来完成此操作,或者让 Devin 从 prompt 和你连接的仓库中找出。
在 PR 事件上触发 Devin:
以下是 Ramp 构建而你无需构建的内容:
create_as_user_id 进行会话归属你仍然需要构建:你的自定义客户端。一个 Chrome 扩展程序、一个网络仪表板、一个 GitHub webhook 处理程序,或者任何超出 Devin 开箱即用功能之外的集成。这些是你的团队工作方式独有的部分。Devin API 为所有这些提供了后端。
将所有内容整合在一起:一个从任何来源接收 Bug 报告并将其推动到合并 PR 的服务:
在某些情况和特定限制下,内部构建基础设施是合理的,但对于大多数团队而言,实现价值最快的途径是利用现有资源,并将工程精力集中在只有你的团队才能解决的问题上。
Ramp 的 Inspect 是一个精心设计的工具。构建它需要 Modal、OpenCode、Cloudflare Durable Objects、自定义沙盒生命周期、Git 集成管道以及数月的基础设施工作。
Devin API 将所有这些压缩为一组 REST 端点。会话在完全配置的 VM 中运行,其中你的仓库、依赖项和工具均已设置完毕。
你只需构建客户端。API 处理其背后的一切。
如果你根本不想构建任何东西,你可以直接使用 Devin。

8 分钟了解 Devin。
- 原文链接: x.com/dabit3/status/2037...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!