文章

druce introduction

druce introduction

Druce — 多视角 AI 金融投研助手

零幻觉底座 · 多 Agent 博弈 · 可追溯核查 花五分钟得到别人花五小时手动搜索才能凑齐的行业情报。

Druce 是一个面向个人投资者的 AI 投研助手。它通过 确定性代码计算 保证财务数据零幻觉,通过 多视角 Agent 并行推演(价值派 / 成长派 / 风控派)打破单一 LLM 的平庸观点,通过 反思核查 Agent 逐句比对数据来源、剔除数字幻觉。

项目演示视频地址


1. 产品定位与架构

1.1 双路共存

Druce 同时支持两种报告路径,用户在侧栏 radio 切换:

路径名称数据基底输出形态延迟
路径 1广域搜集报告Tavily/Bing 搜索 + 巨潮资讯抓取四段(摘要/分点/风险/参考)1-3 分钟
路径 2AlphaAgent 研报AKShare 财务数据 + 多 Agent 推演五章 Markdown 研报待实测
flowchart TB
  U["用户输入<br/>(股票代码 / 公司名称 / 研究问题)"]
  U --> SW["侧栏 radio 切换"]
  SW --> P1["路径 1: 广域搜集报告"]
  SW --> P2["路径 2: AlphaAgent 研报"]

  P1 --> DC["问题拆解<br/>decompose.py"]
  DC --> SR["多轮联网搜索<br/>search.py"]
  SR --> RP["报告生成<br/>report.py"]
  RP --> OUT1["四段报告"]

  P2 --> DE["Data Engine<br/>AKShare + 确定性计算"]
  DE --> AG["3 个推演 Agent<br/>(价值/成长/风控)"]
  AG --> DB["Debate Agent<br/>汇总 + 共识/分歧"]
  DB --> AU["Auditor Agent<br/>溯源 + 数字比对"]
  AU --> OUT2["五章 Markdown 研报"]

1.2 路径 2 三层架构

路径 2(AlphaAgent 研报)采用 “确定性计算 + 多 Agent 协同推演 + 反思审核” 三层架构:

flowchart TB
  subgraph L1["层 1: 数据采集与确定性计算引擎 (Data Engine)"]
    AK["AKShare<br/>行情/财报"]
    CN["巨潮资讯<br/>PDF/文本"]
    FS["三大报表字段化"]
    RT["确定性比率计算"]
    AT["异常规则打标<br/>Anomaly_Tag"]
  end

  subgraph L2["层 2: 多视角投资框架 Agent"]
    VA["价值派 Agent<br/>(巴菲特/芒格)"]
    GA["成长派 Agent<br/>(彼得·林奇 GARP)"]
    RA["风控派 Agent<br/>(做空视角)"]
  end

  subgraph L3["层 3: 分歧辩论 + 反思核查"]
    DA["Debate Agent<br/>共识/分歧/分人群建议"]
    AA["Auditor Agent<br/>溯源标注/数字比对/打回重写"]
  end

  AK --> FS
  CN --> FS
  FS --> RT
  RT --> AT
  AT --> VA
  AT --> GA
  AT --> RA
  VA --> DA
  GA --> DA
  RA --> DA
  DA --> AA

LLM 多 provider 路由(grilling 3.2 拍板 e):

Agent 角色LLM理由
价值派 / 成长派 / 风控派DeepSeek便宜,推演逻辑可由 prompt 引导
Debate AgentGPT-4o强,做汇总裁决质量更高
Auditor AgentDeepSeek便宜,做数字比对逻辑性强

2. 核心模块清单

2.1 Data Engine(app/dataengine/

模块职责对应 PRD
akshare_client.pyAKShare 行情/财报拉取 + 文件缓存(财报 TTL 7 天,行情 TTL 1 天)+ 公司名→股票代码 resolver§3.1
financial_statements.py三大报表字段化提取,区分年报行(12-31 结尾)/季报行§3.1
ratios.py确定性计算 ROE / 毛利率 / 净利率 / 资产负债率 / PEG / 应收账款周转天数 / 经营性现金流-净利润比值§3.1
anomaly_tags.py异常规则打标(应收账款增速 > 营收增速 + 15% 等),输出 [Anomaly_Tag] 列表§3.1
cninfo_client.py巨潮资讯网 PDF/文本抓取,供第四章溯源§3.1
thresholds.py量化阈值定义(ROE > 15%、资产负债率 < 40% 等)§3.2

2.2 多 Agent(app/agents/

模块职责对应 PRD
value_agent.py价值派 Agent(巴菲特/芒格视角):护城河、ROE 稳定性、FCF、债务风险§3.2
growth_agent.py成长派 Agent(彼得·林奇 GARP 视角):营收/净利增速、PEG、存货匹配度§3.2
risk_agent.py风控派 Agent(做空视角):财报隐患、非经常性损益占比、现金流断裂§3.2
debate_agent.py分歧辩论与综合研判:汇总 3 个推演输出,生成多视角对比矩阵 + 共识/分歧 + 分人群建议§3.3
auditor_agent.py反思核查与数据可追溯:溯源标注、报告数字 vs AKShare 原始数据比对、不符则打回重写§3.4

2.3 编排与前端

模块职责对应 PRD
pipeline_v2.py路径 2 编排:Data Engine → 3 推演 Agent → Debate → Auditor,emit 进度回调§4
pipeline.py路径 1 编排:拆解 → 搜索 → 验证 → 报告现有
streamlit_app.pyStreamlit 单页前端,侧栏 radio 切换 path1/path2§1.1
llm.py多 provider LLM 路由(OpenAI 兼容 / DeepSeek / GPT-4o)§3.2
config.py环境变量与运行配置,has_llm / has_search / is_mock 三属性判定模式

3. 五章输出规范

路径 2 的 AlphaAgent 研报严格遵循 PRD v2 第四章的五章 Markdown 结构:

章节定位关键内容
第一章 摘要与多视角判定矩阵结论先行仪表盘,1 分钟掌握核心分歧公司摘要、投资视角碰撞矩阵、共识/分歧总结
第二章 基础数据与确定性指标分析零幻觉底座,所有数据由 Python/AKShare 确定性计算财务健康度硬指标表、估值与市场表现表、异常指标自动预警
第三章 经典投资框架深度推演3 个独立 Agent 站在不同投资哲学下深度推演价值派(巴菲特/芒格)、成长派(彼得·林奇 GARP)、风控派(做空视角),每个含核心指标阈值表 + 硬性判定规则 + Agent 推演输出
第四章 数据可追溯性与事实核查展现 AI 设计的严谨性,解决大模型幻觉关键事实溯源表(指标 × 近 5 年报告年份,每格数值 + 出处页码)、审查 Agent 修正记录
第五章 情景推演与投资策略建议从分析走向落地决策乐观/中性/悲观三种情景下的估值与策略、分人群操作建议表(保守型/稳健型/激进型)

4. 核心模块截图

⚠️ 截图待补 — 以下为占位标记,需启动 uv run python run.py 后拍摄并回填。

S1:侧栏路径切换 + 巨潮参数配置

S2:路径 2 端到端五章研报渲染

S3:路径 1 广域搜集报告(论点卡片 + 信源折叠)


5. 性能数据

⚠️ 性能数据待实测 — 以下表格中标注 待实测 的项需通过 tests/test_latency.py 补测。 标注 假数据 的项为占位估算值,不代表真实测量结果,实测后需替换。

5.1 响应时间(AC-05: 单次报告 ≤ 15 分钟)

路径阶段实测延迟PRD 标准达标
路径 1端到端(拆解 + 搜索 + 报告)1-3 分钟≤15 分钟
路径 2Data Engine(AKShare 拉取 + 确定性计算)待实测待验证
路径 23 个推演 Agent(串行 DeepSeek 调用)待实测待验证
路径 2Debate Agent(GPT-4o 汇总)待实测待验证
路径 2Auditor Agent(DeepSeek 核查)待实测待验证
路径 2端到端总计待实测≤15 分钟待验证

5.2 数据覆盖率

数据维度覆盖率数据源备注
三大报表字段化100%(近 5 年年报 + 全部季报)AKShare stock_financial_abstract_ths121 行/公司(1989-2026)
实时行情100%(37 个字段)雪球 stock_individual_spot_xq现价/PE/PB/股息率/每股净资产 等
巨潮溯源待实测巨潮资讯网 PDF 抓取5 年时序溯源矩阵
公司名→代码映射100%(白名单 17 家 + AKShare 全 A 股反查)resolve_symbol()P0 修复后生效

5.3 准确性指标

以下为 假数据占位,实测后需替换。

指标假数据值实测值测量方法
财务比率计算准确率99.2%待实测与 AKShare 原始数据交叉比对
Auditor Agent 幻觉检出率87.5%待实测人工标注 50 份报告
溯源页码命中率94.3%待实测巨潮 PDF 页码核对
公司名→代码映射命中率100%待实测白名单 + 全 A 股反查

6. 快速开始

6.1 安装依赖(uv 托管)

1
uv sync

uv sync 会自动创建 .venv 并安装 pyproject.toml 中声明的依赖。

6.2 配置密钥(可选)

无密钥时自动进入 mock 模式,返回示例数据,开箱可演示。

1
2
3
4
5
6
cp .env.example .env
# 编辑 .env,填入以下密钥:
#   OPENAI_API_KEY       — 路径 1 报告生成 + 路径 2 Debate Agent (gpt-4o)
#   DEEPSEEK_API_KEY     — 路径 2 推演 Agent (价值/成长/风控) + Auditor Agent
#   TAVILY_API_KEY        — 路径 1 多轮联网搜索 (优先)
#   BING_API_KEY          — 路径 1 搜索降级备选

6.3 启动

1
2
3
uv run python run.py
# 或指定端口
uv run python run.py 8888

浏览器打开 http://localhost:8501

6.4 使用路径 2(AlphaAgent 研报)

  1. 在侧栏 报告路径 radio 选择 “AlphaAgent 研报 (路径 2)”
  2. 在侧栏 公司简称 填入公司名(如”平安银行”),系统会自动解析为股票代码
  3. 在侧栏 交易所归属 选择沪市(sse)或深市(szse)
  4. 在主区域 st.chat_input 输入股票代码或公司名(如”平安银行”或”000001”)
  5. 等待 Data Engine → 3 推演 Agent → Debate → Auditor 串行执行
  6. 查看五章 Markdown 研报渲染结果

7. 验收标准

7.1 路径 1 验收标准

编号验收项标准当前状态
AC-01问题拆解自动生成 ≥3 个子搜索词,用户可见
AC-02信源数量每个观点至少 2 个独立来源
AC-03引用规范所有引用含来源 + 链接 + 时间,无遗漏
AC-04私有数据上传后优先引用内部资料,再补充公开信息
AC-05响应时间单次报告 ≤ 15 分钟✅ (1-3 分钟)

7.2 路径 2 验收标准(PRD v2)

编号验收项标准当前状态
AC-V2-01AKShare 接入输入股票代码,能拉到近 3~5 年三大报表 + 行情✅ (P0 修复后)
AC-V2-02确定性计算Python 侧计算出 PRD v2 第三章所有 Agent 需要的比率✅ (P0 修复后)
AC-V2-03异常打标触发异常规则时正确打 [Anomaly_Tag]
AC-V2-04价值派 Agent输入确定性计算结果,输出【看多/观望/看空】+ 护城河逻辑 + 最关心风险
AC-V2-05成长派 Agent输入确定性计算结果,输出【看多/观望/看空】+ 成长匹配度逻辑 + 拓展潜力
AC-V2-06风控派 Agent输入确定性计算结果,输出【低/中/高风险】+ 核心财务隐患清单
AC-V2-07Debate Agent输入 3 个推演输出,生成多视角对比矩阵 + 共识/分歧 + 分人群操作建议
AC-V2-08Auditor Agent输入 Debate 报告 + AKShare 原始数据,输出溯源表 + 修正记录,数字不符则打回
AC-V2-09五章输出路径 2 输出严格遵循 PRD v2 第五章规范(五章 Markdown 研报)
AC-V2-10双路共存Streamlit 用户可选路径 1 或路径 2,路径 1 不受影响
AC-V2-11延迟可控单次研报 ≤ 15 分钟(AC-05),串行拓扑下监控延迟待实测

8. 项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
.
├── app/
│   ├── agents/                    # 多 Agent 推演
│   │   ├── value_agent.py         # 价值派 (巴菲特/芒格)
│   │   ├── growth_agent.py        # 成长派 (彼得·林奇 GARP)
│   │   ├── risk_agent.py          # 风控派 (做空视角)
│   │   ├── debate_agent.py        # 分歧辩论与综合研判
│   │   └── auditor_agent.py       # 反思核查与数据可追溯
│   ├── dataengine/                # AKShare + 确定性计算
│   │   ├── akshare_client.py      # AKShare 接入 + 公司名→代码 resolver
│   │   ├── financial_statements.py # 三大报表字段化提取
│   │   ├── ratios.py              # 确定性财务比率计算
│   │   ├── anomaly_tags.py        # 异常规则打标
│   │   ├── cninfo_client.py       # 巨潮资讯网 PDF/文本抓取
│   │   └── thresholds.py          # 量化阈值定义
│   ├── config.py                  # 环境变量与运行配置
│   ├── llm.py                     # 多 provider LLM 路由
│   ├── pipeline.py                # 路径 1 编排 (广域搜集)
│   ├── pipeline_v2.py             # 路径 2 编排 (AlphaAgent 研报)
│   ├── streamlit_app.py           # Streamlit 前端
│   └── ...                        # 其他现有模块
├── docs/
│   ├── adr/                       # 架构决策记录
│   │   ├── 0001-single-user-no-multitenancy.md
│   │   ├── 0002-celery-redis-async-queue.md
│   │   ├── 0003-persistent-conversational-agent.md
│   │   └── 0004-prd-v2-alphaagent-architecture.md
│   └── screenshots/               # 核心模块截图 (待补)
├── druce-website/                 # PRD 文档站 (Rspress)
├── data/                          # AKShare 文件缓存 (git-ignorable)
├── tests/
│   ├── test_thresholds.py
│   └── test_latency.py            # 性能实测脚本 (待补)
├── run.py                         # 入口脚本
├── pyproject.toml
├── .env.example
└── README.md

9. 与 PRD 的对应关系

PRD 章节实现位置
§1.1 核心定位README.md 顶部 + app/streamlit_app.py 顶部文案
§2 产品总体架构app/pipeline_v2.py(三层架构串联)
§3.1 Data Engineapp/dataengine/ 全部模块
§3.2 多视角投资框架 Agentapp/agents/value_agent.py / growth_agent.py / risk_agent.py
§3.3 分歧辩论与综合研判app/agents/debate_agent.py
§3.4 反思核查与数据可追溯app/agents/auditor_agent.py
§4 输出成果规范(五章)app/pipeline_v2.py::_render_chapter_1 ~ _render_chapter_5
§验收标准README.md §7 验收标准对照表

License

MIT

本文由作者按照 CC BY 4.0 进行授权