コンテンツにスキップ

アーキテクチャ

モノレポ構造

Panacea/ ├── packages/ │ ├── backend/ # Python Flask — 統一API + エージェントストリーミング + RAG │ ├── cli/ # TypeScript — anoteターミナルCLI │ ├── vscode/ # TypeScript — VS Code拡張 │ ├── web/ # TypeScript/React — ブラウザチャットボットアプリ │ ├── mobile/ # TypeScript/React Native (Expo) — iOS + Android │ ├── desktop/ # TypeScript/Electron — プライベートデスクトップアプリ │ ├── sdk/ # TypeScript — JS/TSクライアントSDK │ └── docs/ # MkDocs Material — ドキュメントサイト ├── docker-compose.yml ├── package.json # npmワークスペース └── Makefile

バックエンドアーキテクチャ

Python Flaskバックエンドはすべてのサーバーサイドロジックを処理します:

packages/backend/ ├── app.py # Flaskエントリーポイント、ルート登録 ├── api_endpoints/ │ ├── chat/ # エージェントストリーミング (SSE)、セッション管理 │ ├── documents/ # アップロード、RAGパイプライン、Q&A │ ├── search/ # セマンティック検索インデックスクエリ │ ├── auth/ # JWT、Google OAuth │ ├── user/ # プロフィール、設定 │ └── payments/ # Stripeウェブフック + チェックアウト ├── agents/ # LangChain/LangGraphエージェント定義 ├── services/ │ ├── rag.py # ドキュメントチャンク + Chroma埋め込み │ ├── streaming.py # Claude/OpenAI/GeminiへのSSEストリーミング │ └── search.py # TF-IDFセマンティック検索 ├── database/ │ ├── db.py # MySQL接続 + クエリ │ └── schema.sql # データベーススキーマ └── models/ # LLMプロバイダーラッパー

データフロー: エージェントチャット

クライアント (CLI / VS Code / Web / Mobile) │ POST /api/chat/stream {message, cwd, model} ▼ Flaskバックエンド (app.py → chat/handler.py) │ SSEストリーム ▼ LLMプロバイダー (Anthropic / OpenAI / Gemini / Ollama) │ ツール呼び出し ↔ 実行 (読み取り/書き込み/編集/Bash/Glob/Grep) ▼ ファイルシステム (cwd) + Chroma (RAGコンテキスト)

技術選択

レイヤー 技術 理由
バックエンド Python Flask 豊富なML/AIエコシステム、既存のエージェント
エージェントストリーミング Anthropic Python SDK ネイティブSSE、ツール使用
ベクターデータベース ChromaDB ローカルファースト、インフラ不要
データベース MySQL ACID、既存のスキーマ
キャッシュ Redis セッション + レート制限
フロントエンド React 18 + TypeScript 型安全、エコシステム
デスクトップ Electron クロスプラットフォーム、Pythonをバンドル
モバイル Expo (React Native) ウェブとのコード共有
CLI Commander.js 成熟、TypeScriptフレンドリー
ドキュメント MkDocs Material 美しい、高速、マークダウン