跳转到主要内容

概览

Devin 的 VPC 内部署方案允许在您的 VPC 中托管 Devin 的开发环境,从而使 Devin 的虚拟机能够访问公司防火墙后的专有资源。所支持的架构提供完全无状态的系统保证,这意味着在您的环境之外不会有任何数据静态存储/落盘。 您可以通过多种方式在您的环境中对 Devin 的访问进行细粒度控制,包括但不限于通过 SSO 或版本控制系统的访问控制来管理对您的服务或资源的访问。

信任中心

如需更多信息和安全相关文档,请访问我们的信任中心。

核心架构

Devin 包含两个主要组件:

Devin 的 DevBox

一个可自定义的开发环境,是 Devin 执行各项操作的场所。包含 shell、编辑器和浏览器功能,并部署在客户的 VPC 内。

Devin 的大脑

这是负责处理上下文片段并决定 Devin 每一步动作的核心智能系统,托管在 Cognition 的租户环境中。
Devin Enterprise Architecture

部署规格

基础设施要求

实例类型要求:
  • AWS:i3 裸金属 EC2
  • Azure:安全类型为 standard 的 Lasv3 实例
每个 Devin 会话都需要一个新的 VM。上述实例类型支持在 Devin 会话启动时按需创建 VM。请参阅 AWS VPC Setup 了解每个实例的并发容量。 **操作系统:**Ubuntu 24.04

架构

租户架构示意图
  • Cognition 租户托管在 Azure 上
  • **端口:**HTTPS/443(仅需允许从客户 VPC 发出的出站流量)
  • 在 DevBox 启动时,会打开一个 WebSocket 并连接到 Devin 租户中的隔离容器
  • 随后的所有交互都通过此连接进行
  • 此架构默认支持后端会话隔离
强烈建议为 Devin 在客户 VPC 内运行的实例提供访问互联网的权限

数据管理

Cognition 数据库

  • 仅存储元数据
  • 包含哈希引用数据(会话 ID、事件 ID 等)

客户数据库

客户数据分为两个存储位置:
  1. 主客户数据库:
    • 直接连接 Devin 的核心系统
    • 存储加密的会话日志和客户 Devin 数据
  2. 辅助客户数据库:
    • 连接到 VPC 内的实例
    • 存储 VM 快照,以便会话可以从快照启动
所有客户数据都使用自定义 KMS 密钥进行加密。所有数据库读写操作都通过原生 API 执行。

Secrets

每个新会话都会创建一个隔离的 Devin Brain 容器,并授予其访问客户数据存储的权限。Secrets(机密信息)会在会话开始时被解密并加载为环境变量,随后再次加密。整个过程是以编程方式完成的。
在发送到前端之前,机密信息会被脱敏处理,并以 [REDACTED SECRET] 的形式显示。

安全

加密

  • 数据静态存储时采用 AES-256 加密
  • 传输过程中使用 TLS 1.3 及以上版本加密

隔离

  • 每个会话使用独立的 Devin Brain 容器
  • 对公共前端 API 使用 AWS WAF 防护

DevBox 组件

Devin 的机器上预装了以下内容:
  1. 核心工具: git、python、java、docker 等
  2. 自定义组件:
    • VS Code server
    • 用于交互式浏览器控制的 VNC server
    • Devin 功能所需的专有 .py 实用脚本
你可以审计这些脚本,并根据需要精简默认安装的软件包。向你的 Cognition 代表请求 DevBox 设置脚本。

局限性

技术限制

  • 并发会话数量受裸金属实例容量限制
  • 可通过预配更多基础实例对容量进行水平扩展
  • 在低使用量期间,这些实例可能会被临时关机
  • 云基础设施成本由客户自行承担

部署限制

  • 不支持客户自有 AMI。需要进行一次性手动配置机器
  • 不支持非 Linux 操作系统

DNS 配置

Devin 实例的 DNS 配置需要正确设置,才能解析私有托管区域中的记录。如果你在解析私有记录时遇到 DNS 解析问题,请按照以下步骤操作。要使 Devin 实例能够解析私有托管区域中的记录:
  1. 更新 DNS 配置,使其使用 VPC DNS 解析器(.2 地址)而不是公共解析器。要获取该地址,请运行以下命令:
aws ec2 describe-vpcs --vpc-id <VPC_ID> --query 'Vpcs[0].CidrBlock' --output text | awk -F/ '{split($1,a,"."); print a[1]"."a[2]"."a[3]".2"}'
  1. 编辑 systemd-resolved 配置文件:
    sudo nano /etc/systemd/resolved.conf
    
  2. 将 DNS 条目替换为 VPC 的 .2 地址。
    [Resolve]
    DNS={N.N.N.2}
    
  3. 重启 systemd-resolved 服务以应用更改:
    sudo systemctl restart systemd-resolved
    
此配置可确保 Devin 实例能够正确解析你托管区域中的公共 DNS 记录和私有记录。