从零开始理解 Open SWE:一个会自己写代码的异步编程助手

“如果代码能自己改自己,工程师还能做什么?”
你可以把 Open SWE 想象成一位 24 小时在线的“代码管家”:它先读懂你的仓库,再制定计划、动手改代码,最后把成品打包成 Pull Request。你只需在关键节点点头或摇头,剩下的交给它。


1. Open SWE 到底是什么?

一句话:Open SWE 是一个开源、异步、云原生的编程代理,用 LangGraph 框架写成,能独立完成从规划到提交 Pull Request 的完整工作流。
它自带三个“大脑”:

大脑名称 职责 类比
Planner(规划者) 阅读仓库、拆分任务、生成计划表 项目经理
Programmer(程序员) 根据计划改代码、跑测试、修 Bug 资深工程师
Manager(经理) 协调 Planner 和 Programmer,处理人工反馈 技术主管

图:三个大脑协同流程(对应仓库 langgraph.json 配置)
ui-screenshot


2. 为什么需要异步?

传统脚本在本地跑,占 CPU、占端口、还怕断电。
Open SWE 把任务放进云沙盒:

  • 并行:你可以同时开 10 个任务,互不影响。
  • 断点续跑:掉线、关机、浏览器关掉,任务继续。
  • 人力节省:真正需要人出面的只有“计划确认”和“最终 Review”。

3. 两种最常用入口

入口 适合谁 一句话说明
Web UI 想点点鼠标就搞定 打开 https://swe.langchain.com,新建任务、看进度、发消息。
GitHub 标签 习惯在 Issue 里沟通 给 Issue 打 open-swe 标签,系统自动生成计划;加 -auto 让它直接开干。

FAQ:
Q: 用 GitHub 标签时,我怎么中途插话?
A: 直接在 Issue 里评论,Manager 大脑会实时读取并调整计划。


4. 安装到本地:15 分钟跑起来

以下步骤全部来自仓库根目录文档,不增删任何命令。

4.1 准备环境

  • Node.js ≥ 18
  • Yarn 3.5.1(已配置在 .yarnrc.yml不要换成 npm)

4.2 克隆与安装

git clone <repo-url>
cd open-swe
yarn install        # 一次性装好所有 workspace 依赖

4.3 构建顺序

Turbo 会自动按依赖顺序跑:

yarn build          # shared → open-swe → web

技巧:
以后每次改完代码,只要 yarn build,Turbo 会增量编译,省去重复劳动。


5. 项目结构 3 分钟速览

仓库是一个 Yarn workspace + Turbo 的 monorepo:

open-swe/
├─ apps/open-swe      # LangGraph 代理核心
│  ├─ src/graphs      # planner / programmer / manager
│  └─ langgraph.json  # 图配置
├─ apps/web           # Next.js 15 前端
│  └─ src/components  # 基于 Shadcn UI
├─ packages/shared    # 公共工具
│  ├─ crypto.ts
│  └─ open-swe/types.ts
└─ turbo.json         # 任务编排

小贴士:
想写共享函数?先去 packages/shared/src 搜一下,别重复造轮子


6. 开发守则速查表

规则 一句话记忆法
只用 Yarn npm i 会直接报错
根目录跑命令 yarn lintyarn format 都在根目录
禁止 console.log createLogger('模块名') 替代
先 build shared yarn build 会自动处理
提交前自检 yarn lint:fix && yarn format

7. 测试:让代码自己证明自己

7.1 三类测试

类型 文件名后缀 例子
单元测试 .test.ts take-action.test.ts
集成测试 .int.test.ts sandbox.int.test.ts
单次 任意 yarn test:single take-action.test.ts

7.2 常用命令

yarn test          # 全仓单元测试
yarn test:int      # 仅 open-swe 的端到端测试

注意:
集成测试默认 20 秒超时,跑在云沙盒里,第一次会拉镜像,耐心等。


8. 如何写第一个任务:手把手示例

场景:给 React 项目加一个按钮

  1. 用 Web UI

    1. 打开 https://swe.langchain.com
    2. 新建任务 → 填描述:“在首页右上角加一个绿色登录按钮”
    3. 等 Planner 生成计划 → 你点“确认”
    4. Programmer 开始改代码 → 你可以随时发消息“按钮颜色改成蓝色”
    5. 完成后自动提 PR,附带关闭关联 Issue 的关键字。
  2. 用 GitHub 标签

    1. 新建 Issue:标题同上
    2. 打标签 open-swe
    3. 5 分钟后,Planner 在 Issue 回复计划,你回复 LGTM
    4. 系统自动提 PR。

9. 高级用法:标签里的“暗语”

标签 含义 适用场景
open-swe 人工确认计划 普通任务
open-swe-auto 计划直接通过 简单改文案、修拼写
open-swe-max 用 Claude Opus 4.1 做规划 复杂架构调整
open-swe-max-auto 最强模型 + 自动执行 重构、大版本升级

10. 常见问题(FAQ)

Q1:我可以用自己的 LLM API Key 吗?

A:可以。Web UI 和 GitHub App 都支持在设置页填写 OpenAI / Anthropic Key,数据只在你的沙盒里用,不会回传。

Q2:沙盒里能装私有依赖吗?

A:支持。只要在仓库根目录放 `.npmrc` 或 `.yarnrc.yml` 指向私有源,构建时会把 token 注入容器。

Q3:任务失败怎么办?

A:
1. 打开任务详情 → Logs 面板看报错。
2. 在聊天框里@它“请重试第 3 步”。
3. 如果依赖版本问题,直接发“把 Node 升到 20”。

Q4:本地开发时,前端如何连本地代理?

A:
1. `cd apps/open-swe && yarn dev` 起代理(默认端口 8000)。
2. `cd apps/web && yarn dev` 起前端。
3. 浏览器自动通过 `/api` 反向代理到 8000。


11. 把 Open SWE 放进 CI/CD:一条命令模式

很多团队想让“每周依赖升级”自动化。最简单做法:

# .github/workflows/weekly-deps.yml
- name: Trigger Open SWE
  run: |
    gh issue create \
      --title "Weekly dependency bump" \
      --body "Bump all minor versions, run tests, open PR." \
      --label "open-swe-auto"

12. 小结与下一步

你现在的位置 建议的下一步
只是听说 打开 在线 Demo 新建一个“Hello World”任务
已跑通 Demo 把私有仓库加到 GitHub App,试一次真实 Issue
想贡献代码 阅读 packages/shared 的接口规范,提 PR 前跑 yarn test:int

最后提醒:Open SWE 不是“替代程序员”,而是把你从重复劳动里解放出来,让你专注更有趣的事。祝你玩得开心!