对外材料 done · 产品本体 0% · 24 周 6 个里程碑 · 路线图 v1.0

多市场 多 Agent 调研工作台
端到端架构一页可检

这一页把 五层架构 · 6 个里程碑 · 关键路径 M1 数据层 · Sprint Zero 日程 · 技术栈 · 4 个待决策 · 风险登记 全部图示化, 用于在开工前对齐工程实施路径。覆盖 A 股 / 港股 / 美股, 基于 Skills + MCP + LangGraph。

层数5 里程碑M1-M6 + Stage 3 时间窗24 周 团队6 人 对外材料✓ done
§ 1 · 三类用户画像

同一套底层能力, 两种使用模式

深度研究 / 广度筛选 / 即时问答三类用户共享同一组 Agent, 但在前端通过结构化模式(填参数 / 看仪表盘 / 导报告)和对话式模式(自然语言提问 / 自动 Skill 编排)分别承接, 不割裂成两个产品。

深度研究型

分析师 / 基金经理

每周数次 · 每次较长 · 极高深度要求
  • 一份能直接用的深度公司 / 行业研究初稿
  • 需要财务建模 + 估值(DCF / 可比)
  • 多空辩论看到不同视角
  • 报告可导出 DOCX / PDF
主用 结构化模式 · 仪表盘 · 报告库
广度筛选型

量化研究员 / 多策略基金

每日 · 高频 · 中深度
  • 批量筛选 + 快速初筛大量标的
  • 因子库勾选 + 排序股票池
  • Qlib Alpha158 + WorldQuant Alpha101
  • 导出 Excel pivot 直接对接量化框架
主用 结构化模式 · 筛选器 · 因子库
即时问答型

PM / 投资总监 / 个人专业投资者

不定时 · 碎片化 · 中低深度
  • 临时性、对话式的快速求证
  • "贵州茅台最新季度毛利率怎么样?"
  • 需要速度 + 可读性, 不需要深度建模
  • 对答如流 + 关键数据可点开
主用 对话式模式 · 自动 Skill 编排
§ 2 · 五层架构

L1 数据 → L2 工具 → L3 能力 → L4 编排 → L5 接口

数据自下而上流动, 控制自上而下托管。L3 是整套设计的工程边界: 左 Skills(知识 + 流程, 稳定)右 MCP(数据 + 计算, 有状态)。L5 同时服务自有 Web 与外部 LLM runtime。

L5 · 接口层 Web 工作台 Next.js · SSE 实时流 CLI invesresearch research REST API OpenAPI 3.1 + OAuth 2.1 外部 LLM runtime · 跨 runtime 调用 Claude Code · Codex · Gemini CLI · Cursor L4 · 编排层 · LangGraph StateGraph Supervisor 意图路由 Send 原语 分析师组(并行 fan-out) 公司 / 行业 / 宏观 / 财务 廉价模型 多空辩论 Bull ↔ Bear ↔ Neutral debate_round 估值 + HITL interrupt 人工确认假设 Risk + PM 综合结论 强模型 Report Gen 两段式 harness 大纲 → 执行 L3 · 能力层 · 双层封装 L3a · Skills(知识 + 流程, 稳定) 基本面调研 SKILL.md + sub-skills DCF / 行业研究 流程 / 模板 / 反思 研报写作规范 CN / EN 双语 L3b · MCP 工具(数据 + 计算, 有状态) get_financials FastMCP server run_dcf · screen 凭证不外泄 search_news vector_search 调用 L2 · 工具层 DCF / 财务指标计算 因子库 + 回测 · Qlib NLP / 情绪分析 · FinNLP 报告引擎 · WeasyPrint L1 · 数据层 · 关键路径 M1 A 股 · Tushare/AKShare 港股 · Longbridge 美股 · yfinance/edgar CircuitBreaker Token Bucket tenacity 重试 跨源校验 L1 cachetools LRU 进程内 · TTL 1-5min L2 Redis + 分布式锁 跨进程共享 · TTL 1h L3 DuckDB / Parquet 列式 · 财务历史 · TTL 1d L4 Postgres + TimescaleDB 真相源 · 行情时序 · 持久 数据 ↑ 控制 ↓
L5
接口层
Web + CLI + REST + 跨 runtime · 同一套底层
L4
编排层
LangGraph · 分析师组 · 多空辩论 · HITL
L3
能力层
Skills(知识)+ MCP(数据)双层封装
L2
工具层
DCF · 因子 · NLP · 报告引擎
L1
数据层
三市场 · 容灾 · 四层缓存 · 关键路径
§ 3 · 当前状态

对外形象做完了, 产品本体还没建

这是 2026-05-29 的盘点。24 周路线图做的就是"让 demo 里那条调研流真的能跑起来"。

已交付 对外材料 · done

2026-05-29 · 静态站点 · 零构建依赖
  • 落地页(index.html)web/
  • 交互 demo 工作台(app.html, 模拟数据)web/
  • 4 张架构 SVG 矢量图web/assets/diagrams/
  • 产品 PRD v1.0(为谁做 / 做什么)product-prd.md
  • 工程 PRD v2.0(怎么做 / 契约 / 验收)engineering-prd.md
  • 系统架构说明(四图配套文字)architecture-notes.md
  • 24 周 6 个里程碑路线图roadmap.md / roadmap.html
  • GitHub + Cloudflare Pages 部署 pipelineDEPLOY.md

待开发 产品本体 · 0%

8 大块 · 24 周 · 6 人 · M1-M6 + Stage 3
  • L1 数据层(适配器 / 路由 / 熔断 / 4 层缓存 / 真实数据接入)M1
  • L2 工具层(DCF / 因子库 / NLP / 报告引擎实现)M2-M5
  • L3 能力层(MCP server FastMCP / Skills 包)M2
  • L4 编排层(LangGraph / 分析师组 / 多空辩论 / HITL / checkpointer)M3
  • L5 接口层后端(API server / SSE 实时流 / 真实联调)M5
  • 运行底座(Postgres+Timescale / Redis / DuckDB / pgvector / Langfuse)M1
  • RAG + 舆情(向量库 / FinNLP / 量化筛选基础版)M4
  • 质量(eval 数据集 / CI 回归 / OWASP 安全加固)M6
§ 4 · 6 个里程碑 + Stage 3

24 周三阶段, M1-M6 落在前 20 周

关键路径长度:M1(4w)+ M2(2w 与 M1 重叠后)+ M3(4w)+ M5(4w)+ M6(6w)= 20 周。最危险节点 M1 数据层。

M1
W01-W04
数据层地基
M2
W03-W06
单 Agent + MCP
M3
W07-W10
多 Agent 辩论
M4
W07-W10
RAG + 舆情
M5
W11-W14
报告 + 前端联调
M6
W15-W20
三市场 + 私有化
M1W01-W04 · 4 周 · 1 BE + 0.5 SRE · 关键路径

数据层地基

在一堆不稳定的免费源之上, 搭出一个对上层透明、可用率 > 99% 的统一数据服务。任何延期向后传导
交付物
  • Provider 抽象 + Tushare/AKShare/baostock 三 provider
  • DataFetcherManager 市场感知路由
  • CircuitBreaker 三态熔断 + Redis 令牌桶
  • 四层缓存(LRU → Redis → DuckDB → Postgres)
  • Pydantic 契约:Security / DailyBar / Financials / Filing / NewsItem
M2W03-W06 · 4 周 · 1 BE

单 Agent + MCP 工具

让一个单独的 agent, 通过 MCP 拿数据、做基本面调研, 产出符合 schema 的结构化结果, 全链路在 Langfuse 中可追溯。
交付物
  • FastMCP server(stdio + Streamable HTTP + OAuth 2.1)
  • 核心工具:get_financials / get_quote / run_dcf
  • Skills 包初版:fundamentals-research/
  • Pydantic 原生 structured output
  • Langfuse 自托管 + OpenLLMetry 埋点
M3W07-W10 · 4 周 · 1 BE + 1 AI Eng

多 Agent 辩论编排

把单 agent 扩展成完整的多 agent 协作链, 带可恢复、可观测、可人工介入。
交付物
  • LangGraph StateGraph + Send 原语并行 fan-out
  • 估值 + HITL interrupt(WACC / g 确认)
  • 多空辩论(Bull ↔ Bear ↔ Neutral)+ debate_round
  • PostgresSaver checkpointer · 节点失败可恢复
  • Model routing(LiteLLM)+ 单会话 cost_tokens 护栏
M4W07-W10 · 与 M3 并行

RAG + 舆情

让系统能"看历史研报 / 看新闻 / 看社媒", 把非结构化信号纳入辩论。
交付物
  • pgvector 向量库(bge-large-zh + text-embedding-3)
  • 文档管道:历史研报 PDF + 新闻 + SEC filings
  • MCP 工具:vector_search / search_news / get_sentiment
  • FinNLP 情绪分析(Reuters / CNBC / 雪球)
  • Qlib Alpha158 + WorldQuant Alpha101 量化筛选
M5W11-W14 · 4 周 · 1 FE + 1 BE

报告生成 + 前端真实联调

Demo 切换到真实数据, 用户在 Web 发起调研, 看到 agent 实时进度, 下载完整研报。第一个对外发布锚点
交付物
  • 两段式 harness 报告(initializer + executor)
  • 四种模板:Quick / Deep / Sector / Earnings
  • PDF + DOCX 导出(WeasyPrint + python-docx)
  • 前端 vanilla → Next.js + SSE 实时进度
  • 报告库 v1(检索 + 收藏 + 版本 diff)
M6W15-W20 · 6 周 · 全员

三市场扩展 + 私有化

从 A 股扩展到港股 + 美股, 补齐 eval 与安全, 提供机构客户可选的数据不出域部署。
交付物
  • 港股 AKShare + Longbridge + 披露易
  • 美股 yfinance + Alpha Vantage + edgartools
  • vLLM 部署 + Qwen2.5-72B / DeepSeek-V3
  • Langfuse 气隙自托管方案
  • eval 数据集 ≥ 50 任务 + CI 回归 + Braintrust
  • OWASP MCP Top 10 安全加固
§ 5 · M1 数据层细节

关键路径上的关键路径

M1 是地基, 任何延期向后传导。本节展开 M1 内部的请求生命周期与四层缓存策略。

关键路径瓶颈

请求生命周期 · 7 步

一次 get_quote("600519") 调用要走过的完整路径。缓存命中时 ≤ 100ms, 未命中 ≤ 2s, 容灾组件保证 99% 可用率。

市场路由
ROUTING_TABLE
L1 LRU 查找
cachetools · 1ms
L2 Redis 查找
分布式锁 · 10ms
熔断检查
CLOSED / OPEN / HALF
令牌桶限流
Redis · 跨进程
Provider 调用
tenacity 重试
跨源校验 + 入缓存
差异 > 10% flag
Pydantic 契约校验
DailyBar / Financials
§ 6 · Sprint Zero(W01-W02)

14 天逐日拆解, 落到 M1 可演示雏形

这是把 M1 拆到 day 级的执行计划。Sprint 1 结束(D14)时, M1 sprint review demo + ADR-04/05 落档 + M2 sprint 计划。

任务产出
D1Monorepo 初始化 + ruff/mypy/pre-commit + Tushare 积分申请仓库骨架 + CI 通过
D2Docker Compose:Postgres+TimescaleDB / Redis 7 / Adminer + .env 模板本地栈起得来
D3Pydantic schema:Security / DailyBar / Financials / Filing / NewsItem + 单测schema 100% 覆盖
D4-D5Provider 抽象 + Tushare provider 完整(daily_bar + financials + health check)Tushare 跑通
D6AKShare provider 实现 + 跨源校验单测(差异 > 10% 触发 flag)双源对账通过
D7CircuitBreaker 三态实现 + tenacity 指数退避 + Redis 令牌桶容灾组件单测通过
D8四层缓存(cachetools → Redis → DuckDB → Postgres)+ TTL 策略缓存命中率 > 50%
D9DataFetcherManager + ROUTING_TABLE 装配 · market-aware dispatch端到端可跑
D10集成压测:30 支 A 股连续拉 24 小时 + 监控可用率 / 命中率 / 限流数据指标基线
D11-D12Langfuse 自托管 + OpenLLMetry 埋点 + Grafana dashboard(可用率/P95/命中率/熔断)可观测性 v0
D13M1 sprint review demo + 数据层 README + ADR-04 / ADR-05 落档M1 50% 验收
D14复盘 + M2 启动会(MCP server 设计评审 + Skills 包目录约定)M2 sprint 计划
§ 7 · 技术栈

按 5 层 + 横向能力分桶

所有第三方依赖锁定到当前稳定版本, 变更走 ADR。

L1 · 数据层

取数 + 容灾 + 缓存

Python 3.12TushareAKSharebaostockyfinanceedgartoolsasynciotenacitycachetoolsRedis 7DuckDBTimescaleDBPydantic v2
L2 · 工具层

计算 + 量化 + 报告

NumPy / PandasSciPyQlibWorldQuant Alpha101FinNLPWeasyPrintpython-docx
L3 · 能力层

MCP + Skills

FastMCPOAuth 2.1Pydantic AIAnthropic SDKAgent Skills spec
L4 · 编排层

状态机 + 模型路由 + 可观测

LangGraphPostgresSaverLiteLLMAnthropic Opus/SonnetDeepSeek-V3LangfuseOpenLLMetry
L5 · 接口层

前端 + 流式 + 网关

Next.js 14React QuerySSEFastAPIOpenAPI 3.1
RAG / 向量

检索 + 嵌入

pgvectorbge-large-zhtext-embedding-3-largeLangChain RetrievalQAPlaywright(爬虫)
质量 / Eval

回归 + 安全

BraintrustpytestOWASP MCP Top 10
私有化

气隙 + 自托管

vLLMQwen2.5-72BDeepSeek-V3Langfuse self-hostDocker ComposeK8s Helm
§ 8 · 4 个待决策

开发前必须拍板, 来自工程 PRD §11

这四个决策影响成本护栏的严格度、Stage 2 范围、开源边界与 HITL 强度。

商业模式与定价

按次 / 订阅 / 开源 + 企业版? 这直接影响成本护栏的严格度(免费用户必须更严)和付费源迁移时机(订阅模式更容易回收)。

截止 W04 · M1 收尾

私有化部署优先级

是否必须在 Stage 2 完成? 决定 M6 是否提前。机构客户对气隙部署需求强, 但额外加载 6 周工时。

截止 W08 · M3 启动前

免费数据源合规边界

法务对"研究用途"和"商业再分发"的界定。影响 Stage 3 是否能开源。AKShare 爬交易所页面在商业产品里是否合规?

截止 W12 · M5 启动前

DCF 默认假设的责任界定

系统建议值导致决策失误的责任归属。关系到 HITL 强度和免责设计。WACC 是必填还是有默认?

截止 W07 · M3 启动前
§ 9 · 高风险登记

6 个最危险的节点

从工程 PRD §11 + 路线图 §6 拍出来的 top 风险, 配缓解措施与责任人。

风险影响缓解责任
Tushare 积分申请未通过M1 主路径阻塞Day 1 提交 + 同时准备 baostock 兜底BE Lead
免费源被反爬封禁数据可用率下降代理池 + 双源 failover + 付费源应急脚本SRE
LLM 成本超 $0.5/次预算商业模式不成立Model routing 强制 + 缓存命中率 + Haiku 替代AI Eng
MCP / Skills spec 演进破坏兼容全栈重构风险锁定 stable 版本 + 包装层隔离BE Lead
前端 vanilla → Next.js 拖延M5 延期提前 W09 启动迁移 spikeFE
多空辩论变成"双方各说各话"产品价值不成立强约束 prompt + LLM judge eval 检查反驳率AI Eng
§ 10 · 关键路径

M1 数据层是真正的单点风险

关键路径锁在 M1 数据层 的可用率 > 99%

免费源 Tushare / AKShare / baostock 都不稳定, 任何一家被反爬或限流, 整套数据服务可用率立刻塌方。M1 不达标, M2 单 agent 没数据测、M3 辩论没数据辩、M5 报告没数据写, 全链条向后传导延期

具体到 Sprint Zero D1 必须同时启动: Tushare 积分申请 + baostock 兜底 provider 准备 + 反爬代理池预研。这三件事如果到 W02 还没动手, M1 验收节点必然滑出 4 周。

Tushare 积分 D1 提交 三 provider + 容灾 + 4 层缓存 M1 SLO 99% 可用率 M2/M3/M5 才有米
§ 11 · 源文档索引

本页所有判断的文字溯源

本页是图示层, 文字论述请回到对应 markdown。