Architektur¶
Monorepo-Struktur¶
Panacea/
├── packages/
│ ├── backend/ # Python Flask — einheitliche API + Agenten-Streaming + RAG
│ ├── cli/ # TypeScript — anote Terminal-CLI
│ ├── vscode/ # TypeScript — VS Code-Erweiterung
│ ├── web/ # TypeScript/React — Browser-Chatbot-App
│ ├── mobile/ # TypeScript/React Native (Expo) — iOS + Android
│ ├── desktop/ # TypeScript/Electron — private Desktop-App
│ ├── sdk/ # TypeScript — JS/TS-Client-SDK
│ └── docs/ # MkDocs Material — Dokumentationsseite
├── docker-compose.yml
├── package.json # npm-Arbeitsbereiche
└── Makefile
Backend-Architektur¶
Das Python Flask-Backend verarbeitet die gesamte serverseitige Logik:
packages/backend/
├── app.py # Flask-Einstiegspunkt, Routenregistrierung
├── api_endpoints/
│ ├── chat/ # Agenten-Streaming (SSE), Sitzungsverwaltung
│ ├── documents/ # Upload, RAG-Pipeline, Q&A
│ ├── search/ # Abfragen des semantischen Suchindex
│ ├── auth/ # JWT, Google OAuth
│ ├── user/ # Profil, Einstellungen
│ └── payments/ # Stripe-Webhooks + Checkout
├── agents/ # LangChain/LangGraph-Agenten-Definitionen
├── services/
│ ├── rag.py # Dokumentenchunking + Chroma-Embeddings
│ ├── streaming.py # SSE-Streaming zu Claude/OpenAI/Gemini
│ └── search.py # TF-IDF semantische Suche
├── database/
│ ├── db.py # MySQL-Verbindung + Abfragen
│ └── schema.sql # Datenbankschema
└── models/ # LLM-Anbieter-Wrappers
Datenfluss: Agent-Chat¶
Client (CLI / VS Code / Web / Mobile)
│ POST /api/chat/stream {message, cwd, model}
▼
Flask-Backend (app.py → chat/handler.py)
│ SSE-Stream
▼
LLM-Anbieter (Anthropic / OpenAI / Gemini / Ollama)
│ Toolaufrufe ↔ ausführen (Lesen/Schreiben/Bearbeiten/Bash/Glob/Grep)
▼
Dateisystem (cwd) + Chroma (RAG-Kontext)
Technologieauswahl¶
| Schicht | Technologie | Warum |
|---|---|---|
| Backend | Python Flask | Reichhaltiges ML/AI-Ökosystem, bestehende Agenten |
| Agenten-Streaming | Anthropic Python SDK | Native SSE, Toolnutzung |
| Vektor-DB | ChromaDB | Local-first, keine Infrastruktur erforderlich |
| Datenbank | MySQL | ACID, bestehendes Schema |
| Cache | Redis | Sitzung + Ratenbegrenzung |
| Frontend | React 18 + TypeScript | Typensicherheit, Ökosystem |
| Desktop | Electron | Plattformübergreifend, bündelt Python |
| Mobile | Expo (React Native) | Code-Sharing mit Web |
| CLI | Commander.js | Ausgereift, TypeScript-freundlich |
| Docs | MkDocs Material | Schön, schnell, Markdown |