TradingAgents/workflow_diagram.md

75 lines
3.2 KiB
Markdown

# TradingAgents Workflow Diagram
## 完整工作流程图
```mermaid
graph TD
START([START]) --> FirstAnalyst[第一个分析师<br/>Market/Social/News/Fundamentals]
subgraph AnalystLoop["分析师循环 (可配置)"]
Analyst[分析师节点] -->|需要工具调用| Tools[工具节点<br/>tools_market/social/news/fundamentals]
Tools --> Analyst
Analyst -->|分析完成| ClearMsg[清理消息节点<br/>Msg Clear]
ClearMsg -->|下一个分析师| NextAnalyst[下一个分析师]
ClearMsg -->|最后一个分析师完成| BullResearcher
end
FirstAnalyst --> AnalystLoop
subgraph ResearchPhase["研究与投资决策阶段"]
BullResearcher[Bull Researcher<br/>看涨研究员] -->|继续辩论| BearResearcher[Bear Researcher<br/>看跌研究员]
BearResearcher -->|继续辩论| BullResearcher
BullResearcher -->|达到最大轮次| ResearchManager[Research Manager<br/>研究经理/投资裁判]
BearResearcher -->|达到最大轮次| ResearchManager
ResearchManager --> Trader[Trader<br/>交易员]
end
subgraph RiskPhase["风险分析阶段"]
Trader --> RiskyAnalyst[Risky Analyst<br/>激进分析师]
RiskyAnalyst -->|继续辩论| SafeAnalyst[Safe Analyst<br/>保守分析师]
SafeAnalyst -->|继续辩论| NeutralAnalyst[Neutral Analyst<br/>中性分析师]
NeutralAnalyst -->|继续辩论| RiskyAnalyst
RiskyAnalyst -->|达到最大轮次| RiskJudge[Risk Judge<br/>风险经理]
SafeAnalyst -->|达到最大轮次| RiskJudge
NeutralAnalyst -->|达到最大轮次| RiskJudge
end
RiskJudge --> END([END])
style START fill:#90EE90
style END fill:#FFB6C1
style ResearchManager fill:#87CEEB
style Trader fill:#DDA0DD
style RiskJudge fill:#F0E68C
```
## 详细流程说明
### 阶段 1: 分析师阶段 (Analyst Phase)
- **顺序执行**: 根据 `selected_analysts` 配置,按顺序执行各个分析师
- **每个分析师**:
1. 分析师节点分析市场数据
2. 如果需要数据 → 调用工具节点 (`tools_xxx`)
3. 工具返回数据 → 回到分析师节点继续分析
4. 分析完成 → 清理消息 → 进入下一个分析师
### 阶段 2: 研究辩论阶段 (Research Debate Phase)
- **Bull Researcher** ↔ **Bear Researcher** 循环辩论
- 辩论轮次由 `max_debate_rounds` 控制
- 达到最大轮次后 → **Research Manager** 做出投资判断
- **Research Manager** → **Trader** 制定交易计划
### 阶段 3: 风险分析阶段 (Risk Analysis Phase)
- **Trader** → **Risky Analyst** (激进观点)
- **Risky** → **Safe****Neutral****Risky** (循环辩论)
- 辩论轮次由 `max_risk_discuss_rounds` 控制
- 达到最大轮次后 → **Risk Judge** 做出最终风险决策
- **Risk Judge** → **END** (输出最终交易决策)
## 条件判断逻辑
- **分析师条件**: 检查是否有 `tool_calls`,决定是否需要调用工具
- **辩论条件**: 检查辩论轮次 (`count`) 和当前响应者,决定继续辩论或进入下一阶段
- **风险分析条件**: 检查风险讨论轮次和最新发言者,决定继续讨论或进入风险判断