17.2 项目骨架与团队编制

面向经管学生、研究者与从业者的 AI 智能体设计教材

作者

李学恒、林建浩、严翊歆

发布于

2026-05-11

配图:Agent Teams 编制与 Tmux 窗口布局

搭建投研项目的第一步是确定目录结构和团队编制。目录结构决定数据和产出的存放规范,团队编制决定哪些 agent 各自负责什么。两者在项目初始化时一并完成。

投研项目目录结构

investment-research/
├── CLAUDE.md                    # 项目规则(数据来源声明、免责声明、输出格式)
├── .claude/
│   ├── agents/
│   │   ├── data-collector.md    # 信息采集 agent
│   │   ├── financial-analyst.md # 财务分析 agent
│   │   ├── industry-analyst.md  # 行业研究 agent
│   │   └── report-writer.md     # 报告撰写 agent
│   ├── skills/
│   │   ├── earnings-extract/    # 财报数据提取
│   │   ├── report-digest/       # 研报观点整合
│   │   ├── news-monitor/        # 新闻舆情采集
│   │   ├── fundamental/         # 基本面分析
│   │   ├── valuation/           # 估值分析
│   │   └── industry/            # 行业分析
│   └── rules/
│       ├── data-standard.md     # 数据规范(来源标注、格式、可信度评级)
│       └── output-format.md     # 输出格式(备忘录结构、图表标准)
├── raw_data/                    # 原始材料(采集 agent 产出)
│   ├── earnings/                # 财报数据
│   ├── reports/                 # 券商研报摘要
│   └── news/                    # 新闻舆情
├── analysis/                    # 分析报告(分析 agent 产出)
│   ├── fundamental.md           # 基本面分析报告
│   ├── valuation.md             # 估值分析报告
│   └── industry.md              # 行业分析报告
├── output/                      # 最终报告
│   └── investment-memo.md       # 投资备忘录
└── README.md                    # 项目说明

几个关键决定。raw_data/ 按数据源分三个子目录,由 data-collector agent 独占写入。analysis/ 存放三维分析报告,由 financial-analyst 和 industry-analyst 各自写入自己负责的文件。output/ 存放最终投资备忘录,由 report-writer 写入。三个目录的写入权限互不交叉,避免 agent 之间互相覆盖文件。

CLAUDE.md 投研特殊条款

投研项目的 CLAUDE.md 除了常规的路径规范和代码约定外,必须包含三类特殊条款:数据来源声明、免责声明和输出格式。下面是一份完整可用的范例。

# CLAUDE.md — 上市公司深度研究项目规则

## 项目信息

- 项目名:investment-research
- 目标:生成一份符合买方标准的投资备忘录
- 研究对象:[待填写公司名称和代码]
- 创建日期:2026-04-25

## 一、路径规范

- raw_data/:原始数据存储路径,由 data-collector 独占写入
- analysis/:分析报告路径,由 financial-analyst 和 industry-analyst 写入
- output/:最终交付物路径,由 report-writer 写入
- 禁止跨目录写入:采集 agent 不写 analysis/,分析 agent 不写 output/

## 二、数据来源声明

所有引用的数字必须标注来源,格式如下:
- 财报数据:[指标名称](来源:[年报/季报名称],第 X 页)
- 研报数据:[指标名称](来源:[券商名称],[报告标题],[日期])
- 新闻信息:[事件描述](来源:[媒体名称],[日期])
- 计算指标:[指标名称](计算方式:[公式],基于 [原始数据来源])

禁止使用无来源标注的数字。如果某项数据无法确认来源,
标记为"[待核实]"并在审阅阶段提醒分析师。

## 三、免责声明

所有产出文件的末尾必须包含以下声明:

---
免责声明:本报告由 AI 辅助生成,仅供研究参考,不构成投资建议。
所有数据和分析结论需经专业人士独立核验后方可用于投资决策。
数据截至 [日期],不保证信息的完整性和时效性。
---

## 四、输出格式

投资备忘录采用以下固定结构:
1. 投资概要(200 字以内,含核心结论和评级)
2. 核心投资逻辑(3-5 条,每条带数据支撑)
3. 财务分析(盈利能力、成长性、财务健康度、关键比率表)
4. 估值分析(DCF + 可比公司,含估值区间和当前价格对比)
5. 行业与竞争格局(市场份额、竞争优势、行业趋势)
6. 风险因素(按影响程度排序,每条标注概率和影响等级)
7. 投资结论与建议(含目标价区间和投资期限)
8. 附录:数据来源清单

## 五、人在回路节点

以下环节必须暂停等待分析师确认:
1. 数据源确认:采集完成后,确认数据是否齐全、是否可靠
2. 核心假设审查:增长率、折现率、退出倍数等关键参数
3. 分析逻辑审查:因果关系是否成立,结论是否过度外推
4. 结论措辞审查:评级和目标价的措辞是否合理审慎
5. 免责声明合规:确认声明内容完整且符合所在机构要求
数据来源声明的重要性

AI 生成的财务数字可能出现幻觉。分析师审阅时最常发现的问题是:数字本身看起来合理,但查原始财报后发现数据来自不同年份、不同口径甚至完全编造。数据来源声明的作用是让每个数字都可溯源,审阅时只需按来源逐条核对即可。

Agent 团队编制

投研 Agent Teams 包含 4 个专职 agent。每个 agent 有明确的能力边界、可用的 Skill 和输出目录。

Agent 职责 可用 Skill 输出目录
data-collector 从多个数据源采集原始材料 earnings-extract、report-digest、news-monitor raw_data/
financial-analyst 定量分析和估值计算 fundamental、valuation analysis/
industry-analyst 竞争格局和行业趋势分析 industry analysis/
report-writer 整合分析结果,生成投资备忘录 无专属 Skill,读取 analysis/ 全部文件 output/

4 个 agent 的协作顺序是:data-collector 先行采集,financial-analyst 和 industry-analyst 并行分析,report-writer 最后整合。这不是固定流水线,分析 agent 在工作中如果发现数据缺失,可以通知 data-collector 补采。

下面是 data-collector 的 agent 定义文件范例:

▶ Agent
---
name: data-collector
description: "投研信息采集专员,负责从财报、研报和新闻三类数据源采集原始材料"
model: sonnet
tools:
  - Read
  - Write
  - Bash
  - WebSearch
---

你是投研信息采集专员。你的任务是从多个数据源采集上市公司的原始研究材料。

## 职责范围

- 使用 /earnings-extract 从年报和季报中提取关键财务指标
- 使用 /report-digest 从券商研报中整合核心观点和目标价
- 使用 /news-monitor 采集近期新闻并分类整理

## 输出规范

- 所有产出存入 raw_data/ 对应子目录
- 每份文件必须包含 YAML frontmatter:数据来源、采集时间、可信度评级
- 可信度评级分三级:高(官方披露)、中(机构研报)、低(媒体报道)

## 约束

- 只在 raw_data/ 目录下写入文件,禁止修改 analysis/ 或 output/
- 遇到数据矛盾时标记为"[待核实]",不做主观判断
- 采集完成后通知 financial-analyst 和 industry-analyst 开始分析
词条:Agent Teams 与子代理

子代理:主代理的工具。主代理派出子代理执行任务,子代理完成后将结果返回给主代理。通信是单向的,子代理之间不能直接对话。

Agent Teams:多个 Claude Code 实例组成的协作团队。每个实例独立运行在自己的终端窗口中,可以直接通信、共享任务列表。适合需要多角色持续讨论和并行工作的场景。

在投研场景中选择 Agent Teams 而非子代理,是因为采集和分析 agent 需要独立运行较长时间,且可能需要互相通知数据补充需求。

Agent Teams 部署

Agent Teams 通过 Tmux 多窗口部署,每个 agent 在独立的终端窗口中运行。部署过程分三步:创建 Tmux 会话、启动各 agent、确认团队就绪。

首先在 Claude Code 中启动 Agent Teams:

▶ Claude Code
在投研项目 investment-research/ 目录下创建 Agent Teams。

团队编制:
- Lead:我自己(负责整体协调和审阅)
- data-collector:信息采集专员
- financial-analyst:财务分析专员
- industry-analyst:行业研究专员
- report-writer:报告撰写专员

用 Tmux 为每个 agent 开一个独立窗口,窗口命名与 agent 名称一致。
启动后让 data-collector 先开始采集工作,其余 agent 待命。

Claude Code 会创建 Tmux 会话并分配窗口。启动完成后的 Tmux 布局如下:

┌─────────────────────────────────────────────────────┐
│ Tmux session: investment-research                   │
├──────────────────────┬──────────────────────────────┤
│ 窗口 0: lead         │ 窗口 1: data-collector       │
│ (主控台,你在这里)    │ (正在采集财报/研报/新闻)      │
├──────────────────────┼──────────────────────────────┤
│ 窗口 2: fin-analyst  │ 窗口 3: ind-analyst          │
│ (待命,等采集完成)    │ (待命,等采集完成)            │
├──────────────────────┴──────────────────────────────┤
│ 窗口 4: report-writer                               │
│ (待命,等分析完成)                                    │
└─────────────────────────────────────────────────────┘
Tmux 窗口布局建议

Ctrl+B 然后按数字键在窗口之间切换。建议把 Lead 窗口放在 0 号位,采集 agent 放在 1 号位,两个分析 agent 放在 2 和 3 号位,report-writer 放在 4 号位。这个顺序与工作流阶段一致,方便跟踪进度。

如果屏幕空间充足,可以用 Ctrl+B 然后 %" 做分屏,同时观察多个 agent 的工作状态。

每个 agent 启动后会自动读取 CLAUDE.md 和自己的 agent 定义文件,加载对应的 Skill。data-collector 启动后立即开始采集工作,其他 agent 进入待命状态。当 data-collector 完成采集并将文件写入 raw_data/ 后,financial-analyst 和 industry-analyst 可以并行启动各自的分析任务。

这套部署方式的关键优势在于:每个 agent 拥有独立的上下文窗口,不会因为某个 agent 处理了一份超长年报而挤占其他 agent 的上下文空间。4 个 agent 之间通过文件系统交换数据,通过共享任务列表协调进度,各自独立运行、互不干扰。

确认团队就绪后,投研工作正式开始。data-collector 先行,两个 analyst 并行跟进,report-writer 最后整合。整个流程中,你在 Lead 窗口监控进度,在每个人在回路节点做审阅和确认。