在 LangChain,我们通过终端、Slack、Linear、GitHub 和 CI 与软件工程 Agent 交互。
不同的工作流需要不同的 Agent。本地编码应该感觉交互式。云端编码应该在后台运行并创建 PR。代码审查应该细致入微并与 GitHub 紧密集成。仓库文档应该贴近代码,并为 Agent 提供有用的上下文。
我们已经将这套系统构建为一组开源工具:
- dcode 用于本地编码
- OpenSWE 用于云端编码 Agent
- OpenSWE Review 用于自动化代码审查
- OpenWiki 用于仓库文档和 Agent 记忆
它们共同构成了我们的软件工程 Agent 工厂。这就是我们在内部使用的形态:本地 Agent、云端 Agent、审查 Agent、仓库记忆、开放模型,以及贯穿整个系统的 LangSmith 追踪。
为什么开源很重要
软件工程 Agent 读取代码、编辑代码、审查 PR,并参与工程工作流。团队需要理解并控制这些 Agent 的行为方式。
如果 Agent 是一个封闭系统,那就很难做到这一点。你只能受限于提供商支持的模型、审查行为、集成方式和可观测性。
我们希望 Agent 能够被团队检查、修改并适应他们自己的工作流,包括他们自己的审查标准、仓库惯例、模型选择和内部工具。这就是为什么这些项目都是开源的。
各个组件
dcode
dcode 是我们从终端使用的本地编码 Agent。

CLI 和 Agent 运行环境在本地机器上运行,而模型仍然可以托管。这让开发者可以直接在本地仓库上工作,同时使用可能无法在笔记本电脑上运行的大型编码模型。
我们使用 dcode 进行交互式编码工作:探索仓库、进行编辑、从终端执行实现任务。
OpenSWE
OpenSWE 是我们在工作需要在后台进行时使用的云端编码 Agent。
很多工程工作并不从终端开始。Slack 里出现了一个 Bug。Linear 中存在一个功能请求。仓库维护任务需要按计划运行。
OpenSWE 可以从 Slack、Linear、GitHub 或 Web UI 触发。它在云端运行,处理代码,完成后可以打开一个拉取请求。
在内部,这已成为我们使用最频繁的 Agent 工作流之一。就在上周,我们仅从 Slack 就触发了 OpenSWE 近 1,000 次,这还不包括 Linear 或 UI 的使用。
由于 OpenSWE 在云端的沙箱中运行,我们可以并行运行多个编码 Agent,而不会占用任何人的本地环境。
OpenSWE 还包含一个 UI,用于检查 Agent 的工作、与云端编码 Agent 聊天、配置模型和提示词、查看分析数据以及设置定时自动化任务。

OpenSWE Review
OpenSWE Review 连接到 GitHub 并自动审查拉取请求。它在代码合并之前识别 Bug 和回归问题。

它在外部基准测试中也表现出色。在 离线代码审查基准测试 中,OpenSWE Review 在使用 GPT-5.5 中等推理能力 时得分 47%。这使其位列 总排名第 6,并且在 开源代码审查 Agent 中排名第 1。
代码审查具有很强的组织特异性。不同的团队在关注什么问题、如何措辞评论、以及何时希望 Agent 阻止、建议或保持沉默方面存在差异。
OpenSWE Review 为我们提供了一个强大的默认设置,我们可以通过更改提示词、工作流、模型选择和特定于仓库的行为来对其进行调整。
OpenWiki
OpenWiki 使用 Google 的 开放知识格式 生成并维护代码库文档。
文档与代码共存,并通过 GitHub 操作自动保持最新。这为人类和 Agent 提供了一个维护良好的仓库知识层,而无需担心文档的维护工作(OpenWiki 会为你代劳!)。

如果一个 Agent 每次运行时都必须重新发现仓库的架构,那就会浪费 tokens 并遗漏重要的约定。OpenWiki 为编码和审查 Agent 提供了一个更好的起点,同时支持自动更新流程,这样你就再也不用操心维护你的 Agent 文档了。
技术栈
Deep Agents
dcode、OpenSWE、OpenSWE Review 和 OpenWiki 都建立在 Deep Agents 之上。
这些工作流各不相同,但它们共享相同的底层 Agent 基础。这为我们提供了一种一致的方式来构建、定制和改进跨本地编码、云端编码、审查和文档的 Agent。当它们都使用相同的框架构建时,共享代码、资源和工程知识变得更加容易。
开放模型
我们已经针对开放模型优化了技术栈。
SWE Agent 在组织中运行时,费用会迅速增加。本地编码、云端编码、代码审查、文档、定时维护和重复的仓库分析都会消耗 tokens。
开放模型让我们对成本(这是主要原因)、延迟和部署选择有了更多控制权。它们还允许团队将不同的任务路由到不同的模型,尝试开放的编码模型,甚至针对自己的仓库和工作流对模型进行微调。
LangSmith
我们使用 LangSmith 追踪这些 Agent。
当一个 Agent 打开一个 PR、留下审查评论或未能完成某项任务时,追踪记录会显示它检查过的文件、加载的上下文、调用的工具以及卡住的位置。
这些追踪帮助我们调试单个运行并逐步改进系统。我们利用它们来识别故障模式、改进提示词、比较模型,并将更高质量的示例输入到通过 LangSmith Engine 进行的持续改进工作流中。
用于编码 Agent 的 Engine 是我们一直在尝试的新工作流。我们让 Engine 对编码 Agent 的运行进行追踪分析,识别不足并提出优化建议。由于 LangChain 每位员工的每一次编码 Agent 运行都会被追踪,Engine 能够从全局视角识别并执行这些优化,而不是逐个针对特定工程师的追踪。
构建你自己的软件工程 Agent 工厂
这个技术栈反映了我们在 LangChain 使用软件工程 Agent 的方式,但这些组件都是开源的,因此其他团队可以进行改编,并完全控制自己的软件工厂。
你可以从小处着手:
- 使用 dcode 进行本地编码。
- 添加 OpenSWE,从 Slack、Linear、GitHub 或 Web UI 运行编码 Agent。
- 启用 OpenSWE Review 进行自动化 PR 审查。
- 使用 OpenWiki 为人类和 Agent 维护仓库知识。
- 如果你需要跨系统的可观测性和改进循环,将追踪连接到 LangSmith。
目标不是将每个工程工作流都塞进一个 Agent 界面,而是将合适的 Agent 放置在工程工作已经发生的地方,并给予足够的控制权,使它们适应你的仓库、模型和团队惯例。





