1. 项目概述与定位
1.1 项目背景
TradingAgents-CN 是基于 TauricResearch/TradingAgents 的中文增强版多智能体股票分析系统。项目定位为学习与研究平台,专注于为中文用户提供合规的股票分析工具,不提供实盘交易指令。1.2 核心定位
- 教育导向:作为AI金融技术的学习工具
- 研究平台:支持多维度股票分析策略实验
- 中文本地化:完整支持A股、港股、美股市场
- 多LLM集成:支持国内外主流大语言模型
1.3 版本演进
项目经历了从 v0.1.x 到 v1.0.0-preview 的重大架构升级:- v0.1.x:基于 Streamlit 的单体应用
- v1.0.0-preview:FastAPI + Vue 3 的企业级架构
2. 整体架构设计
2.1 分层架构概览
graph TB
subgraph 前端层
Vue3[Vue 3 + Element Plus]
Vite[Vite 构建工具]
end
subgraph API网关层
FastAPI[FastAPI RESTful API]
WebSocket[WebSocket 实时通信]
SSE[Server-Sent Events]
end
subgraph 核心引擎层
TradingGraph[TradingAgentsGraph]
LangGraph[LangGraph 工作流]
MultiAgent[多智能体系统]
end
subgraph 数据服务层
DataSourceMgr[数据源管理器]
CacheSystem[多级缓存系统]
UnifiedInterface[统一数据接口]
end
subgraph 基础设施层
MongoDB[(MongoDB)]
Redis[(Redis)]
LLMProviders[多LLM提供商]
end
Vue3 --> FastAPI
FastAPI --> TradingGraph
TradingGraph --> LangGraph
LangGraph --> MultiAgent
MultiAgent --> DataSourceMgr
DataSourceMgr --> CacheSystem
CacheSystem --> MongoDB
CacheSystem --> Redis
MultiAgent --> LLMProviders
2.2 技术栈矩阵
| 层级 | v0.1.x | v1.0.0-preview | 升级意义 |
|---|---|---|---|
| 前端框架 | Streamlit | Vue 3 + Vite | 从原型工具升级为生产级SPA |
| 后端框架 | Streamlit | FastAPI + Uvicorn | 性能提升10倍,支持高并发 |
| 数据库 | 可选MongoDB | MongoDB + Redis | 引入Redis缓存层,降低延迟 |
| API架构 | 单体应用 | RESTful + WebSocket | 支持实时进度推送和双向通信 |
| 部署方式 | 本地/Docker | 多架构Docker + GitHub Actions | 支持x86_64和ARM64,CI/CD自动化 |
3. 多智能体系统设计思想
3.1 智能体分层架构
graph TB
subgraph 分析层
MA[Market Analyst<br/>市场分析师]
FA[Fundamentals Analyst<br/>基本面分析师]
NA[News Analyst<br/>新闻分析师]
SA[Social Analyst<br/>社交媒体分析师]
end
subgraph 研究层
BR[Bull Researcher<br/>看涨研究员]
BeR[Bear Researcher<br/>看跌研究员]
RM[Research Manager<br/>研究经理]
end
subgraph 决策层
TR[Trader<br/>交易员]
end
subgraph 风控层
RA[Risky Analyst<br/>激进分析师]
SAf[Safe Analyst<br/>保守分析师]
NA2[Neutral Analyst<br/>中性分析师]
RJ[Risk Judge<br/>风险经理]
end
MA --> BR
FA --> BR
NA --> BR
SA --> BR
MA --> BeR
FA --> BeR
NA --> BeR
SA --> BeR
BR --> RM
BeR --> RM
RM --> TR
TR --> RA
TR --> SAf
TR --> NA2
RA --> RJ
SAf --> RJ
NA2 --> RJ
3.2 智能体协作模式
核心设计思想: 1. 专业化分工:每个分析师专注特定领域(市场、基本面、新闻、社交媒体) 2. 辩论机制:看涨/看跌研究员通过辩论形成平衡观点 3. 层级决策:从分析→研究→交易→风控的渐进式决策流程 4. 记忆系统:基于ChromaDB的向量记忆,支持经验积累
状态管理:
- 使用
AgentState统一状态管理 - 支持
InvestDebateState和RiskDebateState专用状态 - 通过 LangGraph 实现状态持久化和回溯
4. 数据流与缓存架构
4.1 统一数据源接口设计
项目采用策略模式实现多数据源支持,核心抽象在 dataflows/interface.py:
# 统一接口示例
def get_china_stock_data_unified(ticker: str, start_date: str, end_date: str) -> str:
# 自动选择最佳数据源(Tushare → AKShare → BaoStock)
# 智能日期范围处理
# 多级缓存查询
4.2 多级缓存架构
graph LR
subgraph 缓存层级
L1[Level 1: Redis<br/>内存缓存]
L2[Level 2: MongoDB<br/>文档缓存]
L3[Level 3: 文件缓存<br/>CSV/JSON]
end
subgraph 缓存策略
AS[自适应策略]
TTL[TTL管理]
Warming[预加载机制]
end
Client[数据请求] --> AS
AS --> L1
L1 --> L2
L2 --> L3
L3 --> DataSource[原始数据源]
TTL --> AS
Warming --> L1
缓存实现亮点:
- 自适应缓存:
AdaptiveCache根据数据访问频率自动调整策略 - 智能降级:缓存失效时自动降级到下一级
- 数据一致性:通过版本号和哈希校验确保缓存一致性
4.3 数据源注册表
在 constants/data_sources.py 中定义了统一的数据源注册机制:
class DataSourceCode(str, Enum):
MONGODB = "mongodb" # 最高优先级缓存
TUSHARE = "tushare" # 专业A股数据
AKSHARE = "akshare" # 开源金融数据
YFINANCE = "yfinance" # 美股数据
# ... 更多数据源
DATA_SOURCE_REGISTRY: Dict[str, DataSourceInfo] = {
# 详细元数据配置
}
设计优势:
- 可扩展性:新增数据源只需注册,无需修改核心逻辑
- 优先级管理:支持动态调整数据源优先级
- 市场适配:不同市场(A股/港股/美股)可配置不同数据源组合
5. LLM集成与适配器模式
5.1 多LLM提供商支持架构
项目采用适配器模式实现多LLM提供商支持,核心实现在 trading_graph.py 的 create_llm_by_provider 函数:
def create_llm_by_provider(
provider: str,
model: str,
backend_url: str,
temperature: float,
max_tokens: int,
timeout: int,
api_key: str = None
):
# 统一创建LLM实例,支持10+提供商
5.2 支持的LLM提供商
| 提供商 | 适配器文件 | 特点 | 成本优化 |
|---|---|---|---|
| OpenAI | 原生支持 | Function Calling | 支持 |
| Google AI | google_openai_adapter.py | OpenAI兼容模式 | 支持 |
| 阿里百炼 | dashscope_openai_adapter.py | 原生工具调用 | 支持 |
| DeepSeek | deepseek_adapter.py | Token统计 | 支持 |
| 智谱AI | openai_compatible_base.py | GLM系列 | 支持 |
| Anthropic | 原生支持 | Claude系列 | 支持 |
| SiliconFlow | OpenAI兼容 | 模型聚合平台 | 支持 |
| OpenRouter | OpenAI兼容 | 统一路由 | 支持 |
| Ollama | OpenAI兼容 | 本地部署 | 支持 |
| 自定义 | openai_compatible_base.py | 任意OpenAI兼容API | 支持 |
5.3 混合模式支持
核心创新:支持快速模型和深度模型来自不同提供商
# 配置示例
config = {
"quick_provider": "dashscope", # 快速思考:阿里百炼
"deep_provider": "openai", # 深度思考:OpenAI
"quick_think_llm": "qwen-turbo",
"deep_think_llm": "gpt-4"
}
优势:
- 成本优化:快速任务使用低成本模型,深度任务使用高性能模型
- 性能平衡:根据任务复杂度动态选择模型
- 风险分散:避免单一提供商故障导致系统不可用
6. 配置管理与可扩展性
6.1 配置系统演进
项目经历了从文件配置到数据库配置的演进:
旧系统(已废弃):
config_manager.py- JSON文件存储- 支持模型配置、定价配置、使用记录
- 废弃原因:不支持动态更新,多实例配置不一致
- 数据库驱动:MongoDB存储配置
- 实时生效:无需重启即可更新配置
- 版本管理:支持配置版本回滚
- 多租户支持:不同用户可拥有独立配置
6.2 环境变量管理
采用 12-Factor App 原则,关键配置通过环境变量注入:
# LLM提供商配置
DASHSCOPE_API_KEY=sk-xxx
OPENAI_API_KEY=sk-xxx
GOOGLE_API_KEY=xxx
# 数据库配置
MONGODB_CONNECTION_STRING=mongodb://...
REDIS_URL=redis://...
# 功能开关
ONLINE_TOOLS_ENABLED=true
ONLINE_NEWS_ENABLED=true
REALTIME_DATA_ENABLED=false
6.3 插件化架构
工具系统采用插件化设计:
Toolkit统一管理所有工具- 支持动态加载和卸载工具
- 工具自动注册机制
BaseProvider抽象基类- 统一接口规范,降低接入成本
- 自动发现机制扫描可用数据源
7. 部署与运维架构
7.1 Docker多架构支持
# docker-compose.yml 核心服务
services:
backend:
build:
context: .
dockerfile: Dockerfile.backend
# 支持 amd64 和 arm64
platform: linux/amd64,linux/arm64
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
# Nginx静态资源服务
mongodb:
image: mongo:4.4
# 数据持久化
redis:
image: redis:7-alpine
# 缓存服务
多架构支持:
- x86_64:传统服务器
- ARM64:Apple Silicon、AWS Graviton、树莓派
- 自动化构建:GitHub Actions自动构建多架构镜像
7.2 监控与健康检查
健康检查机制:
- 后端:HTTP接口
/api/health - 前端:Nginx状态页
- 数据库:MongoDB ping命令
- Redis:
redis-cli ping
- 统一日志:
logging_manager.py集中管理 - 结构化日志:JSON格式,支持ELK栈集成
- 分级存储:INFO级别本地文件,ERROR级别发送到监控平台
7.3 性能监控
性能数据收集:
- 每个节点执行时间统计
- LLM Token使用量追踪
- 数据库查询性能分析
- 缓存命中率监控
🔍 分析性能统计报告
========================================
📊 分析师团队
• Market Analyst 12.34秒 (35.2%)
• Fundamentals Analyst 8.56秒 (24.3%)
📊 工具调用
• tools_market 5.23秒 (14.8%)
📊 研究团队
• Bull Researcher 3.45秒 (9.8%)
• Bear Researcher 4.12秒 (11.7%)
========================================
🎯 总执行时间: 35.12秒 (0.59分钟)
📈 节点总数: 12
⏱️ 平均节点耗时: 2.93秒
🐌 最慢节点: Market Analyst (12.34秒)
⚡ 最快节点: Msg Clear Market (0.12秒)
---
8. 核心设计模式与最佳实践
8.1 设计模式应用
1. 适配器模式(Adapter Pattern)
- 应用场景:LLM提供商统一接口
- 实现文件:所有
llm_adapters/文件 - 优势:新增LLM提供商无需修改核心逻辑
- 应用场景:数据源选择、缓存策略
- 实现文件:
dataflows/cache/adaptive.py - 优势:运行时动态切换策略
- 应用场景:智能体创建、工具节点生成
- 实现文件:
agents/__init__.py - 优势:集中管理对象创建逻辑
- 应用场景:进度回调、事件通知
- 实现文件:
graph/trading_graph.py的_send_progress_update - 优势:解耦进度生成和消费
- 应用场景:日志记录、性能监控
- 实现文件:
utils/logging_manager.py - 优势:非侵入式增强功能
8.2 代码质量实践
类型提示:全面使用 Python 3.12+ 类型提示
def get_stock_news_unified(
stock_code: str,
max_news: int = 100,
model_info: str = ""
) -> str:
...
错误处理:分级错误处理策略
- 可恢复错误:降级到备用数据源
- 不可恢复错误:记录详细日志并通知用户
- 警告:非关键问题,不影响主流程
"""
统一新闻获取工具
Args:
stock_code (str): 股票代码 (支持A股如000001、港股如0700.HK、美股如AAPL)
max_news (int): 最大新闻数量,默认100
model_info (str): 当前使用的模型信息,用于特殊处理
Returns:
str: 格式化的新闻内容
"""
---
9. 性能优化策略
9.1 异步与并发优化
LangGraph异步支持:
# 使用异步流式处理
async for chunk in self.graph.astream(init_agent_state):
await self._send_progress_update(chunk, progress_callback)
数据库连接池:
- MongoDB:默认连接池大小100
- Redis:连接池自动管理
- HTTP客户端:httpx异步客户端
9.2 缓存优化
智能缓存预热:
# 在系统启动时预热热门股票数据
async def warmup_cache():
hot_stocks = ["000001", "600036", "AAPL", "TSLA"]
for stock in hot_stocks:
await cache.preload(stock)
缓存淘汰策略:
- LRU:最近最少使用
- TTL:基于时间的过期
- 手动清理:支持API触发缓存清理
9.3 LLM调用优化
批处理:合并多个请求减少API调用次数 重试机制:指数退避重试策略 超时控制:可配置的超时时间,防止长时间阻塞 Token优化:智能截断和压缩长文本
---
10. 安全与合规设计
10.1 API密钥管理
安全存储:
- 环境变量优先(12-Factor原则)
- 数据库加密存储(AES-256)
- 内存中不存储明文密钥
- 支持运行时更新API密钥
- 无需重启即可生效
- 旧密钥自动失效
10.2 数据安全
数据隔离:
- 用户数据隔离(MongoDB集合级别)
- 缓存数据隔离(Redis key前缀)
- 日志脱敏(自动隐藏API密钥)
- JWT令牌认证
- 基于角色的权限管理(RBAC)
- API速率限制
10.3 合规性
研究定位:
- 明确声明不提供实盘交易建议
- 所有分析结果仅供参考
- 用户需自行承担投资风险
- 使用公开数据源
- 遵守各数据源使用条款
- 支持数据本地化存储
11. 总结与展望
11.1 架构优势
1. 模块化设计:各组件低耦合,易于扩展和维护 2. 多LLM支持:灵活的适配器模式,快速集成新模型 3. 智能缓存:多级缓存架构,显著提升性能 4. 企业级部署:完整的Docker化方案,支持生产环境 5. 中文本地化:深度支持A股、港股、美股市场
11.2 技术债务
1. 配置系统迁移:旧版JSON配置系统已废弃,需完成向数据库配置的迁移 2. 代码重复:部分数据源实现存在重复代码,可进一步抽象 3. 测试覆盖:需要更全面的单元测试和集成测试
11.3 未来演进方向
1. 强化学习集成:引入RL优化智能体决策 2. 知识图谱:构建金融知识图谱增强分析能力 3. 实时流处理:支持实时行情数据流式分析 4. 联邦学习:多用户协同训练模型 5. 量化回测:集成专业回测引擎
---
附录:核心文件索引
核心引擎
tradingagents/graph/trading_graph.py- 主引擎tradingagents/graph/setup.py- 工作流配置tradingagents/graph/conditional_logic.py- 条件逻辑
智能体
tradingagents/agents/__init__.py- 智能体工厂tradingagents/agents/analysts/- 分析师实现tradingagents/agents/researchers/- 研究员实现tradingagents/agents/risk_mgmt/- 风控实现
数据流
tradingagents/dataflows/interface.py- 统一接口tradingagents/dataflows/data_source_manager.py- 数据源管理tradingagents/dataflows/cache/- 缓存实现
LLM适配器
配置管理
tradingagents/config/config_manager.py- 配置管理(已废弃)tradingagents/default_config.py- 默认配置