From 10d7cd76621aead6561e104772a388673aa6cf11 Mon Sep 17 00:00:00 2001 From: Dystroyer8 Date: Thu, 30 Jul 2026 16:59:25 +0200 Subject: [PATCH] build: document local model runtime --- CHANGELOG.md | 3 ++ docs/CHATGPT_HANDOFF.md | 39 ++++++++++++++++++++------ docs/LOCAL_MODEL.md | 61 +++++++++++++++++++++++++++++++++++++++++ docs/NEXT_SESSION.md | 7 +++-- docs/PROJECT_STATUS.md | 13 +++++++-- 5 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 docs/LOCAL_MODEL.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 04ec557..d449a76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ Alle wesentlichen Projektänderungen werden hier in verständlicher Form dokumen - Eng begrenzte projektinterne Codex-Agentenrollen. - Abhängigkeitsfreier Strukturprüfer. - Phasenbezogene Empfehlung für Entwicklungswerkzeuge, VS-Code-Erweiterungen, Obsidian und lokale Modelllaufzeiten. +- Dokumentierte, portable Ollama-Laufzeit 0.32.5 und genau ein lokales Modell + `qwen3:8b` außerhalb des Repositories. ### Changed @@ -21,6 +23,7 @@ Alle wesentlichen Projektänderungen werden hier in verständlicher Form dokumen - Vollständigen Erst-Handoff einmalig archiviert und die laufende Übergabe auf einen kompakten aktuellen Stand umgestellt. - Isolierte Python-3.12-Entwicklungsumgebung mit uv-Lockfile und Ruff vorbereitet. - Offizielle VS-Code-Erweiterungen für Python, Pylance und Python Environments eingerichtet. +- `qwen3:8b` mit echten deutschen Antworten und GPU-/Zeitmessungen auf der RTX 3060 geprüft. ### Security diff --git a/docs/CHATGPT_HANDOFF.md b/docs/CHATGPT_HANDOFF.md index a91652e..06db9db 100644 --- a/docs/CHATGPT_HANDOFF.md +++ b/docs/CHATGPT_HANDOFF.md @@ -53,7 +53,11 @@ Rootserver: - Toolchain eingerichtet: uv 0.11.32 und CPython 3.12.13 isoliert unter `D:\Javis-Tools`; Ruff 0.16.0 in der lokalen `.venv`. - Offizielle VS-Code-Erweiterungen installiert: Python 2026.4.0, Pylance 2026.3.1, Python Environments 1.36.0 und Debugpy 2026.6.0. - Windows-PATH und vorhandene Python-Installationen wurden nicht verändert. -- Ollama oder llama.cpp sind noch nicht installiert. +- Ollama 0.32.5 ist portabel unter `D:\Javis-Tools\ollama` installiert. +- Genau ein Modell ist installiert: `qwen3:8b`, GGUF `Q4_K_M`, 5,2 GB, Apache-2.0. +- Modelle liegen außerhalb von Git unter `D:\Javis-Data\ollama-models`. +- Der lokale Ollama-Dienst bindet nur an `127.0.0.1:11434`; PATH, Registry, + Autostart und Windows-Dienste blieben unverändert. - Kein Obsidian-, Laptop- oder Rootserverzugriff wurde implementiert. - Keine KI-, Sprach-, Mobil- oder Statusfunktion ist implementiert. @@ -83,6 +87,11 @@ Rootserver: - Handoff-Verdichtung als Commit `e6eb995` nach `origin/main` gepusht. - Branch `feat/core-chat` von diesem Stand erstellt. - uv, CPython 3.12, lokale `.venv`, Ruff, Lockfile und offizielle VS-Code-Python-Erweiterungen eingerichtet. +- Ollama und llama.cpp anhand offizieller Quellen verglichen; Ollama als einfachere + erste Windows-Laufzeit gewählt. +- Ollama-Archiv gegen die offizielle SHA-256-Prüfsumme verifiziert und portabel installiert. +- `qwen3:8b` außerhalb des Repositories geladen und mit zwei echten deutschen + Modellantworten auf der RTX 3060 geprüft. - Obsidian, Ubuntu-Laptop und Rootserver blieben unverändert. ## Aktuelle Tests @@ -99,7 +108,18 @@ Letzter bestätigter Grundgerüststand: - Python in `.venv`: 3.12.13 - Ruff in `.venv`: 0.16.0 -Für den Textchat existieren noch keine Funktions- oder Modell-Smoke-Tests. +Lokaler Modell-Smoke-Test: + +- Ollama-Version/API: 0.32.5, localhost erreichbar +- Modell: 5.225.388.164 Byte, 8,2B, Q4_K_M, Apache-2.0 +- kalter Aufruf: 36,19 s Wandzeit, davon 17,53 s Laden, ungefähr 7,22 Token/s +- warmer kurzer Aufruf: 0,56 s Wandzeit, ungefähr 55,51 Token/s +- GPU-Belegung: 1.418 MiB vorher, 6.842 MiB mit geladenem Modell +- Ollama meldet 100 % GPU und 5,6 GB Modellbelegung + +Zwölf vorbereitete Unit-Tests für Konfiguration, SQLite, Kern, Provider und CLI +laufen in der Arbeitskopie bereits erfolgreich; sie sind noch nicht in den +Feature-Branch übernommen. ## Git-Stand @@ -108,7 +128,7 @@ Für den Textchat existieren noch keine Funktions- oder Modell-Smoke-Tests. - Grundgerüstcommit: `6d04171` - letzter Commit vor der Handoff-Verdichtung: `0e82748` - Handoff-Verdichtung auf `main`: `e6eb995` -- aktueller Feature-Commit ist über `git log -1 --oneline` zu bestimmen +- Python-Entwicklungsumgebung auf dem Feature-Branch: `fa90a5c` - `origin` verwendet HTTPS - kein Force-Push und keine umgeschriebene Historie @@ -119,11 +139,12 @@ Für den Textchat existieren noch keine Funktions- oder Modell-Smoke-Tests. - `0e82748`: Werkzeug-, Token- und Handoff-Regeln - `e6eb995`: einmalige Archivierung und Verdichtung des Handoffs - aktuell: isolierte Python-Toolchain und reproduzierbare Entwicklungsumgebung +- aktuell: portable Ollama-Laufzeit und `qwen3:8b` außerhalb von Git verifiziert ## Offene Entscheidungen und Fehler - endgültiger Produkt-/Repositoryname bleibt offen -- lokale Modelllaufzeit und erstes Modell sind noch nicht installiert oder benchmarked +- Startmechanismus für Ollama ist noch bewusst manuell und nur pro Prozess konfiguriert - 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 - Gaming-PC zeigt derzeit nur 8 statt 16 logische CPU-Prozessoren; Ursache ungeklärt @@ -143,10 +164,10 @@ Für den Textchat existieren noch keine Funktions- oder Modell-Smoke-Tests. Der genehmigte nächste Meilenstein ist `feat/core-chat`: -1. Ollama als einfachere Windows-Laufzeit installieren; llama.cpp bleibt dokumentierte Alternative -2. genau `qwen3:8b` (`Q4_K_M`, 5,2 GB, Apache-2.0) herunterladen und auf der RTX 3060 messen -3. echten lokalen CLI-Chat mit Provider-Schnittstelle und SQLite-Sitzungen implementieren -4. Unit-, Ruff-, Persistenz-, Secret- und echten Modell-Smoke-Test ausführen -5. nur bei vollständig erfüllter Abnahme nach `main` mergen +1. vorbereiteten lokalen CLI-Chat mit Provider-Schnittstelle und SQLite-Sitzungen + in den Feature-Branch übernehmen +2. Unit-, Ruff-, Persistenz-, Secret- und echten CLI-Modell-Smoke-Test ausführen +3. Dokumentation und Handoff auf den tatsächlichen Endstand bringen +4. Feature-Branch pushen und nur bei vollständig erfüllter Abnahme nach `main` mergen Nicht Teil dieses Meilensteins: Obsidian-Integration, Serverzugriff, Sprache, Mobile Client oder Living-Mind-Code. diff --git a/docs/LOCAL_MODEL.md b/docs/LOCAL_MODEL.md new file mode 100644 index 0000000..0dc563c --- /dev/null +++ b/docs/LOCAL_MODEL.md @@ -0,0 +1,61 @@ +# Lokales Modell + +Stand: 30.07.2026, erster Windows-Test auf dem Gaming-PC. + +## Auswahl + +- Laufzeit: Ollama `0.32.5`, portable Windows-Version +- Modell: `qwen3:8b` +- Format: GGUF +- Quantisierung: `Q4_K_M` +- Parameter: 8,2 Milliarden +- Kontext laut Modellmetadaten: 40.960 Token; Ollama-Testkontext: 4.096 +- Downloadgröße laut lokaler Ollama-API: 5.225.388.164 Byte, ungefähr 5,2 GB +- Lizenz: Apache License 2.0 + +Ollama wurde gegenüber llama.cpp für diesen ersten Windows-Test gewählt, weil die +offizielle portable Laufzeit ohne Build, Installer, PATH-Änderung oder Systemdienst +eine stabile lokale HTTP-Schnittstelle bereitstellt. llama.cpp bleibt eine mögliche +spätere Alternative, falls auf schwächerer Hardware feinere Kontrolle über Kontext, +Offloading oder Quantisierung benötigt wird. + +`qwen3:8b` wurde gewählt, weil die Variante unter 10 GB bleibt, vollständig in den +12-GB-VRAM der RTX 3060 passt, deutschsprachige Antworten liefert und nach dem +Download offline über localhost nutzbar ist. + +## Speicherorte + +- portable Laufzeit: `D:\Javis-Tools\ollama` +- Modellablage: `D:\Javis-Data\ollama-models` +- Repository: enthält weder Laufzeit noch Modell + +Die Ablage wird beim Start des Dienstes über `OLLAMA_MODELS` nur für diesen Prozess +gesetzt. PATH, Registry, Autostart und Windows-Dienste wurden nicht verändert. + +## Gemessener Test + +Hardware: AMD Ryzen 7 9700X, 64 GB RAM, Nvidia RTX 3060 12 GB, Windows 11. + +- Laufzeit-Archiv: 1.457.824.795 Byte +- verifizierte SHA-256: + `7c941ae084569d298062d29f8139163a3187c76dbca0479c70d085e78fd8c7bb` +- kalter deutscher Zweitsatz-Test: 36,19 Sekunden Wandzeit +- davon Modell-Ladezeit: 17,53 Sekunden +- Ausgabe: 49 Token mit ungefähr 7,22 Token/Sekunde +- warmer kurzer Test: 0,56 Sekunden Wandzeit +- Ausgabe: 19 Token mit ungefähr 55,51 Token/Sekunde +- GPU-Grundbelegung vor Laden: 1.418 MiB +- GPU-Belegung bei geladenem Modell/Test: 6.842 MiB +- beobachtete zusätzliche VRAM-Belegung: ungefähr 5.424 MiB +- `ollama ps`: 5,6 GB, 100 % GPU, Kontext 4.096 + +Die Messwerte sind Momentaufnahmen und hängen von Prompt, Kontext, bereits belegtem +VRAM und Warmzustand ab. + +## Grenze + +Dieses Modell ist der bestätigte erste Gaming-PC-Test, nicht automatisch das +endgültige Modell für den ASUS-Laptop mit GTX 1050 4 GB. Dort müssen später +kleineres Modell, stärkere Quantisierung, teilweises CPU-Offloading und tatsächliche +Antwortqualität separat gemessen werden. Ein Laptop-Deployment gehört nicht zu +diesem Arbeitspaket. diff --git a/docs/NEXT_SESSION.md b/docs/NEXT_SESSION.md index 6a538a6..50e885c 100644 --- a/docs/NEXT_SESSION.md +++ b/docs/NEXT_SESSION.md @@ -2,7 +2,8 @@ ## Ziel -Nächstes Arbeitspaket auf `feat/core-chat`: genau eine lokale Modelllaufzeit und ein echter lokaler CLI-Textchat mit SQLite-Sitzungen. +Nächstes Arbeitspaket auf `feat/core-chat`: den vorbereiteten lokalen CLI-Textchat +mit SQLite-Sitzungen übernehmen, vollständig testen und dokumentieren. ## Vor Änderungen erneut prüfen @@ -13,10 +14,10 @@ Nächstes Arbeitspaket auf `feat/core-chat`: genau eine lokale Modelllaufzeit un ## Vorgeschlagener Umfang -- Ollama und llama.cpp offiziell vergleichen; nur eine Laufzeit und ein Modell unter ungefähr 10 GB installieren - lokale Konfiguration, Provider-Schnittstelle und SQLite-Sitzungen implementieren - CLI mit neuen, gelisteten und fortsetzbaren Sitzungen -- Unit-, Ruff-, Persistenz-, Secret- und echter Modell-Smoke-Test +- Unit-, Ruff-, Persistenz-, Secret- und echter CLI-Modell-Smoke-Test +- Feature-Branch pushen und nur bei erfüllter Abnahme nach `main` mergen ## Nicht beginnen diff --git a/docs/PROJECT_STATUS.md b/docs/PROJECT_STATUS.md index 073b832..c34b899 100644 --- a/docs/PROJECT_STATUS.md +++ b/docs/PROJECT_STATUS.md @@ -1,6 +1,6 @@ # Projektstatus -Stand: Toolchain-Arbeitspaket auf `feat/core-chat`, 30.07.2026. +Stand: lokale Modelllaufzeit auf `feat/core-chat`, 30.07.2026. ## Erreicht @@ -15,10 +15,15 @@ Stand: Toolchain-Arbeitspaket auf `feat/core-chat`, 30.07.2026. - uv 0.11.32 und CPython 3.12.13 isoliert unter `D:\Javis-Tools` installiert - lokale `.venv`, reproduzierbares `uv.lock` und Ruff 0.16.0 eingerichtet - offizielle VS-Code-Erweiterungen Python, Pylance und Python Environments installiert +- Ollama 0.32.5 portabel und ohne Systemänderungen unter `D:\Javis-Tools` installiert +- `qwen3:8b` (Q4_K_M, 5,2 GB, Apache-2.0) unter `D:\Javis-Data` geladen +- zwei echte deutsche Modellantworten erfolgreich vollständig auf der RTX 3060 erzeugt +- kalter Test 36,19 s, warmer Kurztest 0,56 s; geladene GPU-Belegung 6.842 MiB ## Nicht implementiert -KI, Chat, Provider, Gedächtnis, Obsidian-Adapter, Tools, Serverzugriff, Sprache, Mobile Client und Living-Mind-Frontend. +CLI-Chat, Provider im Repository, Sitzungsspeicher, Obsidian-Adapter, Tools, +Serverzugriff, Sprache, Mobile Client und Living-Mind-Frontend. ## Git @@ -29,4 +34,6 @@ KI, Chat, Provider, Gedächtnis, Obsidian-Adapter, Tools, Serverzugriff, Sprache ## Bekannte Einschränkung -Die Toolchain ist nutzbar, ohne den Windows-`PATH` zu verändern. Eine lokale Modelllaufzeit und der Textchat sind noch nicht implementiert. +Toolchain und lokale Modelllaufzeit sind nutzbar, ohne den Windows-`PATH`, Registry, +Autostart oder Windows-Dienste zu verändern. Der Textchat ist als Nächstes in den +Feature-Branch zu übernehmen und vollständig gegen das reale Modell zu prüfen.