34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
# Architektur
|
|
|
|
## Ziel
|
|
|
|
Javis beginnt als modularer Monolith. Module besitzen klare Zuständigkeiten und kommunizieren über kleine, typisierte Schnittstellen. Erst reale Betriebsgründe rechtfertigen später separate Dienste.
|
|
|
|
## Ebenen
|
|
|
|
1. Interface: implementierte CLI; später möglicherweise Sprache, Mobilzugriff und Living Mind.
|
|
2. Core: implementierter Gesprächsablauf und Sitzungslogik.
|
|
3. Providers: kleine Schnittstelle und implementierter lokaler Ollama-Adapter.
|
|
4. Memory: implementierte SQLite-Sitzungen; ein semantischer Index ist nur geplant.
|
|
5. Obsidian: zunächst lesender Adapter, später eng begrenzte Entwürfe.
|
|
6. Tools und Status: feste Schemas, Allowlists, Timeouts und bereinigte Ausgaben.
|
|
7. Security: Freigaben, Secret-Provider und Berechtigungsprüfung.
|
|
8. Audit: nachvollziehbare Aktionen ohne geheime Inhalte.
|
|
|
|
## Plattformgrenzen
|
|
|
|
- Pfade werden zentral in `Settings` und mit `pathlib` aufgelöst.
|
|
- Betriebssystemspezifische Funktionen liegen hinter Adaptern.
|
|
- Produktname, Datenpfade und Provider werden zentral konfiguriert.
|
|
- Laufzeitdaten liegen außerhalb von Git.
|
|
|
|
## Implementierter Chatfluss
|
|
|
|
`interface.cli` nimmt Text an, `core.chat_service` verbindet Sitzungsverlauf und
|
|
Provider, `providers.ollama` spricht nur die lokale Ollama-HTTP-API an und
|
|
`memory.sqlite_store` speichert erfolgreiche Benutzer-/Assistentenpaare atomar.
|
|
Scheitert das Modell, wird keine erfundene Antwort gespeichert.
|
|
|
|
Es existiert kein Cloudadapter, Toolaufruf, Obsidian-Zugriff oder eigener
|
|
öffentlicher Netzwerkdienst. Der Ollama-Endpunkt muss eine Loopback-Adresse sein.
|