返回 FEED
AGENT2026-06-30

LangChain 推出 Dynamic Subagents:让 Agent 用代码编排子代理

LangChain 的 Sydney Runkle 昨天发布了一项重要更新:Deep Agents 框架正式支持 Dynamic Subagents(动态子代理)。这不是简单的子代理调用,而是让 Agent 通过代码来编排子代理——用 JavaScript 的循环、分支和并行批处理来分发任务、聚合结果。

为什么需要动态子代理?

Agent 处理复杂任务时面临两个核心痛点:

一是上下文膨胀。 当 Agent 调用搜索、读文件、查数据库等工具时,中间结果会迅速填满上下文窗口。子代理可以隔离这些脏活——主代理只收到最终结果,而不是产生结果的几十次工具调用记录。

二是规模化不可靠。 让模型一次选一个子代理来调用,在处理大量独立单元时(比如审查一个目录下的所有文件)效率极低且容易出错。

Dynamic Subagents 的解决思路是:把编排权从模型手里交给代码

核心机制:代码级编排

Dynamic Subagents 需要两个前提:配置好的子代理 + 代码解释器(基于 QuickJS 的安全运行时)。

当两者就位后,解释器会暴露一个全局的 task() 函数,Agent 可以在 JavaScript 代码中直接调用:

const reviews = await Promise.all(
  files.map((file) =>
    task({
      description: `Review ${file} for auth issues`,
      subagentType: "reviewer",
      responseSchema: issuesSchema,
    })
  )
);

这种模式被称为 Recursive Language Model (RLM) 工作流:把待处理的数据集保存在解释器变量中,选取切片,用 task() 分发给子代理,然后在代码中合成结果。

触发方式很简单——在提示词里加上 "workflow" 这个词,Agent 就会自动进入代码编排模式。

六种编排模式

LangChain 在文档中总结了六种常见的动态子代理模式:

1. 分类处理(Classify and act) 先对一批输入分类,然后按类别分发给不同的专业子代理。比如客服工单自动分类后,bug 给修复代理、功能请求给产品分析代理、咨询问题给支持代理。

2. 并行汇总(Fan-out and synthesize) 把同样的工作并行分发给多个子代理处理不同单元,最后汇总结果。比如并行审查目录下所有文件的 SQL 注入风险,然后合并输出一份风险摘要。

3. 对抗验证(Adversarial verification) 两轮验证:第一轮由审计代理找出潜在问题,第二轮每个问题独立交给验证代理确认真伪。只有被验证通过的问题才会进入最终报告。适合安全审计等对假阳性敏感的场景。

4. 生成筛选(Generate and filter) 多个子代理独立生成解决方案,主代理在代码中比较、评分、筛选,只保留最优方案。适合架构设计、重构策略等需要多方案比选的场景。

5. 锦标赛(Tournament) 多个变体两两对决,由裁判子代理评判胜负,胜者晋级下一轮,直到决出唯一冠军。适合主观标准下的优化选择,比如代码可读性改写。

6. 循环发现(Loop until done) 持续分发发现任务,每轮去重,直到没有新结果为止。适合需要穷尽搜索的场景,比如死代码检测、依赖审计。

与 Claude Code 等工具的对比

LangChain 同时发布了 dcode——一个基于 Deep Agent 的终端编码代理,开箱即用支持 Dynamic Subagents。用户只需说 "Run a workflow to..." 就能触发代码级编排。

这与 Anthropic 的 Claude Code、Vercel 的 Eve 等工具形成了有趣的对比:

  • Claude Code 侧重单 Agent 的深度代码理解和编辑能力
  • Vercel Eve 强调文件系统优先的持久化 Agent
  • LangChain Deep Agents 则在多 Agent 编排层面做了更系统化的设计,特别是把编排逻辑从模型推理层下沉到代码执行层

上手方式

最快的体验方式是安装 dcode

curl -LsSf https://langch.in/dcode | bash

运行后说 "Run a workflow to review every file in src/ for SQL injection" 即可看到动态子代理的实际效果——子代理会在面板中实时显示,按分发阶段分组。

也可以通过 ACP(Agent Communication Protocol)在其他支持 ACP 的编码代理中使用,比如 Zed 编辑器。

技术细节

Dynamic Subagents 建立在 LangChain 的 Deep Agents SDK 之上,该 SDK 本身是一个"Agent Harness"——在标准工具调用循环的基础上,内置了任务规划、文件系统、子代理生成、长期记忆等能力。

关键组件:

  • LangGraph 运行时:提供持久化执行、流式输出、人机协同等基础能力
  • QuickJS 解释器:轻量级 JavaScript 运行时,支持循环、分支、并行批处理
  • 虚拟文件系统:可插拔后端(内存、本地磁盘、LangGraph Store 等),支持权限控制
  • 流式事件stream.subagents 提供独立的子代理进度追踪

子代理的配置也很灵活,可以基于字典定义(指定名称、描述、系统提示、工具集、模型、权限等),也可以基于预编译的 LangGraph 图(CompiledSubAgent)。