# 開発者向けガイド ## アーキテクチャ ### ディレクトリ構造 ``` ai_gpt/ ├── src/ai_gpt/ │ ├── __init__.py │ ├── models.py # データモデル定義 │ ├── memory.py # 記憶管理システム │ ├── relationship.py # 関係性トラッカー │ ├── fortune.py # AI運勢システム │ ├── persona.py # 統合人格システム │ ├── transmission.py # 送信コントローラー │ ├── scheduler.py # スケジューラー │ ├── config.py # 設定管理 │ ├── ai_provider.py # AI統合(Ollama/OpenAI) │ ├── mcp_server.py # MCP Server実装 │ └── cli.py # CLIインターフェース ├── docs/ # ドキュメント ├── tests/ # テスト └── pyproject.toml # プロジェクト設定 ``` ### 主要コンポーネント #### MemoryManager 階層的記憶システムの実装。会話を記録し、要約・コア判定・忘却を管理。 ```python memory = MemoryManager(data_dir) memory.add_conversation(conversation) memory.summarize_memories(user_id) memory.identify_core_memories() memory.apply_forgetting() ``` #### RelationshipTracker ユーザーとの関係性を追跡。不可逆的なダメージと時間減衰を実装。 ```python tracker = RelationshipTracker(data_dir) relationship = tracker.update_interaction(user_id, delta) tracker.apply_time_decay() ``` #### Persona すべてのコンポーネントを統合し、一貫した人格を提供。 ```python persona = Persona(data_dir) response, delta = persona.process_interaction(user_id, message) state = persona.get_current_state() ``` ## 拡張方法 ### 新しいAIプロバイダーの追加 1. `ai_provider.py`に新しいプロバイダークラスを作成: ```python class CustomProvider: async def generate_response( self, prompt: str, persona_state: PersonaState, memories: List[Memory], system_prompt: Optional[str] = None ) -> str: # 実装 pass ``` 2. `create_ai_provider`関数に追加: ```python def create_ai_provider(provider: str, model: str, **kwargs): if provider == "custom": return CustomProvider(model=model, **kwargs) # ... ``` ### 新しいスケジュールタスクの追加 1. `TaskType`enumに追加: ```python class TaskType(str, Enum): CUSTOM_TASK = "custom_task" ``` 2. ハンドラーを実装: ```python async def _handle_custom_task(self, task: ScheduledTask): # タスクの実装 pass ``` 3. `task_handlers`に登録: ```python self.task_handlers[TaskType.CUSTOM_TASK] = self._handle_custom_task ``` ### 新しいMCPツールの追加 `mcp_server.py`の`_register_tools`メソッドに追加: ```python @self.server.tool("custom_tool") async def custom_tool(param1: str, param2: int) -> Dict[str, Any]: """カスタムツールの説明""" # 実装 return {"result": "value"} ``` ## テスト ```bash # テストの実行(将来実装) pytest tests/ # 特定のテスト pytest tests/test_memory.py ``` ## デバッグ ### ログレベルの設定 ```python import logging logging.basicConfig(level=logging.DEBUG) ``` ### データファイルの直接確認 ```bash # 関係性データを確認 cat ~/.config/aigpt/data/relationships.json | jq # 記憶データを確認 cat ~/.config/aigpt/data/memories.json | jq ``` ## 貢献方法 1. フォークする 2. フィーチャーブランチを作成 (`git checkout -b feature/amazing-feature`) 3. 変更をコミット (`git commit -m 'Add amazing feature'`) 4. ブランチにプッシュ (`git push origin feature/amazing-feature`) 5. プルリクエストを作成 ## 設計原則 1. **不可逆性**: 一度失われた関係性は回復しない 2. **階層性**: 記憶は重要度によって階層化される 3. **自律性**: AIは関係性に基づいて自発的に行動する 4. **唯一性**: 各ユーザーとの関係は唯一無二 ## ライセンス MIT License