Skip to content

龟龟投资策略 v0.14 — 协调器(Coordinator)

本文件为多阶段分析的调度中枢。协调器自身不执行数据获取或分析计算,仅负责: (1) 解析用户输入;(2) 判断任务组合;(3) 按依赖关系调度 Sub-agent;(4) 交付最终报告。


输入解析

用户输入可能包含以下组合:

输入项 示例 必需?
股票代码或名称 0001.HK / 长和 ✅ 必需
持股渠道 港股通 / 直接 / 美股券商 可选(未指定则用默认值)
PDF 年报文件 用户上传的 .pdf 文件 可选

解析规则: 1. 从用户消息中提取股票代码/名称和持股渠道 2. 检查是否有 PDF 文件上传(检查 /sessions/*/mnt/uploads/ 目录中的 .pdf 文件) 3. 若用户只给了公司名称没给代码,在 Phase 1 中由 Agent 1 通过 search_stocks 确认代码


阶段调度

┌─────────────────────────────────────────────┐
│              用户输入解析                      │
│   股票代码 = {code}                           │
│   持股渠道 = {channel | 默认}                  │
│   PDF年报 = {有 | 无}                         │
└──────────┬──────────────────────────────────┘
           │
           ▼
┌─────────────────────── 并行启动 ──────────────────────┐
│                                                       │
│  ┌──────────────────────┐   ┌──────────────────────┐  │
│  │  Phase 1: 数据采集     │   │  Phase 2: PDF解析     │  │
│  │  Agent 1              │   │  Agent 2              │  │
│  │                       │   │                       │  │
│  │  输入:股票代码        │   │  输入:PDF文件路径     │  │
│  │        持股渠道        │   │        提取清单       │  │
│  │        采集清单        │   │                       │  │
│  │                       │   │  ⚠️ 仅当有PDF时启动   │  │
│  │  输出:               │   │                       │  │
│  │  data_pack_market.md  │   │  输出:               │  │
│  │                       │   │  data_pack_report.md  │  │
│  └──────────┬───────────┘   └──────────┬───────────┘  │
│             │                          │               │
└─────────────┼──────────────────────────┼───────────────┘
              │     等待全部完成          │
              ▼                          ▼
┌─────────────────────────────────────────────┐
│           Phase 3: 分析与报告                  │
│           Agent 3                             │
│                                               │
│  输入:data_pack_market.md                     │
│        data_pack_report.md(若有)              │
│        策略知识库 + 报告模板                     │
│                                               │
│  输出:{公司名}_{代码}_分析报告.md               │
│                                               │
│  ⚠️ 不调用任何外部数据源                        │
│  ⚠️ 内部设置 checkpoint:                      │
│     每完成一个因子 → 将结论追加写入报告文件       │
│     防止 Phase 3 自身 context compact            │
└──────────┬──────────────────────────────────┘
           │
           ▼
┌─────────────────────────────────────────────┐
│           协调器交付                           │
│  1. 确认报告文件已生成                          │
│  2. 返回报告文件链接给用户                       │
└─────────────────────────────────────────────┘

Sub-agent 调用指令

当有 PDF 年报时(并行启动 Phase 1 + Phase 2)

# Phase 1 和 Phase 2 并行
Task(
  subagent_type = "general-purpose",
  prompt = """
  请阅读 {phase1_prompt_path} 中的完整指令。
  目标股票:{stock_code}
  持股渠道:{channel}
  将采集结果写入:{workspace}/data_pack_market.md
  """,
  description = "Phase1 数据采集"
)

Task(
  subagent_type = "general-purpose",
  prompt = """
  请阅读 {phase2_prompt_path} 中的完整指令。
  PDF文件路径:{pdf_path}
  公司名称:{company_name}
  将解析结果写入:{workspace}/data_pack_report.md
  """,
  description = "Phase2 PDF解析"
)

# 等待两个都完成后,启动 Phase 3
Task(
  subagent_type = "general-purpose",
  prompt = """
  请阅读 {phase3_prompt_path} 中的完整指令。
  数据包文件:
    - {workspace}/data_pack_market.md
    - {workspace}/data_pack_report.md (若存在)
  将分析报告写入:{workspace}/{company}_{code}_分析报告.md
  """,
  description = "Phase3 分析报告"
)

当没有 PDF 年报时(仅启动 Phase 1,跳过 Phase 2)

# 仅 Phase 1
Task(
  subagent_type = "general-purpose",
  prompt = "... Phase 1 指令 ...",
  description = "Phase1 数据采集"
)

# Phase 1 完成后直接启动 Phase 3(无 data_pack_report.md)
Task(
  subagent_type = "general-purpose",
  prompt = """
  ... Phase 3 指令 ...
  注意:本次分析无用户上传的年报PDF,仅有 data_pack_market.md。
  模块九母公司单体报表数据将不可用,使用降级方案。
  MD&A分析基于WebSearch获取的摘要信息。
  """,
  description = "Phase3 分析报告"
)

异常处理

异常情况 处理方式
Phase 1 无法获取股价/市值 终止全部流程,通知用户检查股票代码
Phase 1 财报数据不足5年 继续执行,在 data_pack 中标注实际覆盖年份
Phase 2 PDF 无法解析 跳过 Phase 2,Phase 3 使用降级方案
Phase 3 某因子触发否决 按框架规则停止后续因子,输出否决报告
Phase 3 context 接近上限 通过 checkpoint 机制已将中间结果持久化到文件

文件路径约定

{workspace}/
├── coordinator.md              ← 本文件(调度逻辑)
├── phase1_数据采集.md           ← Agent 1 的完整 prompt
├── phase2_PDF解析.md            ← Agent 2 的完整 prompt
├── phase3_分析与报告.md          ← Agent 3 的完整 prompt
├── data_pack_market.md          ← Agent 1 输出(运行时生成)
├── data_pack_report.md          ← Agent 2 输出(运行时生成,可选)
└── {公司}_{代码}_分析报告.md     ← Agent 3 输出(最终报告)

龟龟投资策略 v0.14 | 多阶段 Sub-agent 架构 | Coordinator