From 0a550e6d9f22cfdf9f91b2fc93cceb0c4f0275cd Mon Sep 17 00:00:00 2001 From: Dystroyer8 Date: Thu, 30 Jul 2026 17:07:04 +0200 Subject: [PATCH] docs: record merge and hybrid provider plan --- docs/CHATGPT_HANDOFF.md | 32 +++++++++++++++++------ docs/DECISIONS.md | 1 + docs/NEXT_SESSION.md | 21 +++++++++------ docs/PROJECT_STATUS.md | 8 ++++-- docs/adr/0007-free-hybrid-providers.md | 36 ++++++++++++++++++++++++++ docs/adr/README.md | 1 + 6 files changed, 81 insertions(+), 18 deletions(-) create mode 100644 docs/adr/0007-free-hybrid-providers.md diff --git a/docs/CHATGPT_HANDOFF.md b/docs/CHATGPT_HANDOFF.md index 5b080d2..05eef18 100644 --- a/docs/CHATGPT_HANDOFF.md +++ b/docs/CHATGPT_HANDOFF.md @@ -45,7 +45,7 @@ Rootserver: ## Aktueller technischer Stand -- Der erste lokale Textchat ist auf `feat/core-chat` implementiert und abgenommen. +- Der erste lokale Textchat ist auf `main` implementiert, abgenommen und lokal gemergt. - `uv run javis chat` liefert echte lokale Antworten und speichert Sitzungen in SQLite. - Konfigurationsbeispiel, Sicherheitsdokumente, ADRs und Strukturtest sind vorhanden. - Living-Mind-Verzeichnis ist ausschließlich ein inaktiver Vertrag ohne Frontend oder Fantasiedaten. @@ -72,7 +72,10 @@ Rootserver: - Ollama-Provider akzeptiert nur lokale HTTP-Loopback-Adressen - SQLite-Sitzungsspeicher mit atomaren Benutzer-/Assistentenpaaren - Laufzeitdaten außerhalb von Git über `JAVIS_DATA_DIR` oder sicheren Plattformstandard -- lokale Modelle zuerst; keine kostenpflichtige API und kein stiller Cloud-Fallback +- aktuell ausschließlich lokales Modell; als separates Folgepaket ist Gemini als + bevorzugter kostenloser Provider für ausdrücklich cloudgeeignete Inhalte geplant +- strikter Nullkostenmodus ohne Billing-Aktivierung oder kostenpflichtigen Fallback; + lokales Modell bleibt Offline-, Datenschutz-, Ausfall- und Quota-Fallback - Secret-Werte außerhalb von Code, Git, Prompts und Logs - Modell erhält niemals Passwörter, Tokens oder private Schlüssel - keine freie Shell; spätere Tools benötigen feste Schemas, Allowlists, Timeouts und Freigaben @@ -137,7 +140,7 @@ CLI-/Persistenz-Smoke: ## Git-Stand -- aktueller Branch: `feat/core-chat` +- aktueller Branch: `main` - stabiler Branch: `main` - Grundgerüstcommit: `6d04171` - letzter Commit vor der Handoff-Verdichtung: `0e82748` @@ -146,6 +149,8 @@ CLI-/Persistenz-Smoke: - Laufzeit-/Modelldokumentation: `10d7cd7` - Chatkern und CLI: `ec9b2f9` - Unit-Tests: `b153daa` +- Feature-Dokumentation: `5d567e5` +- lokaler Merge nach `main`: `f3d6dfb` - `origin` verwendet HTTPS - kein Force-Push und keine umgeschriebene Historie @@ -166,6 +171,8 @@ CLI-/Persistenz-Smoke: - Antworten werden noch nicht gestreamt; Sitzungen besitzen noch keine Titel oder Suche - genauer späterer Obsidian-Schreibbereich ist nicht freigegeben - endgültiger Secret-Provider ist offen; lokale Klartext-XML wäre nur restriktiv geschützt und Git-ignoriert zulässig +- aktuelle kostenlose Gemini-Modelle, Modellkennungen und Kontingente müssen vor + der Implementierung anhand offizieller Google-Dokumentation neu geprüft werden - Gaming-PC zeigt derzeit nur 8 statt 16 logische CPU-Prozessoren; Ursache ungeklärt - ASUS-Laptop ist nicht automatisch für dasselbe Modell wie die RTX 3060 geeignet @@ -174,6 +181,9 @@ CLI-/Persistenz-Smoke: - lokale Modellqualität und Geschwindigkeit unterscheiden sich stark zwischen RTX 3060 und GTX 1050 - ATM10 und Javis dürfen den ASUS-Laptop nicht gleichzeitig überlasten - Secrets können über Logs, Prompts, Screenshots oder Git abfließen +- Cloudrouting könnte sensible Daten preisgeben; vor jedem Cloudaufruf ist deshalb + lokal `allowed`, `ask` oder `never` zu entscheiden und Kontext zu minimieren +- kostenlose Gemini-Kontingente und Modellnamen können sich ändern - Prompt Injection aus später eingelesenen Notizen oder Webseiten - unkontrollierter Obsidian-Schreibzugriff könnte Wissen beschädigen - Self-hosted LiveSync ist kein Ersatz für ein getestetes Backup @@ -181,10 +191,16 @@ CLI-/Persistenz-Smoke: ## Nächster sinnvoller Auftrag -Nach Merge von `feat/core-chat` den Chat gemeinsam im Alltag benutzen und zuerst -konkrete Bedienungs- oder Stabilitätsprobleme sammeln. Mögliche kleine Folgepakete -sind ein klarer Start-/Stoppablauf, Streaming, Sitzungstitel oder eine explizite -lokale TOML-Konfiguration. Das spätere Laptop-Modell wird erst auf dessen Hardware -gemessen und separat entschieden. +Als separates nächstes Featurepaket auf neuem Branch: + +1. offizielle aktuelle Gemini-Free-Tier-Modelle und Kontingente neu prüfen +2. Secret-Provider ohne Schlüsselzugriff des Modells implementieren +3. Datenschutzrouting `allowed`/`ask`/`never` vor jedem Cloudaufruf erzwingen +4. Gemini als kostenlosen bevorzugten Provider und Ollama als lokalen + Datenschutz-/Offline-/429-Fallback implementieren +5. `free_only = true`, keine Billing-Aktivierung und alle geforderten Erfolgs-, + Key-, 429-, Netzwerk-, Fallback- und Datenschutztests nachweisen + +Keinen API-Key in Chat, Git, Obsidian, Logs oder Dokumentation übernehmen. Nicht Teil dieses Meilensteins: Obsidian-Integration, Serverzugriff, Sprache, Mobile Client oder Living-Mind-Code. diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 565de21..d98f1e9 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -8,6 +8,7 @@ | ADR-0004 | Tokenbewusst arbeiten, ohne Qualität oder Sicherheit zu senken | angenommen | | ADR-0005 | Laufenden Handoff kompakt halten und Vollstände nur zu Meilensteinen archivieren | angenommen | | ADR-0006 | Ollama und qwen3:8b für den ersten Windows-Chat verwenden | angenommen | +| ADR-0007 | Gemini kostenlos bevorzugen, sensible Inhalte lokal halten und niemals Billing aktivieren | angenommen | Offen bleiben insbesondere das endgültige Runtime-Secret-System, der genaue Obsidian-Schreibbereich, das spätere Laptop-Modell und der Produktname. diff --git a/docs/NEXT_SESSION.md b/docs/NEXT_SESSION.md index eec91e2..2161268 100644 --- a/docs/NEXT_SESSION.md +++ b/docs/NEXT_SESSION.md @@ -2,8 +2,8 @@ ## Ziel -Nach Abschluss und Merge von `feat/core-chat`: den ersten Textchat gemeinsam -benutzen und nur konkrete Bedienungs- oder Stabilitätsprobleme priorisieren. +Nächstes separates Featurepaket: kostenlose Gemini-Anbindung mit strikt lokalem +Datenschutzrouting und Ollama als Ausfall-, Quota-, Offline- und Sensitivitätsfallback. ## Vor Änderungen erneut prüfen @@ -14,12 +14,17 @@ benutzen und nur konkrete Bedienungs- oder Stabilitätsprobleme priorisieren. ## Vorgeschlagener Umfang -- Start-/Stoppablauf von Ollama auf Alltagstauglichkeit prüfen -- reale mehrteilige Gespräche und verständliche Fehlermeldungen beobachten -- bei Bedarf Streaming, Sitzungstitel oder eine explizite lokale TOML-Konfiguration - als eigenes kleines Feature planen -- erst nach Messung auf der Zielhardware ein kleineres Laptop-Modell auswählen +- aktuelle kostenlose Gemini-Modelle, Kennungen und Kontingente ausschließlich in + offizieller Google-Dokumentation prüfen; Kandidaten nicht ungeprüft übernehmen +- Providerrouter mit `free_only = true` und ohne Billing-Konfiguration entwerfen +- lokale Datenschutzentscheidung `allowed`, `ask` oder `never` vor jedem Cloudaufruf +- Gemini-Key nur über lokalen Secret-Provider; Wert niemals an Modell, Git, + Obsidian, Logs, Dokumentation oder Chat geben +- Gemini-Erfolg, fehlenden/ungültigen Key, 429, Netzwerkausfall, lokalen Fallback, + `never`, `ask` und ausbleibende Billing-Aktivierung testen ## Nicht beginnen -Keine zweite Modelllaufzeit, kein Obsidian-Schreiben, kein SSH-/Serverzugriff, keine Sprache und kein Living-Mind-Frontend. +Keinen echten Schlüssel anfordern oder dokumentieren, kein Billingkonto verbinden, +keine kostenpflichtigen Fallbacks, keinen vollständigen Vault übertragen und +weiterhin kein Obsidian-Schreiben, SSH-/Serverzugriff, Sprache oder Living Mind. diff --git a/docs/PROJECT_STATUS.md b/docs/PROJECT_STATUS.md index e79c8d7..ee67e59 100644 --- a/docs/PROJECT_STATUS.md +++ b/docs/PROJECT_STATUS.md @@ -1,6 +1,6 @@ # Projektstatus -Stand: lokaler Textchat auf `feat/core-chat`, 30.07.2026. +Stand: lokaler Textchat auf `main`, 30.07.2026. ## Erreicht @@ -32,16 +32,20 @@ Living-Mind-Frontend und automatische Ollama-Prozessverwaltung. ## Git -- Branch: `feat/core-chat` +- Branch: `main` - Grundgerüstcommit: `6d04171` - Basis des Feature-Branches: `e6eb995` - Toolchain: `fa90a5c` - Laufzeit/Modell: `10d7cd7` - Chatkern: `ec9b2f9` - Tests: `b153daa` +- Dokumentation: `5d567e5` +- Merge nach `main`: `f3d6dfb` ## 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. `qwen3:8b` ist nicht automatisch für die GTX 1050 des späteren Zielhosts geeignet. +Gemini ist als separates kostenloses Folgepaket mit lokalem Datenschutzrouting +geplant, aber noch nicht implementiert oder mit einem API-Key konfiguriert. diff --git a/docs/adr/0007-free-hybrid-providers.md b/docs/adr/0007-free-hybrid-providers.md new file mode 100644 index 0000000..37e3c39 --- /dev/null +++ b/docs/adr/0007-free-hybrid-providers.md @@ -0,0 +1,36 @@ +# ADR-0007: Kostenlose hybride Providerstrategie + +Status: angenommen am 30.07.2026, Implementierung ausstehend. + +## Entscheidung + +Javis bleibt in Logik, Gedächtnis, Berechtigungen, Audit und Kontextauswahl lokal. +Für ausdrücklich cloudgeeignete Inhalte soll Gemini später der bevorzugte +kostenlose Provider werden. Ollama bleibt lokaler Datenschutz-, Offline-, Ausfall- +und Quota-Fallback. `free_only = true` verbietet Billing-Aktivierung, +kostenpflichtige Modellwahl und kostenpflichtige Fallbacks. + +Vor jedem Cloudaufruf entscheidet eine lokale Richtlinie: + +- `allowed`: minimal nötiger Ausschnitt darf übertragen werden +- `ask`: Pascal muss vorher zustimmen +- `never`: ausschließlich lokal verarbeiten + +Persönliche und familiäre Informationen sind mindestens `ask`. Secrets sowie +Finanz-, Gesundheits- und besonders sensible Daten sind `never`. Der vollständige +Obsidian-Vault darf niemals an Gemini übertragen werden. + +## Voraussetzungen + +Vor der Implementierung werden aktuelle kostenlose Modelle, exakte Modellnamen und +Kontingente anhand offizieller Google-Dokumentation geprüft. Ein Gemini-Schlüssel +wird nur über einen lokalen Secret-Provider geladen, auf die Gemini API begrenzt +und niemals an Modellkontext, Git, Obsidian, Logs, Dokumentation oder Chat gegeben. +Javis verbindet oder aktiviert kein Google-Billingkonto. + +## Folgen + +HTTP 429, Quota- und Netzwerkausfälle müssen verständlich behandelt und sicher zum +lokalen Provider geroutet werden. Gemini ist bevorzugt, aber nie unersetzliche +Grundlage. Die Umsetzung erfolgt als eigenes getestetes Featurepaket; der bereits +abgenommene lokale Chat bleibt bis dahin unverändert. diff --git a/docs/adr/README.md b/docs/adr/README.md index 11c5389..41b055d 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -6,3 +6,4 @@ - [ADR-0004: Tokenbewusster Arbeitsablauf](0004-token-efficient-workflow.md) - [ADR-0005: Kompakter Handoff](0005-compact-handoff.md) - [ADR-0006: Erste lokale Modelllaufzeit](0006-first-local-runtime.md) +- [ADR-0007: Kostenlose hybride Providerstrategie](0007-free-hybrid-providers.md)