[特殊字符] 解锁内部编程助手:Open SWE 开源框架
Open SWE:开源的异步编码代理框架
在当今的软件开发环境中,企业越来越需要智能的工具来提高工程师的工作效率。Open SWE正是为此而生,它是一个用于构建组织内部编码代理的开源框架,让企业能够在Slackbot、命令行界面(CLI)和Web应用中,与工程师的日常工作完美结合。
Open SWE的设计灵感来源于Stripe、Ramp和Coinbase等领先的工程机构,它们构建了自己的内部编码代理,能够以最小的人类监督,在适当的上下文、权限和安全边界下与系统进行交互。使用Open SWE,您可以获得与这些公司内部架构相同的解决方案,包括云沙盒、Slack和Linear的调用、子代理编排,以及自动化的PR创建,所有这一切都可以根据您自己的代码库和工作流进行定制。
架构设计
Open SWE采用最佳实践的核心架构决策,以下是它与Stripe的Minions、Ramp的Inspect和Coinbase的Cloudbot的映射:
1. 代理架构 — 基于Deep Agents构建
Open SWE在Deep Agents框架之上进行组合,而不是从头开始构建。这为您提供了一个升级路径(可以引入上游改进),同时让您能够定制自己组织的编排、工具和中间件。
create_deep_agent(
model="anthropic:claude-opus-4-6",
system_prompt=construct_system_prompt(repo_dir, ...),
tools=[http_request, fetch_url, commit_and_open_pr, linear_comment, slack_thread_reply],
backend=sandbox_backend,
middleware=[ToolErrorMiddleware(), check_message_queue_before_model, ...],
)
2. 沙盒 — 隔离的云环境
每个任务都在一个隔离的云沙盒中运行,这意味着它们不会影响其他任务,确保了全权限的情况下最大限度地防止错误带来的风险。Open SWE支持多种沙盒提供者,包括Modal、Daytona、Runloop和LangSmith,同时您也可以插件自定义的沙盒。每个线程都有一个持久的沙盒,所有的任务均在自己的沙盒中并行运行,无需排队。
3. 工具 — 精心策划而非数量堆积
Open SWE遵循“工具策划比数量重要”的理念,提供了一小套专注的工具:
| 工具 | 目的 |
|---|---|
execute |
在沙盒中执行Shell命令 |
fetch_url |
以Markdown格式获取网页内容 |
http_request |
进行API调用(GET, POST等) |
commit_and_open_pr |
Git提交并打开GitHub草稿PR |
linear_comment |
在Linear的ticket上更新回复 |
slack_thread_reply |
在Slack线程中回复 |
这些工具旨在为您提供开发者日常工作所需的核心功能,同时内置的Deep Agents工具(如read_file、write_file等)使得操作更加灵活。
4. 上下文工程 — AGENTS.md和源上下文
Open SWE通过两个来源收集上下文信息:
AGENTS.md:如果代码库的根目录中包含AGENTS.md文件,代理将读取并在沙盒中注入这些信息,帮助代理在执行时遵循相应的编码规范、测试要求和架构决策。- 源上下文:将完整的Linear问题(标题、描述、评论)或Slack线程历史过去给代理,从而确保代理在进行工具调用之前拥有丰富的上下文信息。
5. 编排 — 子代理和中间件
Open SWE的编排分为两层:
子代理:Deep Agents框架支持通过task工具派生子代理。主代理可以同时向多个独立的子代理发出任务,每个子代理都有自己的中间件栈、待办事项和文件操作。
中间件:中间件挂钩在代理运行过程中执行:
check_message_queue_before_model:在模型调用之前注入新的消息(如Linear评论或Slack消息),确保代理在执行任务时,能够及时接收到新的输入。open_pr_if_needed:如果代理没有自己打开PR,该中间件将作为安全网进行补充操作,确保关键步骤的执行不会因为模型无法预期的行为而被跳过。ToolErrorMiddleware:优雅地处理工具错误。
6. 调用方式 — Slack、Linear和GitHub
Open SWE支持通过Slack、Linear和GitHub进行调用:
- Slack:在任何线程中提及代理,支持
repo:owner/name语法来指定工作仓库。代理会在对应的线程内回复状态更新和PR链接。 - Linear:在任何问题上评论
@openswe,代理会读取完整的问题上下文,并在处理后以评论的形式反馈结果。 - GitHub:在代理创建的PR评论中标记
@openswe,以使其回应审查反馈并将修复推送到同一个分支上。
7. 验证 — 基于提示和安全网
代理被指示在进行提交之前运行代码检查、格式化和测试,open_pr_if_needed中间件则作为补充,确保无论代理行为如何,都能保证生成PR。
特性总结
- 从Linear、Slack或GitHub触发 — 在评论中提及
@openswe以开始任务 - 即时确认 — 一旦接收到您的消息,代理会迅速以👀表情作出确认
- 在执行时与其交流 — 发送后续消息,代理将在执行下一步之前接收这些信息
- 并行运行多个任务 — 每个任务将在自己的隔离云沙盒中运行
- 内置GitHub OAuth — 自动与您的GitHub账户进行身份验证
- 自动打开PR — 完成后自动提交更改并打开草稿PR,并与相应的ticket链接
- 支持子代理 — 代理可以为并行子任务派生子代理
开始使用
同类项目对比
| 项目 | 功能 | 特点 |
|---|---|---|
| Open SWE | 内部编码代理 | 基于Deep Agents构建,支持自定义沙盒、工具,提供安全性和上下文管理 |
| Stripe Minions | 内部编码代理 | 基于Goose构建,使用AWS EC2开发箱,功能强大但不如Open SWE灵活 |
| Ramp Inspect | 内部编码工具 | 基于OpenCode构建,提供可视化DOM验证,但缺少Open SWE的安全性 |
| Coinbase Cloudbot | 内部编码助手 | 从头构建,功能灵活,但定制复杂度提升 |
通过Open SWE,企业可以轻松定制其内部编码代理,提升工程师工作效率,提升开发质量和安全性。希望以上信息能够帮助您了解Open SWE,快速构建符合您需求的编码解决方案。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)