fix: refine privacy routing and provider reporting

This commit is contained in:
2026-07-30 18:34:01 +02:00
parent a6c46f34e4
commit 7a14fe87f9
10 changed files with 139 additions and 72 deletions
+19 -11
View File
@@ -99,6 +99,11 @@ Rootserver:
- `scripts/start-javis.ps1` verifiziert das Repository, setzt nur
Prozessvariablen, prüft Ollama auf Loopback, startet es bei Bedarf versteckt
und wartet begrenzt. Pfade sind per Parameter oder `JAVIS_*` überschreibbar.
- Allgemeine unpersönliche Technikfragen zu RAM/SSD, SQLite, HTTP, Git und
ähnlichen Begriffen werden gezielter `allowed`; `never` und `ask` behalten
Vorrang bei Secrets, interner Infrastruktur und persönlichem Kontext.
- `/privacy` trennt Inhaltsklassifikation, tatsächlichen Provider, Unterdrückung
durch Modus `local` und technischen Provider-Fallback.
## Aktuelle Architektur
@@ -171,12 +176,11 @@ 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: 62 bestanden; Timeout und fehlendes Modell fallen nachweislich lokal zurück
- Unit-Tests: 66 bestanden; neue Technikklassifikation und Privacy-Ausgabe abgedeckt
- PowerShell-Syntax des Startskripts: erfolgreich geparst
- Ruff Lint: bestanden
- Ruff Formatprüfung: bestanden
- lokaler nachrichtenfreier CLI-Smoke: bestanden; Nullkostenmodus aktiv,
Gemini nicht konfiguriert, Schlüssel nicht vorhanden, 0 Cloudanfragen
- lokaler CLI-Smoke ohne Secretzugriff: bestanden
- Obsidian-Vault unverändert: 1 Markdown-, 11 Gesamtdateien, letzter
Schreibzeitpunkt weiterhin 30.07.2026 15:42:31
- Rootserver und Ubuntu-Laptop wurden nicht kontaktiert
@@ -203,10 +207,14 @@ Abnahmestatus:
- manuell durch Pascal getestet: am 30.07.2026 erfolgreich; CLI-Start, echte
deutsche Antworten, Sitzungskontext, `/sessions`, `/exit`, Neustart,
`/load <UUID>`, vollständiger Verlauf und Fortsetzung
- Gemini/Datenschutz/Fallback automatisiert durch Codex getestet: ja, nur mit
Test-Doubles und lokalem nachrichtenfreiem CLI-Smoke
- Gemini/Datenschutz/Fallback manuell durch Pascal getestet: noch nicht
- von Pascal für produktive Verwendung freigegeben: noch nicht ausdrücklich erklärt
- Gemini/Datenschutz/Fallback automatisiert durch Codex getestet: ja
- Gemini/Datenschutz/Fallback manuell durch Pascal getestet: am 30.07.2026;
verdeckte Key-Speicherung ohne Wertausgabe, vollständiger `/status`, echter
Gemini-Erfolg, Cloudzähler, `ask`-Ablehnung, `never`, `/provider local` und
Startskript erfolgreich
- für Merge freigegeben: ja, nach den dokumentierten kleinen Korrekturen
- für produktive Nutzung freigegeben: nicht separat erklärt; keine Freigabe für
spätere Tools, Obsidian oder autonome Aktionen
## Git-Stand
@@ -245,7 +253,7 @@ Abnahmestatus:
- aktuell: portable Ollama-Laufzeit und `qwen3:8b` außerhalb von Git verifiziert
- aktuell: lokaler CLI-Chat und persistente SQLite-Sitzungen vollständig abgenommen
- aktuell: Gemini-Free-Hybridrouting, Datenschutz und Nullkostenmodus
automatisiert vollständig geprüft; manueller Live-Test steht aus
automatisiert und durch Pascal manuell vollständig abgenommen
## Offene Entscheidungen und Fehler
@@ -275,9 +283,9 @@ Abnahmestatus:
## Nächster sinnvoller Auftrag
Pascal führt anhand `docs/NEXT_SESSION.md` den echten Gemini-, Ask- und
Never-Test mit ausschließlich künstlichen beziehungsweise unpersönlichen Daten
durch. Bis zu seiner Bestätigung nicht nach `main` mergen.
Nach dem Merge ein separates, kleines Paket für Chatkomfort und Robustheit
planen, beispielsweise Sitzungstitel/Suche oder Streaming. Noch keine
Obsidian-Integration, Tools, Sprache oder Serversteuerung beginnen.
Keinen API-Key in Chat, Git, Obsidian, Logs oder Dokumentation übernehmen.
+15 -34
View File
@@ -1,45 +1,26 @@
# Nächste Sitzung
## Ziel
## Ausgangsstand
Pascal nimmt den Gemini-Free-Provider und die lokalen Fallbacks manuell ab.
Bis dahin bleibt `feat/gemini-privacy-router` ungemergt.
Der Core-Chat und der Gemini-/Datenschutz-Meilenstein sind automatisiert durch
Codex und am 30.07.2026 manuell durch Pascal abgenommen. Der Featurestand ist zum
Merge freigegeben.
## Vorbereitung durch Pascal
Bestätigt sind echter Gemini-Erfolg, verdeckte Key-Speicherung, Nullkostenmodus,
bereinigter Status, Cloudzähler, `ask`- und `never`-Routing, erzwungener lokaler
Modus sowie das Startskript.
1. In Google AI Studio einen neuen, nur für Javis verwendeten Gemini-Auth-Key
erstellen.
2. Für das zugehörige Google-Projekt kein Billing verbinden beziehungsweise den
externen Billingstatus selbst prüfen.
3. Den Key niemals in Chat, Codex, Git, Obsidian oder einen sichtbaren
Kommandozeilenparameter kopieren.
4. Im Repository ausführen:
## Nächstes sinnvolles Paket
```powershell
& 'D:\Javis-Tools\uv\uv.exe' run javis configure gemini
& 'D:\Javis-Tools\uv\uv.exe' run javis secrets set gemini
powershell -ExecutionPolicy Bypass -File .\scripts\start-javis.ps1
```
Nur ein kleines Chatkomfort-/Robustheitsthema auswählen, zum Beispiel:
Die erste Einrichtung verlangt zwei lokale Bestätigungen. Der zweite Befehl liest
den Key verdeckt ein und speichert ihn im Windows Credential Manager.
- automatische, lokal erzeugte Sitzungstitel und Sitzungssuche oder
- Streaming lokaler und Cloudantworten mit sauberem Abbruchverhalten
## Manueller Test
1. `/status`: Key und Konfiguration `ja`, Nullkostenmodus `aktiv`.
2. Unpersönlich: `Erkläre in zwei Sätzen, was eine SQLite-Transaktion ist.`
3. `/privacy`: `allowed`, Provider `gemini`, kein Fallback.
4. Ask ohne private Details: `Ich habe eine private Alltagssituation. Nenne nur
allgemeine Möglichkeiten.` Bei der Freigabe Enter drücken; Antwort muss lokal
über Ollama kommen.
5. Never mit Kunstbeispiel: `Nur lokal: Der Beispiel-API-Key ist absichtlich
erfunden.` Es darf keine Cloudfreigabe angeboten werden; Antwort bleibt lokal.
6. `/status`: bereinigte Zähler prüfen, danach `/exit`.
Erst wenn Pascal diese Punkte bestätigt, darf über den Merge nach `main`
entschieden werden. Google-Quoten sind projektabhängig und in AI Studio zu prüfen.
Vorher wie immer Branch, Arbeitsbaum, aktuellen Handoff und Tests prüfen.
## Weiterhin nicht beginnen
Kein Obsidian-Zugriff, SSH-/Serverzugriff, Sprache, Mobile Client, Tools oder
Living Mind. Keine echten persönlichen Daten für Cloudtests verwenden.
Noch keine Obsidian-Integration, Tools, SSH-/Serversteuerung, Sprache, Mobile
Client oder Living Mind. Der vorhandene Gemini-Key bleibt im Betriebssystem-
Keyring und darf nicht erneut in Chat, Logs oder Dokumentation erscheinen.
+13 -8
View File
@@ -33,8 +33,10 @@ Stand: Gemini-Free-Feature automatisiert geprüft, 30.07.2026.
- Core-Chat automatisiert durch Codex getestet: ja
- Core-Chat manuell durch Pascal getestet: ja, am 30.07.2026
- Gemini/Datenschutz/Fallback automatisiert durch Codex getestet: ja
- Gemini/Datenschutz/Fallback manuell durch Pascal getestet: noch nicht
- von Pascal für produktive Verwendung freigegeben: noch nicht ausdrücklich erklärt
- Gemini/Datenschutz/Fallback manuell durch Pascal getestet: ja, am 30.07.2026
- für Merge freigegeben: ja, nach den zwei kleinen Korrekturen
- für produktive Nutzung freigegeben: nicht separat erklärt; keine spätere Tool-,
Obsidian- oder Autonomiefunktion
## Aktuelles Featurepaket
@@ -60,9 +62,12 @@ Stand: Gemini-Free-Feature automatisiert geprüft, 30.07.2026.
- `javis configure gemini` mit doppelter ausdrücklicher Bestätigung
- echter Chat auf Hybridprovider verdrahtet; Key wird verzögert geladen
- `/provider`, `/privacy` und `/status` geben keine Inhalte oder Keywerte aus
- allgemeine unpersönliche Technikbegriffe werden gezielter `allowed`, während
persönliche, interne oder geheime technische Inhalte `ask`/`never` bleiben
- `/privacy` trennt lokalen Modus von einem technischen Provider-Fallback
- sicheres `scripts/start-javis.ps1` mit relativer Repositoryprüfung,
Loopback-Ollama und überschreibbaren externen Pfaden
- 62 Unit-Tests aktuell erfolgreich; PowerShell-Syntax, Lockfile, Sync,
- 66 Unit-Tests aktuell erfolgreich; PowerShell-Syntax, Lockfile, Sync,
Strukturprüfung, Secret-Scan, Gitignore, Ruff-Format und Lint sauber
## Nicht implementiert
@@ -86,9 +91,9 @@ Living-Mind-Frontend.
## Bekannte Einschränkung
Ollama wird bewusst manuell in einem eigenen Terminal gestartet. Antworten werden
noch nicht gestreamt; Sitzungen haben noch keine Titel, Suche oder Löschfunktion.
Das Startskript startet Ollama bei Bedarf lokal. 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 echte Gemini-/Fallback-Test durch Pascal und danach die Mergeentscheidung
fehlen. Es wurde kein echter API-Key angefordert, angezeigt oder konfiguriert und
keine Cloudanfrage ausgeführt.
Der Gemini-Key liegt ausschließlich im Betriebssystem-Keyring; sein Wert wurde
von Codex weder gelesen noch ausgegeben. Pascal hat den echten Cloud- und
Fallbackablauf erfolgreich geprüft.