feat: add isolated Gemini provider

This commit is contained in:
2026-07-30 17:57:19 +02:00
parent 286d96da33
commit f3e11831fb
8 changed files with 890 additions and 19 deletions
+10 -5
View File
@@ -78,6 +78,10 @@ Rootserver:
Billing-Freiheit ohne Pascals lokale Bestätigung, höchstens ein Retry.
- Provider-Nutzung wird separat in SQLite ausschließlich als technische Metadaten
protokolliert; Prompts, Antworten und Secrets werden dort nicht gespeichert.
- 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.
## Aktuelle Architektur
@@ -125,6 +129,8 @@ Rootserver:
- Betriebssystemgebundenen Secret-Provider und isolierte Fake-Backend-Tests ergänzt.
- Datenschutzrouter, minimale Cloud-Kontextauswahl, strikte Nullkosten-Defaults,
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.
## Aktuelle Tests
@@ -139,8 +145,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: 30 bestanden, davon 8 für Datenschutzrouting und Kontextminimierung,
3 für Nullkosten-/Limitkonfiguration sowie 1 für das metadatenbasierte Audit
- Unit-Tests: 37 bestanden; zusätzlich 7 für den isolierten Gemini-Provider
- Ruff Lint: bestanden
- Ruff Formatprüfung: bestanden
@@ -226,9 +231,9 @@ Abnahmestatus:
Auf dem bestehenden Feature-Branch als nächstes einzelnes Arbeitspaket:
1. offiziellen `google-genai`-Client anbinden
2. Gemini-Erfolg sowie fehlenden/ungültigen Schlüssel, 429, Netzwerkfehler und
höchstens einen Retry vollständig mit Test-Doubles prüfen
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
3. noch keine echte Cloudanfrage ausführen und noch nicht nach `main` mergen
Keinen API-Key in Chat, Git, Obsidian, Logs oder Dokumentation übernehmen.
+6 -5
View File
@@ -63,6 +63,7 @@ Obsidian, Logs oder Dokumentation einfügen.
Für Python wird das GA-SDK `google-genai` verwendet. Javis nutzt ausschließlich
zustandslose Textgenerierung über `generate_content`; keine Chatspeicherung,
Dateien, Tools, Grounding, Caches, Agenten oder Medienfunktionen.
Der reproduzierbare Lockfile löst aktuell `google-genai` 2.16.0 auf.
Quellen:
@@ -73,11 +74,11 @@ Quellen:
## Fehler und Retries
`429 RESOURCE_EXHAUSTED`, Timeouts und geeignete Netzwerk-/Serverfehler dürfen
höchstens einmal kontrolliert wiederholt werden. Authentifizierungs-, Datenschutz-
und Quota-Fehler werden nicht wiederholt. Anschließend wird sichtbar lokal
weitergearbeitet. Das SDK besitzt eigene Retry-Mechanismen; Javis konfiguriert
diese ausdrücklich, damit die lokale Obergrenze nicht unbemerkt überschritten wird.
Timeouts und geeignete Server-/Netzwerkfehler dürfen höchstens einmal kontrolliert
wiederholt werden. `429 RESOURCE_EXHAUSTED`, Authentifizierungs-, Datenschutz- und
Quota-Fehler werden nicht wiederholt. Anschließend wird im späteren Router sichtbar
lokal weitergearbeitet. Das SDK besitzt eigene Retry-Mechanismen; Javis konfiguriert
diese ausdrücklich auf höchstens zwei Gesamtversuche und schließt 429 aus.
Quelle:
+9 -4
View File
@@ -45,7 +45,11 @@ Stand: lokaler Textchat auf `main`, 30.07.2026.
- konservative Nullkosten-Defaults und harte lokale Tages-, Größen-, Timeout-
und Retry-Grenzen
- separates SQLite-Provider-Audit speichert nur Metadaten, keine Inhalte
- 30 Unit-Tests aktuell erfolgreich; Ruff-Format und Lint sauber
- isolierter Gemini-Provider mit offiziellem `google-genai` 2.16.0, API `v1`,
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
## Nicht implementiert
@@ -70,6 +74,7 @@ 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 und das automatische Ollama-Fallback sind noch nicht
implementiert. Es wurde kein echter API-Key angefordert, angezeigt oder
konfiguriert und noch keine Cloudanfrage ausgeführt.
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.