TradingAgents/.kiro/steering/structure.md

49 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- Inclusion Mode: Always -->
# プロジェクト構造: TradingAgents
## 1. ルートディレクトリの構成
プロジェクトのルートには、メインのアプリケーションパッケージ、CLI、ドキュメント、および設定ファイルが含まれています。
- **`tradingagents/`**: フレームワークのコアとなるPythonソースコードで、インストール可能なパッケージとして構成されています。
- **`cli/`**: 対話型のコマンドラインインターフェースのソースコードが含まれています。
- **`main.py`**: `tradingagents`パッケージをプログラム的に使用する方法を示す簡単なスクリプトです。
- **`test.py`**: 特定の機能をテストするためのスクリプトです。
- **`assets/`**: `README.md`やドキュメントで使用される画像、スキーマ、その他の静的アセットが含まれています。
- **`.kiro/`**: Kiroのスペック駆動開発用のファイルディレクトリで、ステアリングドキュメントや仕様書が含まれます。
- **`.gemini/`**: Gemini CLIのコマンド定義用ディレクトリです。
- **`requirements.txt` / `pyproject.toml`**: Pythonの依存関係管理ファイルです。
- **`README.md`**: プロジェクトのメインドキュメントです。
## 2. サブディレクトリの構造
### `tradingagents/`
これがメインのパッケージディレクトリです。
- **`agents/`**: すべての個別のAIエージェントのロジックが含まれています。
- `analysts/`: 特定の種類のデータ(市場、ニュースなど)を収集・分析するエージェント。
- `researchers/`: アナリストの調査結果について議論するエージェント(ブルとベア)。
- `managers/`: 議論を進行させ、高レベルの意思決定を行うエージェント(リサーチマネージャー、リスクマネージャー)。
- `trader/`: 最終的な取引計画を策定するエージェント。
- `risk_mgmt/`: トレーダーの計画を異なるリスク観点から分析するエージェント。
- `utils/`: エージェント用の共有ユーティリティ。状態定義(`agent_states.py`)、メモリ(`memory.py`)、ツール定義など。
- **`dataflows/`**: 外部およびローカルのデータソースとのすべてのやり取りを管理します。
- `interface.py`: プロジェクトの設定に基づいてデータリクエストを適切なベンダーAlpha Vantage, yfinance, localにルーティングする重要なファイル。これにより、データバックエンドの構成が非常に柔軟になります。
- `alpha_vantage.py`, `y_finance.py`など: ベンダー固有のデータ取得実装。
- `config.py`: データベンダーの設定を管理します。
- **`graph/`**: LangGraphワークフローの構造とロジックを定義します。
- `trading_graph.py`: エージェントグラフ全体を構築し、オーケストレーションするメインファイル。
- `setup.py`: グラフのノードとエッジの設定を処理します。
- `conditional_logic.py`: グラフ内の条件付きエッジのルーティングロジックを定義します(例:議論をいつ終了するかを決定する)。
- `propagation.py`: グラフの初期状態の作成を管理します。
- `reflection.py`: エージェントが過去の決定を振り返るためのロジックを実装します。
### `cli/`
- **`main.py`**: `typer`で構築されたコマンドラインアプリケーションのエントリーポイント。
- **`utils.py`**: CLIのヘルパー関数。対話型プロンプト`questionary`)など。
- **`models.py`**: CLIで使用されるPydanticモデルやEnum。
- **`static/`**: ウェルカムメッセージなどの静的テキストファイル。
## 3. 主要なアーキテクチャ原則
- **モジュール性と関心の分離**: プロジェクトは、エージェントのロジック(`agents/`)、データアクセス(`dataflows/`)、オーケストレーション(`graph/`)を分離するように構成されています。これにより、他の部分に影響を与えることなく、単一の部分を簡単に修正または拡張できます。
- **状態駆動のワークフロー**: プロセス全体が状態グラフ(`AgentState`)によって管理され、各ステップが次のノードに渡される状態を変更します。これにより、明確で追跡可能な実行フローが提供されます。
- **設定可能なデータ抽象化**: `dataflows/interface.py`は、エージェントを特定のデータベンダーから切り離す強力な抽象化レイヤーを提供します。これにより、ユーザーはバックテストやコスト削減のために、ライブAPIとローカルデータを簡単に切り替えることができます。
- **リフレクティブメモリ**: エージェントは、過去のパフォーマンスから学ぶためにリフレクション(振り返り)メカニズムを通じて設計されています。これにより、将来の参照のためにベクトルデータベース(`chromadb`)に洞察が保存されます。