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.