docs: record merge and hybrid provider plan
This commit is contained in:
+24
-8
@@ -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.
|
||||||
|
|||||||
@@ -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
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user