docs: record merge and hybrid provider plan

This commit is contained in:
2026-07-30 17:07:04 +02:00
parent f3d6dfb13b
commit 0a550e6d9f
6 changed files with 81 additions and 18 deletions
+24 -8
View File
@@ -45,7 +45,7 @@ Rootserver:
## Aktueller technischer Stand ## 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. - `uv run javis chat` liefert echte lokale Antworten und speichert Sitzungen in SQLite.
- Konfigurationsbeispiel, Sicherheitsdokumente, ADRs und Strukturtest sind vorhanden. - Konfigurationsbeispiel, Sicherheitsdokumente, ADRs und Strukturtest sind vorhanden.
- Living-Mind-Verzeichnis ist ausschließlich ein inaktiver Vertrag ohne Frontend oder Fantasiedaten. - 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 - Ollama-Provider akzeptiert nur lokale HTTP-Loopback-Adressen
- SQLite-Sitzungsspeicher mit atomaren Benutzer-/Assistentenpaaren - SQLite-Sitzungsspeicher mit atomaren Benutzer-/Assistentenpaaren
- Laufzeitdaten außerhalb von Git über `JAVIS_DATA_DIR` oder sicheren Plattformstandard - 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 - Secret-Werte außerhalb von Code, Git, Prompts und Logs
- Modell erhält niemals Passwörter, Tokens oder private Schlüssel - 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 - keine freie Shell; spätere Tools benötigen feste Schemas, Allowlists, Timeouts und Freigaben
@@ -137,7 +140,7 @@ CLI-/Persistenz-Smoke:
## Git-Stand ## Git-Stand
- aktueller Branch: `feat/core-chat` - aktueller Branch: `main`
- stabiler Branch: `main` - stabiler Branch: `main`
- Grundgerüstcommit: `6d04171` - Grundgerüstcommit: `6d04171`
- letzter Commit vor der Handoff-Verdichtung: `0e82748` - letzter Commit vor der Handoff-Verdichtung: `0e82748`
@@ -146,6 +149,8 @@ CLI-/Persistenz-Smoke:
- Laufzeit-/Modelldokumentation: `10d7cd7` - Laufzeit-/Modelldokumentation: `10d7cd7`
- Chatkern und CLI: `ec9b2f9` - Chatkern und CLI: `ec9b2f9`
- Unit-Tests: `b153daa` - Unit-Tests: `b153daa`
- Feature-Dokumentation: `5d567e5`
- lokaler Merge nach `main`: `f3d6dfb`
- `origin` verwendet HTTPS - `origin` verwendet HTTPS
- kein Force-Push und keine umgeschriebene Historie - 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 - Antworten werden noch nicht gestreamt; Sitzungen besitzen noch keine Titel oder Suche
- genauer späterer Obsidian-Schreibbereich ist nicht freigegeben - 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 - 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 - 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 - 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 - 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 - ATM10 und Javis dürfen den ASUS-Laptop nicht gleichzeitig überlasten
- Secrets können über Logs, Prompts, Screenshots oder Git abfließen - 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 - Prompt Injection aus später eingelesenen Notizen oder Webseiten
- unkontrollierter Obsidian-Schreibzugriff könnte Wissen beschädigen - unkontrollierter Obsidian-Schreibzugriff könnte Wissen beschädigen
- Self-hosted LiveSync ist kein Ersatz für ein getestetes Backup - Self-hosted LiveSync ist kein Ersatz für ein getestetes Backup
@@ -181,10 +191,16 @@ CLI-/Persistenz-Smoke:
## Nächster sinnvoller Auftrag ## Nächster sinnvoller Auftrag
Nach Merge von `feat/core-chat` den Chat gemeinsam im Alltag benutzen und zuerst Als separates nächstes Featurepaket auf neuem Branch:
konkrete Bedienungs- oder Stabilitätsprobleme sammeln. Mögliche kleine Folgepakete
sind ein klarer Start-/Stoppablauf, Streaming, Sitzungstitel oder eine explizite 1. offizielle aktuelle Gemini-Free-Tier-Modelle und Kontingente neu prüfen
lokale TOML-Konfiguration. Das spätere Laptop-Modell wird erst auf dessen Hardware 2. Secret-Provider ohne Schlüsselzugriff des Modells implementieren
gemessen und separat entschieden. 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. Nicht Teil dieses Meilensteins: Obsidian-Integration, Serverzugriff, Sprache, Mobile Client oder Living-Mind-Code.
+1
View File
@@ -8,6 +8,7 @@
| ADR-0004 | Tokenbewusst arbeiten, ohne Qualität oder Sicherheit zu senken | angenommen | | 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-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-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 Offen bleiben insbesondere das endgültige Runtime-Secret-System, der genaue
Obsidian-Schreibbereich, das spätere Laptop-Modell und der Produktname. Obsidian-Schreibbereich, das spätere Laptop-Modell und der Produktname.
+13 -8
View File
@@ -2,8 +2,8 @@
## Ziel ## Ziel
Nach Abschluss und Merge von `feat/core-chat`: den ersten Textchat gemeinsam Nächstes separates Featurepaket: kostenlose Gemini-Anbindung mit strikt lokalem
benutzen und nur konkrete Bedienungs- oder Stabilitätsprobleme priorisieren. Datenschutzrouting und Ollama als Ausfall-, Quota-, Offline- und Sensitivitätsfallback.
## Vor Änderungen erneut prüfen ## Vor Änderungen erneut prüfen
@@ -14,12 +14,17 @@ benutzen und nur konkrete Bedienungs- oder Stabilitätsprobleme priorisieren.
## Vorgeschlagener Umfang ## Vorgeschlagener Umfang
- Start-/Stoppablauf von Ollama auf Alltagstauglichkeit prüfen - aktuelle kostenlose Gemini-Modelle, Kennungen und Kontingente ausschließlich in
- reale mehrteilige Gespräche und verständliche Fehlermeldungen beobachten offizieller Google-Dokumentation prüfen; Kandidaten nicht ungeprüft übernehmen
- bei Bedarf Streaming, Sitzungstitel oder eine explizite lokale TOML-Konfiguration - Providerrouter mit `free_only = true` und ohne Billing-Konfiguration entwerfen
als eigenes kleines Feature planen - lokale Datenschutzentscheidung `allowed`, `ask` oder `never` vor jedem Cloudaufruf
- erst nach Messung auf der Zielhardware ein kleineres Laptop-Modell auswählen - 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 ## 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.
+6 -2
View File
@@ -1,6 +1,6 @@
# Projektstatus # Projektstatus
Stand: lokaler Textchat auf `feat/core-chat`, 30.07.2026. Stand: lokaler Textchat auf `main`, 30.07.2026.
## Erreicht ## Erreicht
@@ -32,16 +32,20 @@ Living-Mind-Frontend und automatische Ollama-Prozessverwaltung.
## Git ## Git
- Branch: `feat/core-chat` - Branch: `main`
- Grundgerüstcommit: `6d04171` - Grundgerüstcommit: `6d04171`
- Basis des Feature-Branches: `e6eb995` - Basis des Feature-Branches: `e6eb995`
- Toolchain: `fa90a5c` - Toolchain: `fa90a5c`
- Laufzeit/Modell: `10d7cd7` - Laufzeit/Modell: `10d7cd7`
- Chatkern: `ec9b2f9` - Chatkern: `ec9b2f9`
- Tests: `b153daa` - Tests: `b153daa`
- Dokumentation: `5d567e5`
- Merge nach `main`: `f3d6dfb`
## Bekannte Einschränkung ## Bekannte Einschränkung
Ollama wird bewusst manuell in einem eigenen Terminal gestartet. Antworten werden Ollama wird bewusst manuell in einem eigenen Terminal gestartet. Antworten werden
noch nicht gestreamt; Sitzungen haben noch keine Titel, Suche oder Löschfunktion. 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. `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.
+36
View File
@@ -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.
+1
View File
@@ -6,3 +6,4 @@
- [ADR-0004: Tokenbewusster Arbeitsablauf](0004-token-efficient-workflow.md) - [ADR-0004: Tokenbewusster Arbeitsablauf](0004-token-efficient-workflow.md)
- [ADR-0005: Kompakter Handoff](0005-compact-handoff.md) - [ADR-0005: Kompakter Handoff](0005-compact-handoff.md)
- [ADR-0006: Erste lokale Modelllaufzeit](0006-first-local-runtime.md) - [ADR-0006: Erste lokale Modelllaufzeit](0006-first-local-runtime.md)
- [ADR-0007: Kostenlose hybride Providerstrategie](0007-free-hybrid-providers.md)