Skip to content

声明式多智能体协同:基于 Claude Agent SDK 构建深度研究系统

摘要总结:对复杂研究任务时,单智能体(Single-Agent)常因上下文稀释和逻辑疲劳导致产出质量下降。本文基于 Claude Agent SDK 探讨了多智能体系统(MAS)的工程化落地。通过 “Lead + Subagent” 的声明式架构,我们将深度研究拆解为搜索、量化分析、可视化绘图与结构化写作四个独立环节。 实践证明,通过严格的职责隔离(如 Lead Agent 仅负责调度)与工程边界约束(如 Researcher 强制提取量化指标),MAS 能够生成具备专业数据图表支撑的深度报告。本文将从架构设计、工作流编排到 PDF 自动生成,完整还原这一“AI 驱动调研流水线”的构建过程,并展示其在教育研究案例中的实战效果。

1. 引言

AI Agent 深度全景综述一文中,我们探讨了多智能体系统(Multi-Agent Systems, MAS)的理论优势。从理论层面看,这类系统通过任务分解、职责隔离与并行协作机制,有效突破了单智能体在复杂任务中的能力瓶颈——不仅显著提升了任务处理的天花板,更通过模块化的设计增强了系统的可解释性与可控性。

但在实际工程落地中,开发者往往会面临一个尴尬的现实:简单的任务单智能体就能搞定,复杂的任务给单智能体加再多 Prompt 也会陷入“逻辑疲劳”或“上下文迷失”。深度研究(Deep Research)正是这类复杂任务的典型代表。它要求系统在长上下文环境下,同时具备高效的信息检索、严谨的数据推理和专业的文档输出能力。

本文将分享我基于 Claude Agent SDK(TypeScript 版)构建 Deep Research Agent 的实践过程。我们将探讨如何通过声明式架构实现多 Agent 的职责隔离,并展示这种模式如何通过模块化设计显著提升研究报告的专业度。

说明

  • 本项目基于 Anthropic 官方示例进行了 TypeScript 重构与流程优化。完整代码已开源至 GitHub,托管在我与几位好友共同创建的 full-stack-workspace 组织下的 agent-playground 仓库中,具体路径为:@agent-playground/deepresearch-agent
  • 如果你希望了解 Python 版本的实现,建议直接查阅官方示例仓库:claude-agent-sdk-demos

2. 为什么深度研究需要 Multi-Agent 架构模式?

回顾我们自己在某个领域或专题进行深度研究的经历,不难发现:深度研究并非单一的写作任务,而是一个多工种流水线。这其实是一个典型的多阶段任务,每个阶段都需要不同的专业能力:

阶段描述
搜索阶段专注于信息检索与收集,帮助建立对该领域的初步认知
分析阶段对收集到的信息进行深度分析与归纳,提取关键洞察,并据此确定研究方向与重点
写作阶段将分析成果转化为结构化的文字内容,如研究论文、技术报告等
可视化阶段通过数据图表、信息图等形式直观呈现分析结果,提升信息传达效率

这种阶段化的专业分工,与人类研究团队中的协作模式高度契合。此外,深度研究任务往往涉及很多信息整合,具有较高的复杂度。若采用单智能体架构,通常会面临 Context Window 限制、早期信息被稀释、推理质量随任务推进而下降等挑战。

Multi-Agent 模式则通过任务分解、职责隔离与并行协作机制,有效突破了单智能体在复杂任务中的能力瓶颈——不仅能显著提升任务处理的上限,更通过模块化设计增强了系统的可解释性与可控性。

3. 系统架构

3.1 核心设计与职责分配

DeepResearch Agent 通过搜索、收集、分析各种来源的信息,将这些信息整合为带有可视化图表的深度研究报告,以支持复杂的研究和决策任务。其架构采用 Lead Agent + Subagent的设计思路:

  • Lead Agent 的核心规则是“只做管理,不做执行”。它的 allowedTools 被严格限制为 Task 工具。这种设计能有效防止 Lead Agent 因为过度处理细节而导致的逻辑发散。
  • Researcher 须找到 10-15+ 个具体数据点(百分比、市场规模、增长率等)供 Data Analyst 可视化
  • Report Writer 使用 Python + reportlab 通过 Bash 工具生成 PDF 报告,确保报告格式专业、内容
智能体职责工具
Lead Agent协调研究,并将任务委派给子智能体。任务分解、协调调度(仅使用 Task 工具委托任务)Task
Researcher并行网络搜索,收集量化数据(每个研究员专注一个子主题)WebSearch, Write
Data Analyst读取研究笔记,提取指标,生成 Python/matplotlib 图表Glob, Read, Grep, Bash, Write, Edit
Report Writer读取研究笔记和图表,生成 reportlab PDF 报告Skill, Write, Glob, Read, Bash

Claude Agent SDK 起源于 Anthropic 的 Claude Code 项目,采用了与 Claude Code 相同的声明式设计,支持自定义技能和命令,针对 DeepResearch Agent 的具体任务,我们可以利用其声明式和模块化设计,添加一些相关的自定义 Agent Skills 和 Commands 命令:

deepresearch-agent/
├── .claude/
│   ├── skills/            # 可使用的 Agent Skills 技能目录
│   │   ├── pdf/           # 生成 PDF 报告的技能
│   │   └── executive-briefing/ # 生成摘要的技能
│   ├── commands             # 可使用的 Agent Commands 命令目录
│   │   ├── market-trends.md # 市场趋势分析命令
│   │   ├── fact-check.md    # 事实核查命令
│   │   ├── ...
│   │   └── competitive-analysis.md # 竞争分析命令

3.2 工作流设计

工作流程示意

说明:

智能体输出说明
① 主智能体 Lead Agent任务分解将用户请求分解为 3-5 个子主题
② 研究员 Researcherresearch_notes/并行网络搜索,收集调查成果
③ 数据分析师 Data Analystcharts/从研究结果提取指标,生成可视化图表
④ 报告撰写员 Report Writerreports/结合调查研究 + 图表,生成 PDF 报告
用户输入研究主题


┌─────────────────────────────────────────────────────────┐
│  Lead Agent (协调者)                                    │
│  - 将主题分解为 2-4 个子主题                            │
│  - 并行生成 Researcher 子智能体                         │
│  - 等待所有 Researcher 完成                              │
│  - 生成 Data Analyst 子智能体 → 生成图表                │
│  - 生成 Report Writer 子智能体 → 生成 PDF 报告          │
└─────────────────────────────────────────────────────────┘


   PDF 报告 (files/reports/)

输出目录:

目录内容由谁生成
files/research_notes/研究员收集的量化数据(Markdown)Researcher
files/data/数据摘要和分析结果Data Analyst
files/charts/Python/matplotlib 生成的可视化图表(PNG)Data Analyst
files/reports/最终 PDF 报告(嵌入图表)Report Writer

3.3 技术要点说明

要点项备注说明
Lead Agent 核心规则仅使用 Task 工具:Lead Agent 的 allowedTools 仅包含 ["Task"],不直接使用其他工具
并行委托:多个 Researcher 同时运行,而非顺序执行
严格顺序:所有 Researcher 完成 → Data Analyst → Report Writer
研究员的数据优先策略• 使用 WebSearch 5-10 次进行数据聚焦查询
• 优先收集量化数据:市场规模、增长率、百分比、排名、对比数据
• 每个研究笔记必须包含 10-15+ 个具体数字
• 使用表格整理对比数据
图表生成Data Analyst 通过 Bash 执行 Python 脚本
• 使用 matplotlib/seaborn 生成图表
• 输出 2-4 个 PNG 图表到 files/charts/
• 同时生成 files/data/data_summary.md 作为数据摘要
PDF 报告生成Report Writer:
• 读取 files/research_notes/files/data/files/charts/
• 使用 pdf skill 获取 reportlab 指导
• 通过 Bash 执行 Python + reportlab 生成 PDF
• PDF 包含:标题、执行摘要、关键发现、图表、来源

4. 实践案例:以“初中数学学习研究”为例

为验证系统的实际效果,我设定了一个具体的研究课题进行测试。在这个案例中,系统的输出展现出了令人惊喜的"产品化质感"

4.1 执行流观察

主智能体将课题分解为“资源分布”、“重点模块”、“学习策略”等子任务,研究员们并行深入互联网寻找具体数字(如:各模块分值占比、记忆曲线数据)。

工作流程示意

在研究完成后,我们在 files/ 目录下找到了以下输出结果:

deepresearch-agent/
├── files                # 输出文件目录
│   ├── charts           # 可视化数据分析产出的图表
│   │   ├── xxx.png
│   │   └── ...png
│   ├── data             # 数据分析摘要总结
│   │   └── data_summary.md
│   ├── reports          # 研究报告产出
│   │   ├── 初中数学学习指南.html
│   │   └── 初中数学学习指南_report_20260328.pdf
│   └── research_notes   # 研究笔记产出
│       ├── 初中数学学习资源研究笔记.md
│       ├── 初中数学重点知识模块与学习策略.md
│       ├── 初中数学高效学习方法研究.md
│       └── 初中生数学学习问题与解决方法.md

4.2 数据可视化的深度

在这种多智能体合作的场景下,每个智能体都有自己的任务和职责,最显著的提升还是在于 Data Analyst 的表现。由于它接收的是经过 Researcher 筛选后的量化笔记,生成的图表不仅准确,而且具备极强的说服力,甚至让人眼前一亮:

图 1:初中生数学成绩下降原因分析

图 2:不同学习方法下的数学成绩优秀率对比

图 3:初中数学各模块分值占比分布示意

图 4:人的记忆保持随时间变化趋势曲线

这些图表并非简单的占位符,而是基于真实抓取的数据生成的专业资产。这种 “研究笔记 -> 量化提取 -> 代码绘图” 的链路,是单 Agent 架构难以企及的。

5. 结束语:迈向更可控的 Agent 开发

通过 Deep Research Agent 的实践,我们可以得出一个关键结论:Agent 的能力边界不仅取决于模型本身,更取决于开发者构建的工程约束

Claude Agent SDK 提供的声明式开发体验,让我们能够像编写后端服务一样,为每个 Agent 定义清晰的接口和职责。这种“工程化”的思维,正是我们将 AI 从“对话玩具”转化为“生产力工具”的必经之路。

目前系统在多轮迭代(Refinement)机制上仍有提升空间。未来我们将探索如何引入一个“校对 Agent”来对生成的 PDF 报告进行自动评审,进一步闭环质量管理流程,这也是智能化博客运营过程中需要考虑的一个重要方面。