11.8 案例一:研报生成 Agent Team 流水线
面向经管学生、研究者与从业者的 AI 智能体设计教材
场景:某券商研究部要为一家上市公司撰写深度研报。任务拆为四个阶段:数据采集、财务分析、正文撰写、合规审查。每个阶段由一个队友负责,前一阶段的输出是后一阶段的输入。
项目目录
equity-report-pipeline/
├── data/ # 原始财报、公告
├── analysis/ # 财务指标计算结果
├── drafts/ # 研报正文草稿
├── output/ # 终稿与审查记录
├── .claude/
│ └── agents/
│ ├── team-lead.md # 团队协调者
│ └── data-collector.md # 数据采集队友
└── CLAUDE.md # 项目规则团队协调者配置
▶ Agent
---
name: report-pipeline-lead
description: 协调研报生成四阶段流水线
model: opus
tools:
- Read
- Write
- Bash
---
你是研报生成流水线的 Lead。按以下顺序调度四个队友:
1. data-collector:从 data/ 读取财报原文,提取核心财务数据,保存到 analysis/raw-metrics.json
2. financial-analyst:读取 raw-metrics.json,计算估值指标和同业对比,保存到 analysis/valuation.md
3. report-writer:基于 valuation.md 撰写研报正文,保存到 drafts/report-v1.md
4. compliance-reviewer:审查 report-v1.md 的合规性,保存审查意见到 output/review.md
每个队友完成后只返回一句话摘要。全部完成后,整合审查意见,生成终稿到 output/final-report.md。
数据采集队友配置
▶ Agent
---
name: data-collector
description: 从财报中提取核心财务数据
model: sonnet
tools:
- Read
- Write
---
你是数据采集队友。职责:
- 读取 data/ 目录下的财报文件
- 提取营收、净利润、毛利率、ROE、资产负债率等核心指标
- 按 JSON 格式保存到 analysis/raw-metrics.json
- 完成后返回一句话摘要,不要返回完整数据
启动流水线
▶ Claude Code
请启动研报生成团队,为贵州茅台(600519)撰写 2025 年三季报深度研报。
财报原文已放在 data/600519-2025Q3.pdf。
使用 in-process 模式,按 data-collector → financial-analyst → report-writer → compliance-reviewer 的顺序执行。
每个队友用 sonnet 模型,Lead 用 opus。
流水线的核心是严格的阶段依赖:每个队友只读取上一阶段的产出文件,不直接访问其他阶段的中间结果。Lead 的上下文始终只包含四句摘要,而非四份完整文档。
子代理定义用作队友时的差异
上面的 agent 配置中写了 model 和 tools 字段。当这些定义被用作子代理时,这些字段正常生效。但如果用同一定义来创建 Agent Teams 队友,model 和 tools 字段会被忽略——队友的模型由创建时在对话中指定,工具权限继承自 Lead。定义中的系统提示词部分(--- 之后的正文)则始终生效,作为队友的补充指令。