LangChain 推出 Deep Agents v0.5,引入异步子代理(Async Subagents)能力,让 Agent 可以将耗时任务委托给远程代理后台执行,主线程不再阻塞。这一更新改变了 Agent 的架构模式,值得 Java 开发者关注。
核心更新:异步子代理
问题背景
之前的子代理(SubAgent)是同步阻塞的——当主代理调用子代理时,必须等待子代理完成后才能继续。对于短任务这没问题,但对于需要几分钟的深度研究、大规模代码分析、多步骤数据处理,阻塞就成了瓶颈。
主代理在等待期间无法响应用户,也无法推进其他工作。
解决方案
v0.5 引入了 AsyncSubAgent,核心变化:
- 非阻塞执行:主代理启动任务后立即返回任务 ID,继续其他工作
- 状态保持:子代理维护自己的会话状态,主代理可以中途发送指令或纠偏
- 并行执行:可以同时启动多个异步子代理
from deepagents import AsyncSubAgent, create_deep_agent
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-6",
subagents=[
AsyncSubAgent(
name="researcher",
description="Performs deep research on a topic.",
url="https://my-agent-server.dev",
graph_id="research_agent",
),
],
)
新增工具
配置异步子代理后,主代理自动获得 5 个工具:
| 工具 | 功能 |
|---|---|
start_async_task | 启动远程任务,立即返回任务 ID |
check_async_task | 轮询任务状态,完成后获取结果 |
update_async_task | 向运行中的任务发送后续指令 |
cancel_async_task | 取消运行中的任务 |
list_async_tasks | 列出所有任务及其状态 |
架构意义:异构部署成为可能
这个更新不只是"加了异步",而是改变了 Agent 的部署模式:
之前:所有代理在一个进程中运行,资源竞争,无法扩展
现在:
- 轻量级编排器负责调度
- 专用远程代理运行在不同硬件上
- 不同代理可以使用不同模型
- 每个代理维护自己的工具集
这正是企业级 Agent 架构的演进方向——关注点分离,按需扩展。
Agent Protocol:开放协议
任何实现 Agent Protocol 的服务都可以作为异步子代理的目标:
- LangSmith 部署的 Agent
- 自定义 FastAPI 服务
- 任何符合协议的实现
这意味着你可以用 Java、Go 或其他语言实现子代理服务,只要遵循 Agent Protocol。
对 Java 开发者的启示
1. 架构模式可以借鉴
异步子代理的思路可以应用到 Spring AI 项目中:
- 主服务负责编排和用户交互
- 耗时任务委托给独立微服务
- 通过消息队列或 HTTP 实现异步通信
2. Agent Protocol 值得关注
如果你在构建企业级 Agent 系统,Agent Protocol 提供了一种标准化的通信协议,可以作为微服务间 Agent 交互的基础。
3. Memory 与 Harness 紧密耦合
这次更新也印证了一个趋势:Memory 不是独立服务,而是 Harness 的核心能力。异步子代理维护自己的状态,正是 Harness 管理 Context 的体现。
总结
Deep Agents v0.5 的异步子代理能力,本质上是将 Agent 从"单体应用"拆分为"微服务架构"。这对于构建企业级 Agent 系统有重要参考价值:
- 解耦:编排与执行分离
- 扩展:按需部署专用代理
- 灵活:不同模型、不同工具集
- 开放:基于 Agent Protocol,实现语言无关
参考链接: