- init_sticky_context Tauri Command: LÃĪdt Context aus DB, sendet an Bridge
- Frontend ruft Command beim Start auf (+layout.svelte)
- StickyContextInfo Store fÞr Status-Tracking
- Context-Badge im Footer (ð +XXctx Token)
- Zeigt Anzahl EintrÃĪge und Token-SchÃĪtzung
Bugfixes:
- context.rs: Typ-Annotationen in Closures (String statt str)
- db.rs: conn als pub(crate) fÞr Module-Zugriff
- memory.rs: get_sticky_context â get_sticky_memory_entries (Namenskonflikt)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
45 KiB
Claude Desktop â Roadmap
Stand: 14.04.2026
Aktueller Status
Implementiert (Phase 1-4)
| Feature | Status | Commit |
|---|---|---|
| Tauri 2.0 + SvelteKit 5 App | â | Initial |
| Claude Agent SDK Integration | â | Phase 2 |
| Live-Streaming Text im Chat | â | Phase 2 |
| SQLite Persistierung | â | Phase 3 |
| Guard-Rails System | â | Phase 3 |
| Claude Bridge (Node.js) | â | Phase 3 |
| 4-Panel Layout (PaneForge) | â | Phase 4 |
| Tab-Switching | â | Phase 4 |
| Markdown-Rendering | â | Phase 4 |
| Activity Panel (Tool-Tracking) | â | Phase 4 |
| Memory Panel | â | Phase 4 |
| Audit Log Panel | â | Phase 4 |
| Agent-View | â | Phase 4 |
| Modell-Auswahl (Haiku/Sonnet/Opus) | â | 433e2de |
| Session-Historie persistent | â | 4ba14a5 |
| STOPP-Button + Escape-Shortcut | â | Vorhanden |
| Token/Kosten-Anzeige im Footer | â | Vorhanden |
| Modell-Badge (Titlebar + Footer) | â | 9129163 |
| Tray-Icon mit Menu | â | 3c6da3b |
| Subagent-Hierarchie (Phase 5) | â | 6cfcdb2 |
| System-Monitor (Phase 16) | â | adb11fd |
| UI: Code-Copy, Edit, Regenerate (Phase 7) | â | 9d837ef |
| Session-Management (Phase 6) | â | abaf4eb |
| Claude-DB Integration (Phase 8) | â | e6bd0de |
| Context-Management (Phase 9) | â | eb91e54 |
Phase 5: Subagent-Hierarchie â ERLEDIGT
Commit:
6cfcdb2(14.04.2026)
Implementiert
-
â scripts/claude-bridge.js â Subagent-Tracking
- Map
activeSubagentsfÞr Tool-ID â Agent-Info SUBAGENT_TOOLSerkennt Task/Agent Tool-Callssubagent-started/subagent-stoppedEventsparentAgentId,depth,modelim Payload
- Map
-
â src/lib/stores/app.ts â Agent mit Hierarchie
Agent.parentAgentId?: stringAgent.depth: numberbuildAgentTree()â rekursive BaumstrukturagentTreederived Store
-
â src/lib/stores/events.ts â Event-Handler
SubagentEventInterface- Listener fÞr
subagent-started,subagent-stopped addSubAgent()mit Parent-VerknÞpfung
-
â src/lib/components/AgentView.svelte â Baumansicht
- Rekursives
{#snippet agentNode}fÞr Hierarchie - EinrÞckung mit CSS
--depthVariable - Verbindungslinien zwischen Parent/Child
- Collapse/Expand per Agent
- Typ-Icons (ðŊ Main, ð Explore, ð Plan, etc.)
- Rekursives
Phase 6: Session-Management Verbesserungen â ERLEDIGT
Commit:
abaf4eb(14.04.2026)
Implementiert
-
â Session Auto-Load bei App-Start
+layout.sveltelÃĪdt aktive Session inonMount- Session-Stats werden wiederhergestellt (Tokens, Kosten)
- Nachrichten aus DB geladen
-
â agent_id in messages-Tabelle
ChatMessageStruct erweitert- DB-Schema enthÃĪlt
agent_idSpalte DbMessageInterface angepasst
-
â Session-Compacting
compact_session(session_id, keep_last)Funktion- Fasst alte Nachrichten in Summary zusammen
- Standard: 30 letzte Nachrichten behalten
- Tauri Command registriert
NachtrÃĪglich implementiert
- â
Token-basiertes Compacting â Warnung bei ~40k Token mit BestÃĪtigungs-Dialog (
ab95af2) - â
Claude-Session-ID â SDK-Fortsetzung fÞr nahtlose Konversationen (
be65dee)- Session-ID aus claude-result Event speichern
- Bei neuen Nachrichten automatisch fortsetzen
- Bridge nutzt
sessionIdin query() Optionen
Alle Phase 6 Features implementiert!
Phase 7: UI-Verbesserungen â ERLEDIGT
Commit:
9d837ef(14.04.2026)
Implementiert
-
â Code-Block mit Copy-Button
- Custom
markedRenderer fÞr.code-block-wrapper - Svelte action
addCopyButtonsmit MutationObserver - Sprach-Label oben links
- ð Copy-Button oben rechts
- Funktioniert auch beim Streaming
- Custom
-
â Nachricht bearbeiten (Edit)
- âïļ Button bei User-Nachrichten (hover)
- Inline-Textarea im Edit-Modus
- "Speichern & Senden" â lÃķscht folgende Nachrichten
- Escape zum Abbrechen
-
â Antwort regenerieren (Regenerate)
- ð Button bei letzter Assistant-Nachricht
- LÃķscht Antwort, sendet User-Nachricht erneut
- Nur wenn nicht isProcessing
NachtrÃĪglich implementiert
- â
DiffView.svelte â Diff-Ansicht fÞr Edit-Tool Ergebnisse (
2653b4f) - â
FilePreview.svelte â Dateivorschau fÞr Read-Tool Ergebnisse (
2653b4f) - â
Keyboard Shortcuts â Ctrl+K (Focus), Ctrl+Enter (Senden), Ctrl+Shift+K (Leeren) (
56eb2f5)
Phase 8: Claude-DB Integration â ERLEDIGT
Commit:
e6bd0de(14.04.2026)
Problem
Die App hat keinen direkten Zugriff auf die zentrale Wissensbasis (claude DB auf 192.168.155.1).
Ziel
- Wissensbasis durchsuchen direkt in der App
- Erkenntnisse speichern ("Das merken")
- Skills/Hooks/Patterns aus DB laden
Implementiert
-
â src-tauri/src/knowledge.rs (NEU)
- MySQL-Verbindung zu claude-db (192.168.155.1:3306)
search_knowledge(query)â Volltextsuche mit MATCH AGAINSTsave_knowledge(entry)â Neuer Eintrag speichernget_knowledge(id)â Einzelnen Eintrag ladenget_knowledge_categories()â Kategorien mit Countget_recent_knowledge()â Letzte EintrÃĪgetest_knowledge_connection()â Verbindungstest
-
â src-tauri/Cargo.toml
mysql_async = "0.34"Dependency hinzugefÞgt
-
â src-tauri/src/lib.rs
- Knowledge-Modul registriert (
mod knowledge) - Alle Tauri-Commands exportiert
- Knowledge-Modul registriert (
-
â src/lib/components/KnowledgePanel.svelte (NEU)
- Suchfeld mit Enter-Trigger
- Kategorie-Filter Chips
- Ergebnisliste mit Relevanz-Score
- Detail-Modal bei Klick
- "Das merken" Dialog mit Formular
- Verbindungsstatus-Anzeige
-
â src/routes/+page.svelte
- Neuer Tab "Wissen" (ð) im mittleren Panel
- KnowledgePanel eingebunden
NachtrÃĪglich implementiert
- â
"Das merken" im Chat â ðĄ Button bei Nachrichten, Modal-Dialog (
56eb2f5)
NachtrÃĪglich implementiert (14.04.2026)
- â
Sticky Context Auto-Load â Context wird beim App-Start automatisch geladen und an die Bridge gesendet
init_sticky_contextTauri Command erstellt- Frontend ruft Command in
+layout.svelteauf - Context-Status im Footer angezeigt (ð +XXctx)
- EnthÃĪlt Anzahl EintrÃĪge und Token-SchÃĪtzung
Verifikation
# Wissensbasis durchsuchen â Ergebnisse in App
# "Das merken" klicken â Eintrag in claude.knowledge
# Kategorie-Filter â EintrÃĪge filtern
Phase 9: Intelligentes Context-Management â ERLEDIGT
Commit:
eb91e54(14.04.2026)
Das Problem: Context-Verlust nach Compacting
Compacting ist notwendig (Token-Limit, Kosten, Latenz), aber dabei geht kritischer Kontext verloren:
- ZugÃĪnge (DB-Hosts, API-Keys)
- Projekt-Kontext (CLAUDE.md)
- Getroffene Entscheidungen
- Aktuelle Aufgabe
LÃķsung: Drei-Schichten-GedÃĪchtnis
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â SCHICHT 1: IMMER PRÃSENT (~200 Token) â
â âĒ User-Info (Name, Firma) â
â âĒ Aktive ZugÃĪnge (komprimiert) â
â âĒ Aktuelle Projekt-ID + Phase â
â â Bei JEDEM API-Call dabei â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â SCHICHT 2: PROJEKT-KONTEXT (~500 Token) â
â âĒ CLAUDE.md (komprimiert) â
â âĒ Architektur-Entscheidungen â
â âĒ Offene TODOs â
â â Nach Compacting neu injiziert â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â SCHICHT 3: WISSENS-HINTS (on-demand) â
â âĒ Relevante DB-EintrÃĪge â
â âĒ Ãhnliche Probleme/LÃķsungen â
â â Bei Tool-Aufrufen automatisch geladen â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Implementiert
-
â src-tauri/src/context.rs (NEU)
StickyContextStruct (Schicht 1) â User-Info, Credentials, Projekt, RegelnProjectContextStruct (Schicht 2) â Entscheidungen, TODOs, InsightsExtractedContextâ Kontext vor Compacting extrahierenrender()Methoden fÞr System-Prompt-Integration- Token-SchÃĪtzung mit
estimate_tokens()
-
â Datenbank-Schema (SQLite)
sticky_contextTabelle (key, value, priority)compacting_archiveTabelle (Entscheidungen, TODOs, etc.)context_failuresTabelle (fÞr Prompt-Optimierung)
-
â Tauri-Commands
get_sticky_context()â Schicht 1 ladenset_sticky_context()â Eintrag setzenremove_sticky_context()â Eintrag lÃķschenget_project_context()â Schicht 2 aus Archivextract_context_before_compacting()â Kritisches extrahierenlog_context_failure()â Fehler loggenget_full_context()â Kombinierter Promptlist_sticky_context()â Alle EintrÃĪge auflisten
-
â src/lib/components/ContextPanel.svelte (NEU)
- Sticky-Context-EintrÃĪge anzeigen/bearbeiten
- Eintrags-Typen: User-Info, Regeln, Credentials, Projekt
- PrioritÃĪts-Management (1=kritisch bis 4=niedrig)
- Vorschau des gerenderten Context
- Token-Anzeige
-
â src/routes/+page.svelte
- Neuer Tab "ð Context" im rechten Panel
NachtrÃĪglich implementiert
- â
Bridge-Integration â Context bei jedem API-Call injizieren (
2653b4f)claude-bridge.js: Sticky Context als Prefix zur Nachrichtclaude.rs: Context automatisch aus DB laden
Noch offen (niedrigere PrioritÃĪt)
- Auto-Extraction vor Compacting â Hook automatisch auslÃķsen
- Validation â PrÞfen ob Claude den Context nutzt
- Wissens-Hints â On-demand aus claude-db laden
Verifikation
# Context-Panel Ãķffnen â EintrÃĪge hinzufÞgen
# Vorschau â <critical-context> Tags sichtbar
# Nachricht senden â Monitor zeigt "+XX ctx" Token
Phase 10: Sprach-Interface (Optional)
Technologie-Stack
| Komponente | Technologie | Ort |
|---|---|---|
| Speech-to-Text | Whisper.cpp | Lokal |
| Voice Activity Detection | Silero VAD | Lokal |
| Text-to-Speech | OpenAI TTS API | Cloud |
| Audio-Capture | Web Audio API | Browser |
Aufgaben
-
Whisper Integration
- whisper.cpp als Tauri-Sidecar oder WASM
- Streaming-Transkription
- Deutsch-Modell (small oder medium)
-
VAD (Voice Activity Detection)
- Erkennt wann User aufhort zu sprechen
- Pause > 1.5s â Nachricht senden
-
TTS (Text-to-Speech)
- OpenAI TTS API Integration
- Streaming-Wiedergabe
- Interrupt bei User-Sprache
-
UI
- Mikrofon-Button in Chat
- Pegel-Anzeige
- Transkript live anzeigen
Aufwand
Gross â eigenes Teilprojekt, 2-3 Wochen
Phase 11: Multi-Agent-Architektur (Context-Einsparung)
Die drei Agent-Modi (einstellbar!)
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â MODUS A: SOLO (Standard fÞr kleine Aufgaben) â
â Main macht alles selbst, keine Subagents â
â â Kein Overhead, schnell, fÞr Triviales â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â MODUS B: HANDLANGER (Main denkt, Rest fÞhrt aus) â
â Main: "Lies Datei X, such Y, gib Zeilen 10-20" â
â Sub: FÞhrt EXAKT aus, denkt NICHT selbst â
â â FÞr komplexe Aufgaben mit viel Koordination â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â MODUS C: AUTONOME EXPERTEN (jeder denkt selbst) â
â Main: "Implementiere Feature X" â
â Research: Plant SELBST wie er sucht â
â Implement: Plant SELBST die Architektur â
â â FÞr parallelisierbare Aufgaben, Experten-Wissen â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Wann welcher Modus?
| Aufgabe | Modus | Grund |
|---|---|---|
| "Fix Typo in Zeile 42" | Solo | Trivial |
| "Lies 50 Dateien, finde Bug" | Handlanger | Main koordiniert |
| "Implementiere OAuth2 komplett" | Experten | Jeder Teil braucht Planung |
| "ErklÃĪre den Code" | Solo | Nur Analyse |
Automatische Modus-Wahl (optional)
function chooseMode(task) {
const tokens = estimateTokens(task);
const complexity = analyzeComplexity(task);
if (tokens < 1000 && complexity === 'simple') return 'solo';
if (complexity === 'coordination_heavy') return 'handlanger';
if (complexity === 'parallelizable') return 'experten';
return 'solo'; // Default
}
Agent-Typen (fÞr Modus B+C)
| Agent | Aufgabe | Modus B (Handlanger) | Modus C (Experte) |
|---|---|---|---|
| Research | Code durchsuchen | "Lies X, gib Y" | "Finde selbst was relevant ist" |
| Implement | Code schreiben | "Schreib exakt das" | "Implementiere nach Best Practices" |
| Test | Testen | "FÞhre diese Tests aus" | "Schreib und fÞhre passende Tests" |
| Review | PrÞfen | "PrÞfe auf X, Y, Z" | "Finde selbst Probleme" |
Aufgaben
-
scripts/claude-bridge.js
spawnSubAgent(type, task, maxTokens)FunktionsummarizeResult(result, maxTokens)â Ergebnis komprimieren- Orchestrator-Modus: Main Agent delegiert automatisch
-
Orchestrator-Prompt
Du bist ein ORCHESTRATOR. Du machst NICHT selbst die Arbeit. FÞr jede Aufgabe: 1. Analysiere was nÃķtig ist 2. Delegiere an passenden Sub-Agent 3. Warte auf ZUSAMMENFASSUNG (nicht rohe Daten) 4. Entscheide nÃĪchsten Schritt Sub-Agents: Research, Implement, Test, Review -
Sub-Agent-Prompts
- Research: "Fasse Ergebnisse in max 500 Token zusammen"
- Implement: "Berichte nur: welche Dateien, was geÃĪndert"
- Test: "Berichte nur: passed/failed, Fehlerursache"
-
UI: Agent-Modus Einstellung
- Settings: Dropdown "Agent-Modus" (Solo / Handlanger / Experten / Auto)
- "Auto" wÃĪhlt basierend auf Aufgaben-KomplexitÃĪt
- Anzeige in Footer welcher Modus aktiv
-
UI: Agent-Delegation anzeigen
- AgentView zeigt: Main â Sub-Agent Delegation
- Bei Handlanger: Exakte Anweisung sichtbar
- Bei Experten: Agent's eigene Planung sichtbar
- Ergebnis-Zusammenfassung pro Agent
Verifikation
# GroÃe Aufgabe starten
# PrÞfen: Main Agent delegiert statt selbst zu arbeiten
# PrÞfen: Sub-Agent Ergebnisse sind komprimiert
# PrÞfen: Main Agent Context bleibt klein
Phase 12: Hook-System fÞr Automatisierung
Konzept
Hooks die automatisch bei bestimmten Events laufen:
| Hook | Wann | Was |
|---|---|---|
SessionStart |
App startet | Schicht 1+2 laden |
PreToolUse |
Vor jedem Tool | Wissens-Hints aus DB |
PostToolUse |
Nach Tool | Bei Fehler â Pattern speichern |
BeforeCompacting |
Vor Komprimierung | Kritisches extrahieren |
AfterCompacting |
Nach Komprimierung | Schicht 1+2 injizieren |
Aufgaben
-
src-tauri/src/hooks.rs (NEU)
HookManagerStructregister_hook(event, callback)fire_hook(event, payload)
-
scripts/hooks/ (NEU)
session-start.jsâ LÃĪdt Projekt-Kontextpre-tool.jsâ Wissens-Hints aus claude-dbpost-tool.jsâ Fehler-Patterns speichernbefore-compacting.jsâ Kritisches extrahierenafter-compacting.jsâ Context wiederherstellen
-
UI: Hook-Konfiguration
- Settings-Panel: Hooks ein/ausschalten
- Hook-Log im Audit-Panel
Verifikation
# Session starten â Hook-Log zeigt "Kontext geladen"
# Tool aufrufen â Hook-Log zeigt "Wissens-Hints: 3 gefunden"
# Fehler provozieren â Pattern wird gespeichert
Claude-DB Schema-Erweiterungen
Neue Tabellen fÞr die zentrale Wissensbasis (192.168.155.1):
-- Projekt-Kontext (fÞr Schicht 2)
CREATE TABLE project_context (
id INT PRIMARY KEY AUTO_INCREMENT,
project_id VARCHAR(100),
type ENUM('claude_md', 'architecture', 'decision', 'todo', 'insight'),
content TEXT,
priority INT DEFAULT 5,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
expires_at TIMESTAMP NULL,
INDEX idx_project (project_id)
);
-- Credentials (verschlÞsselt)
CREATE TABLE credentials (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) UNIQUE,
type ENUM('mysql', 'api', 'ssh', 'oauth'),
value_encrypted BLOB,
inject_pattern TEXT, -- Regex: wann automatisch laden
last_used TIMESTAMP
);
-- Compacting-Archive
CREATE TABLE compacting_archive (
id INT PRIMARY KEY AUTO_INCREMENT,
session_id VARCHAR(100),
extracted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
decisions JSON,
open_questions JSON,
key_insights JSON,
zugaenge JSON
);
-- Begriff-Cache (fÞr schnelle Wissens-Hints)
CREATE TABLE concept_cache (
concept VARCHAR(100) PRIMARY KEY,
relevant_knowledge_ids JSON,
last_queried TIMESTAMP,
hit_count INT DEFAULT 0
);
Phase 13: VSCodium Integration (IDE-Steuerung)
Das Ziel
Claude bedient VSCodium komplett â OHNE deine Maus zu blockieren.
Architektur
Claude Desktop ââ VSCode Extension Bridge ââ VSCodium
â â
â ââ VSCode Commands (Tabs, Panels, Git)
â ââ LSP (Refactoring, Go-To, Find References)
â ââ Debug Adapter (Breakpoints, Step)
â
ââ Kein Computer Use! Keine Screenshots! Keine Maus-Simulation!
Was Claude damit kann
| Aktion | Wie | Aktuell? |
|---|---|---|
| Datei Ãķffnen | workbench.action.files.openFile |
â Nein |
| Code formatieren | editor.action.formatDocument |
â Nein |
| Suche in Projekt | workbench.action.findInFiles |
â Nein |
| Git Commit | git.commit |
â (nur CLI) |
| Debugger starten | workbench.action.debug.start |
â Nein |
| Refactoring | LSP textDocument/rename |
â Nein |
| Go-To Definition | LSP textDocument/definition |
â Nein |
| Terminal Ãķffnen | workbench.action.terminal.new |
â Nein |
Aufgaben
-
VSCode Extension: Claude Bridge
- Neues Extension-Projekt erstellen
- WebSocket-Server fÞr Kommunikation mit Claude Desktop
- Command-Executor: VSCode Commands ausfÞhren
- LSP-Bridge: Language Server Anfragen weiterleiten
- Status-Reporter: Was ist gerade offen? Wo ist Cursor?
-
Claude Desktop: IDE-Connector
src-tauri/src/ide.rsâ Verbindung zur ExtensionconnectToIDE()â WebSocket zu VSCodiumexecuteIDECommand(command, args)â Befehl ausfÞhrengetLSPInfo(file, position)â Semantische Infos
-
Neue Tools fÞr Claude
IDE.openFile(path)â Datei im Editor ÃķffnenIDE.goToLine(path, line)â Zu Zeile springenIDE.formatDocument()â FormatierenIDE.rename(oldName, newName)â RefactoringIDE.findReferences(symbol)â Alle VerwendungenIDE.startDebug(config)â Debugger startenIDE.gitCommit(message)â Via Git-Panel
-
UI: IDE-Status anzeigen
- Verbindungsstatus zu VSCodium
- Aktuell offene Datei
- Cursor-Position
Warum NICHT Computer Use?
| Aspekt | Computer Use | Extension Commands |
|---|---|---|
| Geschwindigkeit | Langsam (Screenshots) | Sofort |
| ZuverlÃĪssigkeit | FehleranfÃĪllig | 100% prÃĪzise |
| Maus blockiert? | Ja | Nein |
| Kosten | Hoch (viele API-Calls) | Minimal |
| Extra Display? | Ja (oder VM) | Nein |
Verifikation
# Claude Desktop starten, VSCodium starten
# In Claude: "Ãffne die Datei src/lib.rs"
# â VSCodium Ãķffnet die Datei, DU kannst weiter tippen
# In Claude: "Formatiere das Dokument"
# â Code wird formatiert, ohne dass du was tust
Phase 14: Programm-Steuerung (Nicht nur IDE!)
Das Problem
Terminal ist ein Flaschenhals fÞr:
- GUI-Programme (Dolibarr im Browser, Systemeinstellungen)
- Visuelle Aufgaben (Screenshots prÞfen, UI testen)
- Programme ohne CLI (viele Desktop-Apps)
LÃķsungs-Stack (je nach Programm-Typ)
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PROGRAMM-TYP â STEUERUNG â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â VSCodium/IDE â Extension Commands (Phase 13) â
â Browser/Web-Apps â Playwright MCP â Dolibarr! â
â Terminal/CLI â Bash (bereits vorhanden) â
â Native Linux-Apps â D-Bus + XDG-Portals â
â Alles andere â Computer Use (separates Display) â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
PrioritÃĪt 1: Playwright fÞr Web-Apps (Dolibarr!)
Der Playwright MCP-Server ist bereits konfiguriert! Damit kann Claude:
| Aktion | Playwright-Tool | Use Case |
|---|---|---|
| Seite Ãķffnen | browser_navigate |
Dolibarr aufrufen |
| Element klicken | browser_click |
Buttons, Links |
| Formular ausfÞllen | browser_fill_form |
Daten eingeben |
| Screenshot | browser_take_screenshot |
UI prÞfen |
| Warten | browser_wait_for |
Auf Ladezeit warten |
| Snapshot (DOM) | browser_snapshot |
Struktur analysieren |
Vorteil: LÃĪuft im Hintergrund, blockiert NICHT deine Maus!
PrioritÃĪt 2: D-Bus fÞr Linux-Apps
Viele Linux-Programme sind Þber D-Bus steuerbar:
# Beispiele
dbus-send --session --dest=org.kde.dolphin ... # Dateimanager
dbus-send --session --dest=org.kde.kate ... # Kate Editor
qdbus org.freedesktop.Notifications ... # Benachrichtigungen
PrioritÃĪt 3: Computer Use (Notfall-Option)
FÞr Programme die KEINE API/CLI/D-Bus haben:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â LÃSUNG: Separates Display (:1) â
â â
â Display :0 (Haupt) â Display :1 (Claude) â
â ââ Dein Desktop â ââ Xvfb (virtuell) â
â ââ Deine Maus â â ââ Claude steuert â
â ââ Kein Konflikt â ââ VNC-Zugang optional â
â â
â Du arbeitest normal â Claude bedient GUI-Programme â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Aufgaben
-
Playwright Integration aktivieren
- MCP-Server ist bereits da â Tools verfÞgbar machen
- Dolibarr-Login automatisieren (Session merken)
- UI in App: Browser-Aktionen anzeigen
-
D-Bus Modul
src-tauri/src/dbus.rs(NEU)list_dbus_services()â Was ist verfÞgbar?call_dbus_method(service, path, method, args)- Wrapper fÞr hÃĪufige Aktionen (Dolphin, Kate)
-
Computer Use (separates Display)
src-tauri/src/xdisplay.rs(NEU)start_virtual_display()â Xvfb auf :1 startencapture_display(display_num)â Screenshotsend_input(display_num, action)â Maus/Tastatur- VNC-Server optional fÞr Monitoring
-
UI: Programm-Steuerung Panel
- Browser-View (Playwright-Screenshots)
- D-Bus Services auflisten
- Computer-Use Display einbetten (VNC-Widget)
- Toggle: "Zeige was Claude gerade bedient"
Entscheidungsbaum fÞr Claude
Aufgabe erhalten
â
ââ Ist es eine Web-App? âââââââââââââ Playwright
â
ââ Ist es VSCodium/IDE? âââââââââââââ Extension Commands
â
ââ Hat das Programm CLI? ââââââââââââ Terminal/Bash
â
ââ Hat das Programm D-Bus? ââââââââââ D-Bus
â
ââ Alles andere âââââââââââââââââââââ Computer Use (Display :1)
Verifikation
# Test: Playwright
# Claude: "Ãffne Dolibarr und zeige mir die offenen Rechnungen"
# â Browser Ãķffnet, navigiert, Screenshot im App
# Test: D-Bus
# Claude: "Ãffne Dolphin im Ordner ~/Downloads"
# â Dolphin Ãķffnet sich mit dem Ordner
# Test: Computer Use
# Claude: "Ãffne LibreOffice und erstelle ein Dokument"
# â Display :1 zeigt LibreOffice, VNC optional zum Zuschauen
Phase 15: PrÃĪsentations- & Schulungsmodus (Lehrer-Modus)
Das Ziel
Claude als Lehrer â erklÃĪrt, visualisiert, programmiert langsam und nachvollziehbar.
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â NORMALER MODUS â SCHULUNGSMODUS â
â âĒ Claude arbeitet schnell â âĒ Claude erklÃĪrt jeden Schritt â
â âĒ Ergebnis im Chat â âĒ Visualisierungen live â
â âĒ Effizient â âĒ Code wird "getippt" â
â â âĒ Pause/Play jederzeit â
â â âĒ Geschwindigkeit einstellbar â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Features
1. PrÃĪsentationsfenster
Separates Fenster (oder Panel) fÞr Visualisierungen:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PrÃĪsentation [â][âĄ][Ã] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â â
â âââââââââââ â
â â Thema â â
â ââââââŽâââââ â
â âââââââââžââââââââ â
â âž âž âž â
â âââââââââ âââââââââ âââââââââ â
â âPunkt 1â âPunkt 2â âPunkt 3â â Live Mindmap â
â âââââââââ âââââââââ âââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â ââ âķ Pause âķâķ â Geschwindigkeit: [ââââââââ] 60% â ðĒ TTS â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
2. Visualisierungs-Typen
| Typ | Technologie | Use Case |
|---|---|---|
| Mindmap | Mermaid.js | Konzepte erklÃĪren |
| Flowchart | Mermaid.js | Programmablauf |
| Sequenzdiagramm | Mermaid.js | API-Calls, Prozesse |
| Code | Monaco Editor | Live Coding |
| Architektur | Mermaid/D3.js | System-Ãbersicht |
| Freihand | Excalidraw | Skizzen |
| Terminal | xterm.js | Befehle zeigen |
3. Animiertes Coding
Claude "tippt" Code langsam â wie ein Mensch:
// Geschwindigkeit einstellbar: 30-200 WPM
function animateCode(code: string, wpm: number) {
const charDelay = 60000 / (wpm * 5); // ~5 Zeichen/Wort
for (const char of code) {
await sleep(charDelay);
appendChar(char);
highlightLine(currentLine);
}
}
Features:
- Syntax-Highlighting wÃĪhrend des Tippens
- Cursor-Animation
- Zeile wird hervorgehoben
- ErklÃĪrung erscheint parallel (Chat oder TTS)
4. ErklÃĪr-Modus
Claude erklÃĪrt wÃĪhrend er arbeitet:
ââ Code-Panel âââââââââââââââŽâ ErklÃĪrung ââââââââââââââââââââââââââ
â â â
â function add(a, b) { â "Ich definiere eine Funktion â
â return a + b; â cursor â namens 'add' mit zwei Parametern. â
â } â Diese gibt die Summe zurÞck." â
â â â
â â [ð Vorlesen] â
âââââââââââââââââââââââââââââīâââââââââââââââââââââââââââââââââââââââ
5. Interaktive Elemente
- Pause â Jederzeit anhalten
- ZurÞck â Letzten Schritt wiederholen
- Frage stellen â Unterbricht PrÃĪsentation
- Geschwindigkeit â Slider (langsam â schnell)
- TTS ein/aus â Sprachausgabe toggle
- Vollbild â FÞr PrÃĪsentationen
Schulungs-Modi
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â MODUS: ERKLÃRER â
â Claude erklÃĪrt ein Konzept mit Visualisierungen â
â "ErklÃĪre mir wie async/await funktioniert" â
â â Mindmap + Flowchart + Code-Beispiele â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â MODUS: LIVE CODING â
â Claude programmiert langsam und erklÃĪrt jeden Schritt â
â "Zeig mir wie man einen REST-API-Client baut" â
â â Code wird getippt, jede Zeile erklÃĪrt â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â MODUS: WALKTHROUGH â
â Claude fÞhrt durch existierenden Code â
â "ErklÃĪre mir diese Datei" â
â â Code wird Zeile fÞr Zeile durchgegangen â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â MODUS: KONFIGURATION â
â Claude erklÃĪrt Config-Dateien â
â "ErklÃĪre mir die nginx.conf" â
â â Optionen werden einzeln erklÃĪrt + visualisiert â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Aufgaben
-
PrÃĪsentationsfenster
- Neues Tauri-Window fÞr PrÃĪsentation
- Kann neben Hauptfenster existieren
- Steuerleiste (Play/Pause/Speed)
- Vollbild-Toggle
-
Mermaid.js Integration
src/lib/components/MermaidDiagram.svelte- Live-Rendering von Diagrammen
- Animierte Knoten-HinzufÞgung
- Zoom und Pan
-
Animiertes Code-Panel
src/lib/components/AnimatedCode.svelte- Monaco Editor mit Tipp-Animation
- Geschwindigkeits-Kontrolle
- Zeilen-Highlighting
- Cursor-Animation
-
ErklÃĪr-System
- Claude generiert ErklÃĪrungen parallel zum Code
- Synchronisation: Code-Position â ErklÃĪrung
- Optional: TTS fÞr ErklÃĪrungen (Phase 10)
-
Schulungs-Prompts
- Spezieller System-Prompt fÞr Lehrer-Modus
- "Du bist ein geduldiger Lehrer. ErklÃĪre jeden Schritt."
- Strukturierte Ausgabe:
{code, explanation, visualization}
-
UI: Modus-Wechsel
- Button: "Schulungsmodus aktivieren"
- Oder: "ErklÃĪre mir das" Button bei jeder Antwort
- Settings: Standard-Geschwindigkeit, TTS an/aus
-
Excalidraw-ÃĪhnliche Skizzen
- FÞr Freihand-Diagramme
- Claude kann "zeichnen" (Koordinaten â Shapes)
- Export als PNG/SVG
Beispiel-Ablauf
User: "ErklÃĪre mir wie Git Branches funktionieren"
Claude (Schulungsmodus):
-
Mindmap erscheint:
mindmap root((Git Branches)) Was ist ein Branch? Zeiger auf Commit Leichtgewichtig Warum Branches? Parallele Entwicklung Features isolieren Befehle git branch git checkout git merge -
Code-Animation:
# Neuen Branch erstellen git branch feature-login â tippt langsam # Zum Branch wechseln git checkout feature-login -
ErklÃĪrung (parallel):
"Ein Branch ist wie ein paralleles Universum fÞr deinen Code. Du kannst Ãnderungen machen ohne den Hauptcode zu beeinflussen..."
-
Flowchart:
gitGraph commit id: "Initial" branch feature-login commit id: "Login-Form" checkout main commit id: "Hotfix" merge feature-login
Verifikation
# Test: Schulungsmodus aktivieren
# "ErklÃĪre mir Promises in JavaScript"
# â PrÃĪsentationsfenster Ãķffnet sich
# â Mindmap erscheint animiert
# â Code wird langsam getippt
# â ErklÃĪrungen synchron angezeigt
# â Pause funktioniert
# â Geschwindigkeit ÃĪnderbar
Phase 16: System-Monitor (Debug-Panel) â ERLEDIGT
Commit:
adb11fd(14.04.2026)
Das Ziel
Echtzeit-Einblick was im Hintergrund passiert â vom Programm generiert, NICHT von der KI!
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â System-Monitor [Filter âž] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â â
â 14:32:01.234 ðĩ API â claude-3-opus [1.2s] 2.4k tok â
â 14:32:02.891 ðĒ HOOK SessionStart fired â
â 14:32:03.012 ðĄ TOOL Read src/lib.rs (245 lines) â
â 14:32:03.456 ðĩ API â Response streaming... â
â 14:32:04.123 ðĄ TOOL Grep "handleError" (3 matches) â
â 14:32:04.567 ðĢ MCP playwright.browser_navigate â
â 14:32:05.234 ðī ERROR Connection timeout (retry 1/3) â
â 14:32:05.890 ðĒ HOOK PreToolUse â injected 2 hints â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââĪ
â âķ Details: API Request claude-3-opus [Copy] â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â â Model: claude-3-opus-20240229 ââ
â â Input: 12,456 tokens ââ
â â Output: 2,341 tokens ââ
â â Cost: $0.42 ââ
â â Latency: 1,234ms (first token: 234ms) ââ
â â System Prompt: 2,100 tokens ââ
â â Context: Session abc123, Turn 5 ââ
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Event-Typen (Farbcodiert)
| Farbe | Typ | Was wird geloggt |
|---|---|---|
| ðĩ Blau | API | Requests/Responses zu Claude API |
| ðĒ GrÞn | HOOK | Hook-AusfÞhrungen (SessionStart, PreTool, etc.) |
| ðĄ Gelb | TOOL | Tool-Aufrufe (Read, Grep, Edit, Bash) |
| ðĢ Lila | MCP | MCP-Server Kommunikation |
| ð Orange | AGENT | Subagent Start/Stop/Delegation |
| ðī Rot | ERROR | Fehler, Timeouts, Retries |
| ⊠Grau | DEBUG | Interne Events (optional) |
Zwei Ansichten
1. Kompakt-Ansicht (Standard)
Eine Zeile pro Event:
14:32:01 ðĩ API â claude-3-opus [1.2s] 2.4k tok
2. Detail-Ansicht (Klick auf Event)
VollstÃĪndige Informationen:
{
"type": "api_request",
"timestamp": "2026-04-14T14:32:01.234Z",
"model": "claude-3-opus-20240229",
"input_tokens": 12456,
"output_tokens": 2341,
"latency_ms": 1234,
"first_token_ms": 234,
"cost_usd": 0.42,
"session_id": "abc123",
"turn": 5,
"tools_available": ["Read", "Edit", "Bash", ...],
"system_prompt_tokens": 2100
}
Was wird geloggt?
API-Events
- Request gesendet (Modell, Token-SchÃĪtzung)
- Streaming gestartet
- Response komplett (Token, Kosten, Latenz)
- Errors (Rate Limit, Timeout, etc.)
Hook-Events
- Hook Name + Zeitpunkt
- Payload (gekÞrzt)
- Ergebnis (injizierte Hints, blockiert, etc.)
- Dauer
Tool-Events
- Tool-Name + Parameter (gekÞrzt)
- Ergebnis-Zusammenfassung
- Dauer
- Fehler wenn vorhanden
MCP-Events
- Server-Name
- Tool/Resource aufgerufen
- Parameter + Ergebnis
- Verbindungsstatus
Agent-Events
- Agent gestartet (ID, Typ, Parent)
- Agent beendet (Tokens verbraucht)
- Delegation (von â an)
Implementiert
-
â Event-System (Frontend)
src/lib/stores/app.tsâ MonitorEvent Interface, Stores- Ringbuffer (max 1000 Events) im Frontend
- Derived Stores fÞr Stats und Filter
-
â API-Interceptor
scripts/claude-bridge.jserweitertsendMonitorEvent()fÞr alle Event-Typen- Token, Kosten, Latenz geloggt
summarizeToolInput()fÞr kompakte Tool-Logs
-
â Tool-Logger
- Automatisch bei
tool-start/tool-end - Parameter geloggt (gekÞrzt)
maskSensitive()fÞr PasswÃķrter, API-Keys
- Automatisch bei
-
â UI: Monitor-Panel
src/lib/components/MonitorPanel.svelte- Farbcodierte Event-Liste (ðĩðĒðĄðĢð ðīâŠ)
- Filter-Dropdown nach Typ
- Auto-Scroll (toggle)
- Detail-Ansicht bei Klick
- Copy-Button fÞr JSON
- Stats-Anzeige (Events, API-Calls, Errors, Latenz)
NachtrÃĪglich implementiert
- â
Log-Export â JSON/Text Download Buttons (
88f2d22) - â
Live Token-Anzeige â Im Chat-Header mit Farbcodierung (
84dc806) - â
Backend-Persistierung â SQLite fÞr Monitor-Events (
9d73684)monitor_eventsTabelle mit Auto-Cleanup (7 Tage)- CRUD-Methoden + Tauri Commands
- Frontend lÃĪdt Events beim Start, speichert bei neuen Events
- â
Performance-Metriken â Kosten-Tracker + Statistiken (
6b8f281)- PerformancePanel.svelte mit Kosten, Token, Latenz
- Neuer Tab "ð Kosten" im mittleren Panel
- Latenz-Verteilung (Min, P50, P95, Max)
- Session-Vergleich
Alle Phase 16 Features implementiert!
Sensitive Daten maskieren!
function maskSensitive(data: string): string {
return data
.replace(/password[=:]\s*\S+/gi, 'password=***')
.replace(/api[_-]?key[=:]\s*\S+/gi, 'api_key=***')
.replace(/bearer\s+\S+/gi, 'Bearer ***')
.replace(/sk-[a-zA-Z0-9]+/g, 'sk-***');
}
Datenstruktur
interface MonitorEvent {
id: string;
timestamp: Date;
type: 'api' | 'hook' | 'tool' | 'mcp' | 'agent' | 'error' | 'debug';
// Kompakt-Ansicht
summary: string; // "â claude-3-opus [1.2s] 2.4k tok"
// Detail-Ansicht
details: {
// Je nach Typ unterschiedlich
[key: string]: any;
};
// Metadaten
session_id?: string;
agent_id?: string;
duration_ms?: number;
error?: string;
}
SQLite-Schema (optional fÞr Persistierung)
CREATE TABLE monitor_events (
id TEXT PRIMARY KEY,
timestamp TEXT NOT NULL,
type TEXT NOT NULL,
summary TEXT NOT NULL,
details JSON,
session_id TEXT,
agent_id TEXT,
duration_ms INTEGER,
error TEXT,
INDEX idx_timestamp (timestamp),
INDEX idx_type (type),
INDEX idx_session (session_id)
);
-- Automatisch alte Events lÃķschen (> 7 Tage)
CREATE TRIGGER cleanup_old_events
AFTER INSERT ON monitor_events
BEGIN
DELETE FROM monitor_events
WHERE timestamp < datetime('now', '-7 days');
END;
Verifikation
# Test: Monitor-Panel Ãķffnen
# Nachricht senden â Events erscheinen live
# ðĩ API Request/Response sichtbar
# ðĄ Tool-Aufrufe sichtbar
# Auf Event klicken â Details erscheinen
# Filter auf "ERROR" â nur Fehler sichtbar
# Export â JSON-Datei mit allen Events
Nicht geplant / Zukunft
- MCP-Server Integration in App
- Plugin-System
- Multi-User / Team-Features
- Cloud-Sync zwischen Geraten
Technische Schulden
- Dead Code in
memory.rs(MemorySystem struct ungenutzt) - Warnings bei
cargo checkbeheben - TypeScript strict mode aktivieren
- E2E Tests mit Playwright
- CI/CD Pipeline (Forgejo Runner)
Build & Entwicklung
# Entwicklung
cd "/mnt/17 - Entwicklungen/20 - Projekte/ClaudeDesktop"
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri dev"
# Produktion (AppImage)
CARGO_TARGET_DIR=/tmp/claude-desktop-target nix-shell --run "npx tauri build"
Commits Ubersicht
| Datum | Commit | Beschreibung |
|---|---|---|
| 13.04.2026 | Initial | Grundgerust |
| 13.04.2026 | Phase 2 | Claude SDK + Events |
| 13.04.2026 | Phase 3 | SQLite, Guard-Rails, Bridge |
| 13.04.2026 | Phase 4 | Tabs, Markdown, UI |
| 14.04.2026 | 433e2de |
Modell-Auswahl |
| 14.04.2026 | 4ba14a5 |
Session-Historie |
| 14.04.2026 | 9129163 |
Titlebar aufgeraumt |
| 14.04.2026 | 3c6da3b |
Tray-Icon |
| 14.04.2026 | 6cfcdb2 |
Phase 5: Subagent-Hierarchie |
| 14.04.2026 | adb11fd |
Phase 16: System-Monitor |
| 14.04.2026 | 9d837ef |
Phase 7: UI Code-Copy, Edit, Regenerate |
| 14.04.2026 | abaf4eb |
Phase 6: Session-Management, Auto-Load, Compacting |
| 14.04.2026 | e6bd0de |
Phase 8: Claude-DB Integration, KnowledgePanel |
| 14.04.2026 | eb91e54 |
Phase 9: Context-Management, ContextPanel |
| 14.04.2026 | 2653b4f |
Bridge-Context Integration, DiffView, FilePreview |
| 14.04.2026 | 56eb2f5 |
Keyboard Shortcuts + "Das merken" Button |
| 14.04.2026 | ab95af2 |
Token-basiertes Compacting mit Dialog |
| 14.04.2026 | 84dc806 |
Live Token-Anzeige im Chat-Header |
| 14.04.2026 | 88f2d22 |
Log-Export im Monitor-Panel |
| 14.04.2026 | 9d73684 |
Monitor-Events Backend-Persistierung |
| 14.04.2026 | 6b8f281 |
Performance-Panel (Kosten-Tracker, Statistiken) |
| 14.04.2026 | be65dee |
Claude-Session-ID fÞr SDK-Fortsetzung |