AI 原生的 A 股智能投资助手——赛博操盘手 —— 基于大语言模型和 LangGraph 多智能体架构,为个人投资者提供专业级的股票分析、智能选股、投资组合管理、策略回测、AI 生成量化策略能力。
系统采用 LangGraph 构建的多智能体架构,由 OrchestratorAgent(编排器) 统一协调 15 个专业 Agent,实现智能意图识别和任务分发:
用户输入 → OrchestratorAgent → 意图识别 → 路由到专业Agent → 工具调用 → 自然语言回复
| Agent | 功能定位 | 典型场景 |
|---|---|---|
| OverviewAgent | 市场概览 | "今日大盘走势"、"市场情绪如何" |
| MarketAgent | 技术分析 | "分析贵州茅台走势"、"600519 估值如何" |
| ScreenerAgent | 智能选股 | "找出低估值高成长股票"、"筛选股息率>5%的股票" |
| ReportAgent | 财报分析 | "分析宁德时代财务状况"、"比较茅台和五粮液财报" |
| HKReportAgent | 港股财报 | "分析腾讯财报"、"00700 财务健康度" |
| PortfolioAgent | 持仓管理 | "查看我的持仓"、"分析投资组合风险" |
| BacktestAgent | 策略回测 | "回测双均线策略"、"测试选股条件历史收益" |
| IndexAgent | 指数分析 | "分析沪深300走势"、"创业板指技术形态" |
| EtfAgent | ETF 分析 | "分析科创50ETF"、"对比各行业ETF表现" |
| TopListAgent | 龙虎榜 | "今日龙虎榜"、"查看机构席位动向" |
| NewsAnalystAgent | 新闻分析 | "今天有什么热点新闻"、"分析市场情绪" |
| KnowledgeAgent | 知识库 | "搜索相关研报"、"查找财报公告"(RAG) |
| MemoryAgent | 用户记忆 | "记住我的自选股"、"我的投资偏好是什么" |
| DataManageAgent | 数据管理 | "更新今日数据"、"检查数据质量" |
| ChatAgent | 通用对话 | 其他投资相关问题、AI工作流调用 |
- 🎯 智能意图识别:自动理解用户自然语言,精准路由到对应 Agent,支持并发执行和 Agent 间交接
- 🔧 Function Calling:每个 Agent 配备专业工具集,精准调用数据接口
- 💬 流式响应:实时展示 AI 思考过程和工具调用状态
- 🔗 会话记忆:支持多轮对话,保持上下文连贯
- 📊 Langfuse 可观测:完整的 AI 调用链路追踪、Token 统计、性能分析
- 🔌 MCP Server:支持 Claude Code、Cursor 等 AI IDE 直接调用
我们定义了一套 Skill 可以一键基于 Tushare 的文档生成插件代码,插件是我们整套系统的数据采集基础,可以方便地扩展新的数据源和数据表。每个插件包括数据采集、数据清洗、数据入库等功能模块,并提供统一的 HTTP 接口与 MCP Tool 给 Agent 调用。当然也支持除 Tushare 之外的 AKShare、Baostock 等数据源。
可视化浏览所有插件数据表,支持 SQL 查询、数据预览、导出等功能:
- 数据表浏览:按分类查看所有插件数据表(A股、港股、指数、ETF等)
- SQL 查询:在线执行 SQL,支持语法高亮和自动补全
- 数据导出:支持 CSV、Excel、JSON 格式导出
- SQL 模板:保存常用查询模板,方便复用
专业级财报分析平台,支持 A股/港股 财报浏览与 AI 深度分析:
- 公司列表:支持按市场、行业筛选,关键词搜索
- 财报浏览:查看历史财报列表,快速定位报告期
- 双模式 AI 分析:
- ⚡ 快速规则分析:基于预设规则引擎,秒级出结果
- 🤖 AI 大模型深度分析:调用 LLM 深度分析,约 10-60 秒,洞察更深
- 分析历史:保存分析记录,支持对比查看
系统支持港股日线数据的自动采集,使用 AKShare 作为数据源(免费、无权限限制)。
# 1. 确保港股基础数据已加载
uv run cli.py load-hk-basic
# 2. 获取所有港股最近一年的历史日线数据
uv run scripts/fetch_hk_daily_from_akshare.py
# 3. 测试模式(仅获取前10只股票)
uv run scripts/fetch_hk_daily_from_akshare.py --max-stocks 10建议每日收盘后更新最新数据:
# 更新最近3天的数据
uv run scripts/fetch_hk_daily_from_akshare.py \
--start-date $(date -d "3 days ago" +%Y%m%d) \
--end-date $(date +%Y%m%d)- 股票覆盖:2,700+ 只港股
- 时间范围:最近一年历史数据
- 数据字段:开盘价、最高价、最低价、收盘价、成交量、涨跌幅等
- 数据源:AKShare(免费、无限制)
- 数据完整性:每只股票数据获取后立即入库,确保数据不丢失
- 错误处理:约 0.7% 的股票可能因退市、新上市等原因获取失败,属于正常现象
- 智能选股:港股数据已集成到智能选股系统,支持港股筛选和分析
- 性能:全量获取约 2,700 只股票需 40-45 分钟
详细文档请参考 港股日线数据迁移总结。
支持自定义 AI 工作流,串联多个 Agent 完成复杂任务:
# 示例:每日复盘工作流
steps:
- agent: OverviewAgent
action: 获取市场概览
- agent: ScreenerAgent
action: 筛选涨停股票
- agent: ReportAgent
action: 分析龙头股财务- 持仓跟踪:实时计算持仓盈亏
- 风险分析:波动率、最大回撤等风险指标
- 收益归因:分析收益来源
- AI 基于个人持仓定期分析
实时展示Agent的思考与工具调用过程,实时渲染相关技术指标图

- 全市场初筛:多因子模型初筛候选标的
- RPS 排名:相对强度排名筛选强势股
- 深度分析:基本面 + 技术面多维度综合评分
- 交易信号:基于量化模型自动生成买卖信号
- 模型配置:自定义因子权重和参数
使用Weknora开源知识库,需要手动配置 基于该知识库实现将财报内容存入知识库用于后续分析
- 实时新闻:自动抓取财经新闻,情绪分析
- 热点追踪:追踪市场热点板块和概念
- 新闻筛选:按情绪、板块、来源过滤
- 策略对抗:多个 Agent 执行不同策略,对比表现
- 淘汰赛制:自动淘汰弱势策略,留存强策略
- 可视化分析:收益曲线对比、雷达图评分
这里我们基于这个项目构建了财经股,基于财经库制作了基于热点新闻与各个公司的财报分析
适合没有现成 ClickHouse/Redis 的用户,所有基础设施由 docker-compose 一起启动。
# 1. 克隆项目
git clone https://github.com/Yourdaylight/stock_datasource.git
cd stock_datasource
# 2. 安装依赖
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
# 3. 交互式配置向导(自动验证 Tushare/LLM/数据库连通性,生成 .env)
uv run cli.py setup
# 4. 一键启动全部服务(ClickHouse + Redis + 后端 + 前端)
uv run cli.py server start --docker --with-infra
# 5. 初始化数据
docker compose exec backend bash -c "
uv run python cli.py init-db &&
uv run python cli.py load-stock-basic &&
uv run python cli.py load-trade-calendar --start-date 20240101 --end-date 20261231
"访问:前端 http://localhost:18080 | API 文档 http://localhost:18080/docs
已有 ClickHouse/Langfuse?运行
setup时选择自定义地址,向导会自动验证连通性。
Docker 日常运维:
uv run cli.py server start --docker # 启动
uv run cli.py server stop --docker # 停止
uv run cli.py server restart --docker # 重启
uv run cli.py server status --docker # 查看状态适合开发调试,需要本地安装依赖。
# 1. 克隆项目 & 安装依赖
git clone https://github.com/Yourdaylight/stock_datasource.git
cd stock_datasource
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
cd frontend && npm install && cd ..
# 2. 启动基础设施(Docker 仅启动 ClickHouse + Redis)
docker compose -f docker-compose.infra.yml up -d clickhouse redis
# 3. 交互式配置(自动创建 .env 并验证所有连通性)
uv run cli.py setup
# 4. 环境健康检查(一键诊断 6 项依赖)
uv run cli.py doctor
# 5. 初始化数据库
uv run cli.py init-db
uv run cli.py load-stock-basic
uv run cli.py load-trade-calendar --start-date 20240101 --end-date 20261231
# 6. 一键启动所有服务(后端 + MCP + 前端,后台运行)
uv run cli.py server start访问:前端 http://localhost:5173 | API 文档 http://localhost:6666/docs
日常开发命令:
uv run cli.py server restart # 重启所有服务
uv run cli.py server stop -s backend # 仅停止后端
uv run cli.py server status # 查看服务状态
uv run cli.py doctor # 环境健康检查
uv run cli.py config show # 查看配置(密钥脱敏)
uv run cli.py config set OPENAI_MODEL=gpt-4o # 修改配置项数据采集:
# A股/ETF/指数日线
uv run cli.py ingest-daily --date 20250119 # 采集单日
uv run cli.py backfill --start-date 20250101 --end-date 20250119 # 区间回补
# 港股
uv run cli.py load-hk-stock-list # 加载港股列表
uv run cli.py load-hk-daily --symbol 00700 --start-date 20250101 # 采集单只
# 通用插件运行
uv run cli.py run-plugin tushare_daily --trade-date 20250119 # 运行指定插件
uv run cli.py list-plugins # 查看所有插件系统提供了完整的命令行工具,覆盖配置、部署、数据采集全流程:
| 命令 | 说明 |
|---|---|
uv run cli.py setup |
交互式配置向导(自动验证连通性) |
uv run cli.py doctor |
环境健康检查(ClickHouse/Redis/Tushare/LLM/Proxy) |
uv run cli.py server start/stop/restart/status |
服务生命周期管理 |
uv run cli.py config show/set |
查看/修改配置(密钥自动脱敏) |
uv run cli.py init-db |
初始化数据库表结构 |
uv run cli.py ingest-daily |
采集单日数据 |
uv run cli.py backfill |
区间数据回补 |
uv run cli.py run-plugin <name> |
运行任意数据插件 |
uv run cli.py list-plugins |
查看所有已注册插件 |
uv run cli.py proxy status/set/test |
代理配置管理 |
uv run cli.py task list/stats/cancel |
任务队列管理 |
详细用法请参考 CLI 使用指南。
系统提供 MCP (Model Context Protocol) Server,可集成到 Claude Code、Cursor 等 AI IDE:
uv run python -m stock_datasource.services.mcp_server在 Claude Code 或 Cursor 中添加配置:
{
"mcpServers": {
"stock_datasource": {
"url": "http://localhost:8001/messages",
"transport": "streamable-http"
}
}
}系统提供标准 HTTP 数据查询接口,复用 MCP API Key 认证体系,让外部用户可通过 curl / Python / 任何 HTTP 客户端查询数据。
安全边界:仅开放 Plugin 数据查询接口(纯数据库查询),AI/管理/用户隐私路由一律不开放。
# 1. 在前端「个人中心」创建 API Key (sk-xxx)
# 2. 调用开放数据接口
curl -X POST http://localhost:18080/api/open/v1/tushare_daily/query \
-H "Authorization: Bearer sk-YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"trade_date": "20250301", "ts_code": "600519.SH"}'
# 3. 查看已开放的接口文档
curl http://localhost:18080/api/open/docs \
-H "Authorization: Bearer sk-YOUR_API_KEY"- 认证机制:复用 MCP API Key (
sk-xxx),支持 Header 和 Query 两种传入方式 - 访问策略:每个接口独立控制启用/禁用、速率限制、最大返回记录数
- 速率限制:滑动窗口算法,按分钟(默认 60/min)和按天(默认 10000/day)两维度
- 响应截断:超出最大记录数自动截断(默认 5000 条)
- 用量追踪:每次调用记录到 ClickHouse
api_usage_log表 - 管理面板:管理员在
/api-access页面配置可开放接口
| 类别 | 示例 | 状态 |
|---|---|---|
| A股日线 | /api/open/v1/tushare_daily/query |
需手动启用 |
| ETF日线 | /api/open/v1/tushare_etf_fund_daily/query |
需手动启用 |
| 港股日线 | /api/open/v1/akshare_hk_daily/query |
需手动启用 |
| 股票基本信息 | /api/open/v1/tushare_stock_basic/query |
需手动启用 |
| 财务报表 | /api/open/v1/tushare_income/query |
需手动启用 |
| 其他插件 | 全部 80+ 数据插件 | 需手动启用 |
绝对不开放的接口:
/auth/*、/chat/*、/datamanage/*、/portfolio/*、/memory/*、/mcp_api_key/*等系统/管理/AI路由。
┌─────────────────────────────────────────────────────────────────┐
│ 前端 (Vue 3 + TypeScript + TDesign) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐ │
│ │ 智能对话 │ │ 智能选股 │ │ 行情分析 │ │ 持仓管理 │ │ 财报分析 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬─────┘ │
│ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴─────┐ │
│ │量化选股 │ │新闻资讯 │ │策略工具台│ │多Agent场│ │ 开放API │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬─────┘ │
└───────┼──────────┼──────────┼──────────┼──────────┼──────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ API Layer (FastAPI) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ OrchestratorAgent (15 Agents) │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ 意图识别 → 并发路由 → Agent交接 → 聚合 │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │ │ │ │ │ │
│ │ ┌────▼───┐ ┌───▼────┐ ┌──▼───┐ ┌──▼───┐ ┌───▼────┐ │ │
│ │ │Overview│ │Screener│ │Report│ │Market│ │Backtest│ │ │
│ │ │ Agent │ │ Agent │ │Agent │ │Agent │ │ Agent │ │ │
│ │ └────────┘ └────────┘ └──────┘ └──────┘ └────────┘ │ │
│ │ + IndexAgent, EtfAgent, PortfolioAgent, MemoryAgent │ │
│ + TopListAgent, NewsAnalystAgent, KnowledgeAgent │ │
│ + DataManageAgent, ChatAgent, WorkflowAgent │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Open API Gateway (/api/open/v1/*) │ │
│ │ API Key 认证 → 速率限制 → Plugin数据查询 → 用量追踪 │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌───────────────────┐ ┌─────────────┐ ┌────────────────────┐
│ LLM Provider │ │ Redis │ │ Task Worker │
│ OpenAI / 国产大模型│ │ 队列 & 缓存 │ │ 任务调度/采集执行 │
└───────────────────┘ └─────────────┘ └────────────────────┘
│ │
▼ ▼
┌───────────────────┐ ┌───────────────────┐
│ Langfuse │ │ ClickHouse DB │
│ AI 可观测平台 │ │ A股/港股全量数据 │
└───────────────────┘ └───────────────────┘
| 层级 | 技术 |
|---|---|
| 前端 | Vue 3, TypeScript, TDesign, ECharts, Pinia |
| 后端 | Python 3.11+, FastAPI, LangGraph, DeepAgents |
| 数据库 | ClickHouse(列式存储,高性能分析) |
| 缓存 | Redis(会话缓存、数据缓存) |
| 数据源 | TuShare Pro(A股)、AKShare(港股) |
| AI | OpenAI GPT-4 / Kimi / 国产大模型,Function Calling |
| 可观测 | Langfuse(AI 调用链路追踪) |
| 开放接口 | Open API Gateway + MCP Server(外部数据查询) |
stock_datasource/
├── src/stock_datasource/
│ ├── agents/ # AI Agent 层(15个专业Agent)
│ │ ├── orchestrator.py # 编排器(意图路由、并发执行、Agent交接)
│ │ ├── base_agent.py # Agent 基类
│ │ ├── overview_agent.py # 市场概览
│ │ ├── market_agent.py # 技术分析
│ │ ├── screener_agent.py # 智能选股
│ │ ├── report_agent.py # A股财报分析
│ │ ├── hk_report_agent.py # 港股财报分析
│ │ ├── portfolio_agent.py # 持仓管理
│ │ ├── backtest_agent.py # 策略回测
│ │ ├── index_agent.py # 指数分析
│ │ ├── etf_agent.py # ETF分析
│ │ ├── news_analyst_agent.py # 新闻分析
│ │ ├── knowledge_agent.py # 知识库(RAG)
│ │ ├── memory_agent.py # 用户记忆
│ │ ├── datamanage_agent.py # 数据管理
│ │ ├── chat_agent.py # 通用对话
│ │ ├── workflow_agent.py # 工作流执行
│ │ └── *_tools.py # Agent 工具集
│ ├── plugins/ # 数据采集插件(80+)
│ ├── modules/ # 功能模块(22个)
│ │ ├── auth/ # 认证模块
│ │ ├── chat/ # 对话交互
│ │ ├── market/ # 行情分析
│ │ ├── screener/ # 选股模块
│ │ ├── report/ # 财报研读
│ │ ├── hk_report/ # 港股财报
│ │ ├── financial_analysis/ # 财务分析中心
│ │ ├── overview/ # 市场概览
│ │ ├── news/ # 新闻资讯
│ │ ├── etf/ # ETF基金
│ │ ├── index/ # 指数选股
│ │ ├── portfolio/ # 持仓管理
│ │ ├── backtest/ # 策略回测
│ │ ├── arena/ # 多Agent竞技场
│ │ ├── quant/ # 量化选股
│ │ ├── memory/ # 用户记忆
│ │ ├── datamanage/ # 数据管理
│ │ ├── open_api/ # 开放API网关(NEW)
│ │ ├── mcp_api_key/ # MCP API Key 管理
│ │ ├── token_usage/ # Token用量统计
│ │ └── mcp_usage/ # MCP调用统计
│ ├── services/ # HTTP / MCP / 任务队列等核心服务
│ ├── tasks/ # 定时任务与调度
│ └── core/ # 核心组件(插件管理、服务生成器等)
├── skills/ # 技能包(tushare-plugin-builder、stock-rt-subscribe等)
├── frontend/ # Vue 3 前端
├── scripts/ # 数据采集脚本
├── docker/ # Docker 配置
├── docs/ # 文档
├── cli.py # 命令行工具
├── docker-compose.yml # 应用服务
├── docker-compose.infra.yml # 基础设施
└── tests/ # 测试
# 运行所有测试
uv run pytest tests/
# 测试 AI Agent
uv run python -c "
from dotenv import load_dotenv; load_dotenv()
from stock_datasource.agents import get_orchestrator
import asyncio
async def test():
orch = get_orchestrator()
result = await orch.execute('今日大盘走势如何')
print(result.response)
asyncio.run(test())
"| 文档 | 说明 |
|---|---|
| CLI 使用指南 | 命令行工具详细使用说明 |
| 开发指南 | 开发者文档 |
| 插件开发 | 新建数据插件快速参考 |
检查端口配置 APP_PORT,确保没有被占用。查看日志 docker-compose logs frontend。
检查 .env.docker 中的 OPENAI_API_KEY 是否正确配置,然后重建容器:
docker-compose build backend && docker-compose up -d backend修改 .env 中的配置:
OPENAI_BASE_URL=https://your-provider-url/v1
OPENAI_MODEL=your-model-name
OPENAI_API_KEY=your-api-key确保 TuShare Token 有效且有足够积分。可通过 uv run cli.py doctor 检查所有依赖连通性。
MIT License
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request








