frankenbot/README.md
pdyde 42a84141d9 docs: README v2.0 - Self-Learning System & neue Features
Neue Features dokumentiert:
- Task-Persistierung in SQLite mit Auto-Cleanup (7 Tage)
- Self-Learning Team-Management System
- Orchestrator Beat (30 Min Intervall)
- Telegram-Integration mit QR-Code
- Automatische Vorstellung neuer Team-Members
- Team-Member Update-Kommandos (@UPDATE_TEAM_MEMBER, @ADD_TEAM_MEMBER)
- Intelligente Eskalation bei blockierten Tasks

Kommandos erweitert:
- @SEND_EMAIL - Team-Member kontaktieren
- @SEND_TELEGRAM - Telegram-Benachrichtigung
- @UPDATE_TEAM_MEMBER - Team-Daten aktualisieren
- @ADD_TEAM_MEMBER - Neues Mitglied hinzufügen

Use Cases:
- Neuer Team-Member Workflow (automatisches Lernen)
- Orchestrator Beat Monitoring (proaktive Eskalation)
- Email-basierte Tasks
- Event-Planung

Tech Stack Updates:
- SQLite: Emails, Tasks, Team-Members
- python-telegram-bot, QR-Code
- 5 Background Threads (inkl. OrchestratorBeat)

Security:
- Telegram User-Whitelist
- Path Traversal Protection
- XSS-Schutz verbessert

Version: 2.0.0
Status: Production-Ready 
2026-02-21 14:06:20 +01:00

419 lines
13 KiB
Markdown

# Frankenbot - Multi-Agent Event-Management-System
Ein Flask-basiertes Multi-Agent-System zur Orchestrierung und Verwaltung von KI-Agenten für Event-Management. Entwickelt für den **Diversity-Ball Wien 2026**.
## 🎯 Überblick
Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte KI-Agents zusammenarbeiten, um komplexe Event-Organisationsaufgaben zu bewältigen. Ein zentraler Orchestrator koordiniert die Kommunikation zwischen den Agents und delegiert Tasks basierend auf Expertise.
## ✨ Haupt-Features
### 🤖 Multi-Agent Orchestrierung
- **Orchestrator als zentraler Hub**: Alle Agent-Kommunikation läuft über den Orchestrator
- **Spezialisierte Agents**: Budget Manager, Catering Manager, Location Manager, Program Manager, etc.
- **Agent-zu-Agent Kommunikation**: Agents können Fragen stellen, Subtasks erstellen und neue Agents vorschlagen
- **Dynamische Modellauswahl**: 29+ KI-Modelle verfügbar (OpenCode, Anthropic, Ollama)
### 📋 Task-Management
- **Persistente Speicherung**: SQLite-Datenbank für Tasks
- **Automatische Task-Verarbeitung**: TaskBeat verarbeitet Tasks alle 10 Sekunden
- **Auto-Cleanup**: Löscht completed Tasks automatisch nach 7 Tagen
- **Auto-Refresh UI**: Tasks-Seite aktualisiert sich automatisch alle 15 Sekunden
- **Task-Delegation**: Orchestrator analysiert Tasks und weist sie passenden Agents zu
- **Status-Tracking**: pending → in_progress → completed
### 💬 Chat-System
- **Live-Streaming**: Server-Sent Events für Echtzeit-Antworten
- **Agent-Auswahl**: Chat mit spezifischen Agents oder dem Orchestrator
- **Session-basierte History**: Kontext bleibt über Konversation erhalten
### 📧 Email-Integration
- **IMAP**: Email-Posteingang überwachen
- **SMTP**: Emails versenden
- **Email-to-Task**: Automatische Task-Erstellung aus Emails
- **Whitelist-System**: Nur autorisierte Absender (diversityball.at Domain)
- **Intelligente Vorstellung**: Neue Absender werden automatisch gebeten sich vorzustellen
- **Team-Member Lernsystem**: Orchestrator baut automatisch Wissensdatenbank auf
### 📁 Datei-Management
- **Agent Work-Folders**: Jeder Agent hat eigenes Arbeitsverzeichnis
- **Email-Vorlagen**: Wiederverwendbare Email-Templates
- **Projekt-Dateien**: Zentrale Dokumentenverwaltung
- **Upload & Download**: Web-basierter Datei-Manager
### 🧠 Memory-System
- **JSON-basierte Erinnerungen**: Strukturierte Agent-Memories
- **Kategorien**: tasks, notes, decisions, contacts
- **Agent-spezifisch**: Jeder Agent verwaltet eigene Erinnerungen
- **Memory-Summaries**: Kompakte Übersichten für Prompts
### 📚 Wissensdatenbank
- **On-Demand Zugriff**: Agents nutzen `@READ_KNOWLEDGE` statt volle KB im Prompt
- **Performance-Optimierung**: Reduziert Prompt-Größe um ~15KB
- **Event-spezifisch**: Diversity-Ball Wien 2026 Informationen
- **Self-Learning**: System lernt automatisch über Team-Members und Verantwortlichkeiten
### 👥 Team-Management
- **Team-Members Datenbank**: Reale Mitarbeiter mit Rollen und Verantwortlichkeiten
- **Automatisches Lernen**: Neue Absender werden erkannt und vorgestellt
- **Orchestrator Beat**: Prüft alle 30 Minuten Tasks und eskaliert bei Bedarf
- **Direkter Kontakt**: Orchestrator kann Team-Members per Email/Telegram kontaktieren
- **Intelligente Koordination**: Weiß wer wofür verantwortlich ist
### 💬 Telegram-Integration
- **Bidirektionale Kommunikation**: Nachrichten senden und empfangen
- **QR-Code Setup**: Einfache Bot-Verbindung über Settings-Seite
- **Task-Erstellung**: Telegram-Nachrichten werden automatisch zu Tasks
- **Antworten**: Agent-Responses werden zurück zu Telegram gesendet
- **User-Whitelist**: Nur autorisierte Telegram-User
## 🚀 Installation
### Voraussetzungen
```bash
# Python 3.10+
python --version
# OpenCode CLI (für Agent-Ausführung)
opencode --version
```
### Abhängigkeiten installieren
```bash
pip install flask python-dotenv
```
### Email-Konfiguration (Optional)
```bash
cp .env.example .env
# .env editieren und Email-Credentials eintragen
```
## 📖 Verwendung
### App starten
```bash
# Foreground
python app.py
# Background (empfohlen)
nohup python app.py > app_output.log 2>&1 &
```
Die Anwendung läuft dann auf: **http://localhost:5000**
### Agent-Kommandos
Agents können folgende Kommandos in ihren Antworten verwenden:
#### Frage an Orchestrator
```
@ASK_ORCHESTRATOR
Question: Wie hoch ist das verfügbare Budget für Catering?
Context: Ich plane das Menü und brauche Budget-Info
@END
```
#### Subtask erstellen
```
@CREATE_SUBTASK
Task: Location-Vertrag prüfen
Requirements: Rechtliche Prüfung der Mietbedingungen
@END
```
#### Wissensdatenbank durchsuchen
```
@READ_KNOWLEDGE
Topic: Budget
@END
```
#### Neuen Agent vorschlagen
```
@SUGGEST_AGENT
Role: Security Manager
Skills: Sicherheitsplanung, Crowd Management
Reason: Für große Events mit 500+ Gästen benötigt
@END
```
#### Team-Member kontaktieren
```
@SEND_EMAIL
To: georg.tschare@signtime.media
Subject: Budget-Freigabe benötigt
Body: Hallo Georg, für das Catering benötigen wir eine Budget-Freigabe...
@END
```
#### Team-Member aktualisieren
```
@UPDATE_TEAM_MEMBER
Identifier: p.dyderski@live.at
TelegramID: 123456789
Responsibilities: System-Administration, 3D-Visualisierung, AI-Agenten, R&D
@END
```
#### Neues Team-Mitglied hinzufügen
```
@ADD_TEAM_MEMBER
Name: Max Mustermann
Role: Marketing Coordinator
Responsibilities: Social Media, Content Creation
Email: max@diversityball.at
@END
```
## 🗂️ Projekt-Struktur
```
frankenbot/
├── app.py # Haupt-Flask-App (2900+ Zeilen)
├── agent_config.json # Agent-Modell-Zuweisungen
├── diversityball_knowledge.md # Event-Wissensdatenbank
├── email_journal.db # SQLite-Datenbank (Emails, Tasks, Team-Members)
├── agents/ # Agent-Verzeichnisse
│ ├── orchestrator/
│ │ ├── systemprompt.md
│ │ ├── personality.md
│ │ ├── work/ # Arbeitsverzeichnis
│ │ └── memory/ # JSON-Erinnerungen
│ ├── budget_manager/
│ ├── catering_manager/
│ ├── location_manager/
│ └── ...
├── templates/ # HTML-Templates (Jinja2)
│ ├── base.html
│ ├── index.html # Dashboard
│ ├── chat.html # Agent-Chat
│ ├── orchestrator.html # Orchestrator-Chat
│ ├── tasks.html # Task-Management
│ ├── agents.html # Agent-Verwaltung
│ ├── files.html # Datei-Manager
│ └── emails.html # Email-Interface
├── static/
│ └── style.css # CSS-Styling
└── uploads/ # Hochgeladene Dateien
```
## 🤖 Verfügbare Agents
| Agent | Rolle | Verantwortlich für |
|-------|-------|-------------------|
| **Orchestrator** | Koordinator | Task-Delegation, Agent-Kommunikation |
| **Budget Manager** | Finanzplanung | Budget-Tracking, Kostenkalkulation |
| **Catering Manager** | Verpflegung | Menüplanung, Catering-Koordination |
| **Location Manager** | Veranstaltungsort | Raumbuchung, Logistik |
| **Program Manager** | Programmablauf | Zeitplanung, Ablaufkoordination |
| **Researcher** | Recherche | Web-Recherche, Informationsbeschaffung |
| **Document Editor** | Dokumentation | Dokument-Erstellung, Bearbeitung |
| **Tax Advisor** | Steuern | Steuerliche Beratung, AKM-Meldungen |
| **Musik Rechte Advisor** | Musikrechte | GEMA/AKM-Compliance |
| **Zusammenfasser** | Synthese | Informations-Aggregation |
## 🔧 Technologie-Stack
- **Backend**: Flask 3.x
- **Frontend**: Bootstrap 5, Vanilla JavaScript
- **Database**: SQLite (Email-Journal, Tasks, Team-Members)
- **AI**: OpenCode CLI (Multi-Provider Support: Anthropic, Ollama, etc.)
- **Templates**: Jinja2
- **Streaming**: Server-Sent Events (SSE)
- **Bot**: python-telegram-bot, QR-Code Generation
## 🎨 UI-Routen
| Route | Beschreibung |
|-------|--------------|
| `/` | Dashboard - Agent-Übersicht & letzte Tasks |
| `/chat` | Chat mit individuellen Agents |
| `/orchestrator` | Orchestrator-Chat mit Task-Verteilung |
| `/tasks` | Task-Management mit Auto-Refresh |
| `/agents` | Agent-Verwaltung (Erstellen, Bearbeiten, Modell-Auswahl) |
| `/files` | Datei-Manager (Upload, Download, Agent Work-Folders, View) |
| `/emails` | Email-Interface (Senden, Empfangen, Vorlagen) |
| `/settings` | System-Einstellungen, Telegram QR-Code, Poller-Konfiguration |
## ⚙️ Konfiguration
### Agent-Modelle anpassen
Bearbeite `agent_config.json`:
```json
{
"orchestrator": "anthropic/claude-3.7-sonnet",
"budget_manager": "opencode/qwen2.5-coder:32b",
"catering_manager": "anthropic/claude-3.5-sonnet"
}
```
### Email-Setup
Bearbeite `.env`:
```bash
EMAIL_ADDRESS=your@email.com
EMAIL_PASSWORD=your_app_password
EMAIL_IMAP_SERVER=imap.gmail.com
EMAIL_SMTP_SERVER=smtp.gmail.com
```
### Telegram-Konfiguration
Bearbeite `.env`:
```bash
TELEGRAM_BOT_TOKEN=your-bot-token-here
TELEGRAM_ALLOWED_USERS=123456789,987654321
TELEGRAM_BOT_USERNAME=your_bot_name_bot
```
Setup-Anleitung:
1. Erstelle Bot via [@BotFather](https://t.me/BotFather)
2. Hole deine User-ID via [@userinfobot](https://t.me/userinfobot)
3. QR-Code scannen auf `/settings` Seite
### Background-Threads
- **EmailPoller**: Prüft alle 2 Minuten auf neue Emails
- **TaskBeat**: Verarbeitet Tasks alle 10 Sekunden
- **TaskWorker**: Führt Agent-Tasks aus (Timeout: 10 Min)
- **OrchestratorBeat**: Prüft alle 30 Minuten auf blockierte Tasks ⭐ NEU
- **TelegramBot**: Polling für Telegram-Nachrichten (wenn konfiguriert)
## 📊 Performance
### Optimierungen
- ✅ Wissensdatenbank nicht im Prompt (on-demand via `@READ_KNOWLEDGE`)
- ✅ Model-Cache (1h TTL)
- ✅ Agent arbeiten in eigenen work-Verzeichnissen
- ✅ Timeout: 600 Sekunden (10 Min) für komplexe Tasks
- ✅ Task-Cleanup: Auto-Löschung nach 7 Tagen
- ✅ Persistente Tasks in SQLite-Datenbank
- ✅ Self-Learning Team-Management
### Geschätzte Ausführungszeiten
- Einfache Tasks: 30-60 Sekunden
- Komplexe Tasks: 2-5 Minuten
- Research-Tasks: 3-8 Minuten
## 🔒 Security
### Implementierte Maßnahmen
- ✅ XSS-Schutz: HTML-Escaping in allen Templates (orchestrator.html, chat.html)
- ✅ Email-Whitelist: Nur autorisierte Absender (diversityball.at Domain)
- ✅ Telegram-Whitelist: Nur autorisierte User-IDs
- ✅ Exception-Handling: Spezifische Exception-Typen mit Logging
- ✅ Request-Validierung: `.get()` mit Defaults
- ✅ Path Traversal Protection: Agent-Files nur aus eigenem work-Verzeichnis
- ✅ Session-basierte Auth: Flask-Sessions
### Empfehlungen für Produktion
- 🔐 HTTPS aktivieren (TLS/SSL)
- 🔐 Secrets in Umgebungsvariablen (nicht in Code)
- 🔐 CSP Headers setzen
- 🔐 Rate Limiting für API-Endpoints
- 🔐 WSGI Server verwenden (Gunicorn, uWSGI)
## 🐛 Debugging
### Logs prüfen
```bash
# Echtzeit-Logs
tail -f app_output.log
# Letzte 50 Zeilen
tail -50 app_output.log
# Nach Errors suchen
grep -i error app_output.log
```
### App-Status
```bash
# Läuft die App?
ps aux | grep "python3 app.py"
# Port 5000 belegt?
lsof -i :5000
```
## 📝 Entwicklung
### Code-Quality
- ✅ 72 Funktionen, 29 Routes
- ✅ Keine unused imports
- ✅ Spezifisches Exception-Handling
- ✅ Logging für alle kritischen Operationen
### Git-Workflow
```bash
# Status prüfen
git status
# Änderungen committen
git add .
git commit -m "feat: neue Funktion"
# Pushen
git push origin main
```
## 📚 Weitere Dokumentation
- `CHANGES.md` - Detaillierte Feature-Implementierungen
- `FEATURES.md` - Feature-Übersicht
- `QUICKSTART.md` - Schnellstart-Anleitung
- `.env.example` - Email-Konfiguration
## 🎓 Use Cases
### Event-Planung
1. Orchestrator empfängt Planungs-Anfrage
2. Erstellt Subtasks für Budget, Location, Catering
3. Agents arbeiten parallel
4. Orchestrator aggregiert Ergebnisse
### Email-basierte Tasks
1. Email kommt an (von Whitelist-Absender)
2. EmailPoller erstellt Task
3. TaskBeat weist Task zu passendem Agent
4. Agent arbeitet Task ab und antwortet per Email
### Neuer Team-Member (Self-Learning)
1. Email von unbekanntem @diversityball.at Absender
2. System erkennt: "Nicht in Team-DB!"
3. Orchestrator übernimmt automatisch
4. Begrüßt und bittet um Vorstellung (Name, Rolle, Verantwortlichkeiten)
5. Beantwortet auch die eigentliche Anfrage
6. Nutzt @ADD_TEAM_MEMBER zum Speichern
7. Zukünftig: Bessere Koordination durch bekannte Verantwortlichkeiten
### Orchestrator Beat Monitoring
1. Alle 30 Minuten: System-Check
2. Findet Tasks ohne Fortschritt (>2h pending)
3. Findet blockierte Tasks (>4h in_progress)
4. Fragt Orchestrator was zu tun ist
5. Orchestrator entscheidet ob Eskalation nötig
6. Bei Bedarf: @SEND_EMAIL an verantwortliches Team-Mitglied
### Wissensdatenbank-Abfrage
1. Agent braucht Info (z.B. Budget)
2. Nutzt `@READ_KNOWLEDGE Topic: Budget`
3. System extrahiert relevante Sektion
4. Agent erhält nur benötigte Informationen
## 🤝 Mitwirken
Dieses Projekt wurde entwickelt für den **Diversity-Ball Wien 2026**.
## 📄 Lizenz
Dieses Projekt ist für internen Gebrauch und Event-Management entwickelt.
---
**Version**: 2.0.0
**Letztes Update**: 21. Februar 2026
**Status**: Production-Ready ✅
**Neue Features**: Self-Learning Team-Management, Orchestrator Beat, Task-Persistierung, Telegram-Integration