AI News HubLIVE
站内改写

Open SWE:用于内部编码智能体的开源框架

Open SWE 是一个基于 Deep Agents 和 LangGraph 构建的开源框架,它捕捉了 Stripe、Ramp 和 Coinbase 等公司在内部编码智能体方面的成功架构模式,提供了可定制的沙箱、工具集、编排和集成组件。

文章情报

工程师进阶

要点

  • Open SWE 集成了隔离的云沙箱、精选工具集、子智能体编排和 Slack/Linear/GitHub 触发方式。
  • 框架基于 Deep Agents 构建,支持轻松升级和定制。
  • 提供了与 Stripe 的 Minions、Ramp 的 Inspect 和 Coinbase 的 Cloudbot 的架构对比。

为什么重要

这条新闻值得关注,因为Open SWE 集成了隔离的云沙箱、精选工具集、子智能体编排和 Slack/Linear/GitHub 触发方式。

技术影响

可能影响模型选型、推理成本、产品能力和评测基准。

在过去一年中,许多工程组织都构建了内部编码智能体,以协助开发团队工作。Stripe 开发了 Minions,Ramp 构建了 Inspect,Coinbase 创建了 Cloudbot。这些系统通过 Slack、Linear 和 GitHub 等现有工作流集成,无需工程师采用新界面。尽管这些系统独立开发,但它们都收敛于相似的架构模式:隔离的云沙箱、精选工具集、子智能体编排以及开发人员工作流集成。这种趋同表明,在生产工程环境中部署 AI 智能体存在一些共同要求。

今天,我们发布了 Open SWE,这是一个开源框架,以可定制形式捕捉了这些模式。Open SWE 基于 Deep Agents 和 LangGraph 构建,提供了我们在这些实现中观察到的核心架构组件。如果你的组织正在探索内部编码智能体,这可以作为一个起点。

生产部署中的模式

Stripe、Ramp 和 Coinbase 都构建了自己的内部编码智能体。Kishan Dahya 撰写了一篇精彩的文章,阐述了这些编码智能体所做的不同架构决策。我们总结如下,然后深入探讨 Open SWE 在这些维度上的表现。

  • **隔离执行环境**:任务在专用云沙箱中运行,拥有完全权限但受严格边界限制。这隔离了任何错误对生产系统的影响范围,同时允许智能体无需每次操作都请求批准即可执行命令。
  • **精选工具集**:据 Stripe 工程团队称,他们的智能体可访问约 500 个工具,但这些工具是经过精心挑选和维护的,而非随时间累积。工具精选比数量更重要。
  • **Slack 优先调用**:这三个系统都将 Slack 集成作为主要界面,让开发人员在现有的沟通工作流中工作,而无需切换到新应用程序。
  • **启动时丰富上下文**:这些智能体在开始工作前,会从 Linear 问题、Slack 线程或 GitHub PR 中拉取完整上下文,减少通过工具调用发现需求的开销。
  • **子智能体编排**:复杂任务会被分解并委派给专门的子智能体,每个子智能体拥有独立的上下文和明确职责。

这些架构选择已在多个生产部署中被证明有效,但组织可能需根据自身环境和需求调整具体组件。

Open SWE 的架构

Open SWE 提供了类似架构模式的开源实现。以下是框架与我们所观察到的模式的映射:

  1. **智能体框架:基于 Deep Agents 构建**:Open SWE 并未复刻现有智能体或从头构建,而是基于 Deep Agents 框架组合而成。这种方法类似于 Ramp 的团队在 OpenCode 基础上构建 Inspect。组合提供了两个优势:升级路径(当 Deep Agents 改进时,可整合改进而不必重建自定义内容)和无需复刻即可定制(可保留组织特定的工具、提示和工作流作为配置,而非修改核心智能体逻辑)。
  1. **沙箱:隔离云环境**:每个任务在自己的隔离云沙箱中运行,这是一个具有完整 shell 访问权限的远程 Linux 环境。仓库被克隆进去,智能体获得完全权限,任何错误都被限制在该环境中。Open SWE 开箱即支持多种沙箱提供商:Modal、Daytona、Runloop、LangSmith,你也可以实现自己的沙箱后端。
  1. **工具:精选而非累积**:Open SWE 附带一组精选工具,包括执行 shell 命令、获取网页、API 调用、Git 提交和打开 PR、更新 Linear 工单、回复 Slack 线程,以及 Deep Agents 的内置工具。精心挑选的小型工具集更易于测试、维护和推理。当需要为组织添加额外工具时(内部 API、自定义部署系统、专用测试框架),可以显式添加。
  1. **上下文工程:AGENTS.md + 源上下文**:Open SWE 从两个来源收集上下文。AGENTS.md 文件(如果仓库根目录存在)会被读入沙箱并注入到系统提示中,编码每个智能体运行应遵循的约定、测试要求、架构决策和团队特定模式。源上下文:完整的 Linear 问题(标题、描述、评论)或 Slack 线程历史会在智能体启动前组装并传递给智能体,无需额外工具调用即可提供任务特定上下文。这种双层方法平衡了仓库范围的知识与任务特定信息。
  1. **编排:子智能体 + 中间件**:Open SWE 的编排结合了两种机制。子智能体:Deep Agents 框架支持通过任务工具生成子智能体。主智能体可以将独立的子任务委派给隔离的子智能体,每个子智能体拥有自己的中间件栈、待办事项列表和文件操作。中间件:确定性中间件钩子在智能体循环周围运行,例如在模型调用前注入后续消息、自动打开 PR 的 safety net、以及工具错误处理。这种智能体(模型驱动)与确定性(中间件驱动)编排的分离有助于平衡可靠性与灵活性。
  1. **调用:Slack、Linear 和 GitHub**:Open SWE 遵循 Slack 作为主要调用界面的模式。在 Slack 中,@机器人 可在任何线程中提及,支持 repo:owner/name 语法指定仓库。在 Linear 中,在问题上评论 @openswe 即可触发。在 GitHub 中,在 PR 评论中标记 @openswe 可处理审查反馈。每次调用创建一个确定性线程 ID,后续消息路由到同一正在运行的智能体。
  1. **验证:提示驱动 + 安全网**:智能体被指示在提交前运行 linter、格式化程序和测试。open_pr_if_needed 中间件作为后备,如果智能体完成而未打开 PR,则自动处理。可以通过添加确定性 CI 检查、视觉验证或审查门控来扩展验证层。

为何选择 Deep Agents

Deep Agents 提供了使此架构可组合且可维护的基础。上下文管理:长时间运行的编码任务可能产生大量中间数据,Deep Agents 通过基于文件的存储处理,将大型结果卸载而不是保留在对话历史中,有助于防止上下文溢出。规划原语:内置的 write_todos 工具提供了一种结构化的方式来分解复杂工作、跟踪进度并根据新信息调整计划。子智能体隔离:当主智能体通过任务工具生成子智能体时,该子智能体获得自己的隔离上下文,不同子任务不会互相污染对话历史。中间件钩子:允许在智能体循环的特定点注入确定性逻辑,例如消息注入和自动 PR 创建。升级路径:由于 Deep Agents 作为独立库积极开发,上下文压缩、提示缓存、规划效率等改进可以流入 Open SWE,无需重建自定义内容。

为你的组织定制

Open SWE 旨在作为一个可定制的基础,而非成品。每个主要组件都是可插拔的:沙箱提供商、模型、工具、触发器、系统提示和中间件。定制指南详细介绍了每个扩展点并提供示例。

与内部实现的比较

下表展示了 Open SWE 与 Stripe(Minions)、Ramp(Inspect)和 Coinbase(Cloudbot)在公开信息基础上的对比。核心模式相似,差异在于实现细节、内部集成和组织特定工具。

开始使用

Open SWE 现已托管在 GitHub 上。安装指南指导你完成 GitHub 应用创建、LangSmith 设置、Linear/Slack/GitHub 触发器和生产部署。定制指南展示如何为你的组织更换沙箱、模型、工具、触发器、系统提示和中间件。该框架采用 MIT 许可,你可以复刻、定制并在内部部署。如果你在其基础上构建了有趣的内容,我们很乐意听取你的反馈。

多个工程组织已成功在生产中部署内部编码智能体。Open SWE 提供了类似架构模式的开源实现,旨在适用于不同的代码库和工作流。我们仍在了解不同环境下的最佳实践,但该框架为探索此方法的团队提供了一个起点。