feat: add privacy-aware hybrid routing

This commit is contained in:
2026-07-30 18:00:20 +02:00
parent f3e11831fb
commit e57186f678
6 changed files with 541 additions and 11 deletions
+11 -5
View File
@@ -81,7 +81,11 @@ Rootserver:
- Isolierter Gemini-Provider nutzt das offizielle `google-genai` 2.16.0 mit API
`v1`, begrenztem Timeout und maximal einem Retry; 429 wird nicht wiederholt.
- Fehlender/ungültiger Schlüssel, 429, Netzwerkfehler und ungültige Antworten
werden als getrennte, bereinigte Fehler signalisiert. Noch kein Routing aktiv.
werden als getrennte, bereinigte Fehler signalisiert.
- Hybridrouter erzwingt lokal Datenschutz, Freigabe, Billing-Bestätigung,
Tages-/Größenlimits und sichtbares Ollama-Fallback vor jedem Cloudaufruf.
- Ein abgelehnter Schlüssel deaktiviert Gemini für den restlichen CLI-Prozess;
alte reine Ollama-Sitzungen bleiben mit dem Hybridprovider ladbar.
## Aktuelle Architektur
@@ -131,6 +135,8 @@ Rootserver:
lokale Tages-/Größenlimits und metadatenbasiertes Provider-Audit ergänzt.
- Offiziellen Gemini-SDK-Client isoliert angebunden und ausschließlich mit
Test-Doubles gegen Erfolg, Key-, Quota-, Netzwerk- und Antwortfehler geprüft.
- Hybridrouting und Audit mit Test-Doubles integriert: `never` konstruiert keinen
Cloudclient, `ask` verlangt Freigabe, 429/Netzwerk/Keyfehler fallen lokal zurück.
## Aktuelle Tests
@@ -145,7 +151,7 @@ Letzter bestätigter Projektstand:
- uv-Lock und `uv sync --dev`: bestanden
- Python in `.venv`: 3.12.13
- Ruff in `.venv`: 0.16.0
- Unit-Tests: 37 bestanden; zusätzlich 7 für den isolierten Gemini-Provider
- Unit-Tests: 51 bestanden; zusätzlich 13 Router- und 1 Kompatibilitätstest
- Ruff Lint: bestanden
- Ruff Formatprüfung: bestanden
@@ -231,9 +237,9 @@ Abnahmestatus:
Auf dem bestehenden Feature-Branch als nächstes einzelnes Arbeitspaket:
1. Hybridrouter vor den Chatkern setzen
2. `allowed`/`ask`/`never`, lokale Tagesgrenze und sichtbares Ollama-Fallback
für Key-, 429-, Netzwerk- und Gemini-Ausfälle vollständig mit Doubles testen
1. lokale TOML-Konfiguration und sichere Aktivierungsbestätigung ergänzen
2. Hybridrouter in die CLI verdrahten und `/provider`, `/privacy`, `/status`
mit standardmäßig abgelehnter `ask`-Freigabe implementieren
3. noch keine echte Cloudanfrage ausführen und noch nicht nach `main` mergen
Keinen API-Key in Chat, Git, Obsidian, Logs oder Dokumentation übernehmen.
+8 -5
View File
@@ -49,7 +49,11 @@ Stand: lokaler Textchat auf `main`, 30.07.2026.
begrenztem Timeout, höchstens einem Retry und keinem 429-Retry
- bereinigte, getrennte Fehler für fehlenden/ungültigen Key, Quote, Netzwerk,
Modellverfügbarkeit, Timeout und ungültige Antwort
- 37 Unit-Tests aktuell erfolgreich; Ruff-Format und Lint sauber
- Hybridrouter erzwingt vor Cloudaufrufen lokal `allowed`/`ask`/`never`,
Aktivierung, Billing-Bestätigung, Tages-/Größenlimit und minimierten Kontext
- sichtbares lokales Fallback für fehlenden/ungültigen Key, 429, Netzwerk,
Datenschutz und lokale Grenzen; alte Ollama-Sitzungen bleiben ladbar
- 51 Unit-Tests aktuell erfolgreich; Ruff-Format und Lint sauber
## Nicht implementiert
@@ -74,7 +78,6 @@ Living-Mind-Frontend und automatische Ollama-Prozessverwaltung.
Ollama wird bewusst manuell in einem eigenen Terminal gestartet. Antworten werden
noch nicht gestreamt; Sitzungen haben noch keine Titel, Suche oder Löschfunktion.
`qwen3:8b` ist nicht automatisch für die GTX 1050 des späteren Zielhosts geeignet.
Der Gemini-Netzwerkprovider ist isoliert implementiert, aber noch nicht in den
Chatkern geroutet. Das automatische Ollama-Fallback fehlt noch. Es wurde kein
echter API-Key angefordert, angezeigt oder konfiguriert und keine Cloudanfrage
ausgeführt.
Der Hybridprovider ist implementiert, aber noch nicht in der echten CLI verdrahtet.
Lokale TOML-Aktivierung, Statusbefehle und Startskript fehlen. Es wurde kein echter
API-Key angefordert, angezeigt oder konfiguriert und keine Cloudanfrage ausgeführt.