fix+feat: offene Punkte abgeschlossen

Kontext in Connect-Snippet:
- ConnectPanel: max_tokens nutzt jetzt den echten konfigurierten Kontext
  des Modells (m.meta.ctx) statt hartkodiertem 32768 -> Zed sieht 128k

Phase D - 'Immer aktiv halten' Toggle:
- models.py: UpdateReq bekommt optionales ttl-Feld
- update_model: setzt TTL wenn angegeben (ctx und ttl unabhaengig)
- ModelsPanel: Checkbox 'Immer aktiv halten' im Konfig-Modal
  (TTL=99999 = nie entladen, TTL=300 = Standard 5min)

MoE tps-Schaetzung:
- hw_math.py: extract_active_params_b() erkennt A3B-Suffix
- estimate_speed(): moe_active_ratio-Parameter, sqrt-Boost fuer MoE
- evaluate_fit(): name-Parameter (optional) fuer automatische MoE-Erkennung
- cookbook.py: alle evaluate_fit-Aufrufe mit name= versehen

Cleanup:
- static/js/panels/*.js + static/js/main.js geloescht (Dead Code)
- wird-Datei (versehentlich committet) geloescht
- CLAUDE.md: KISS-Statement auf Vite+Svelte-Stand aktualisiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-06-22 22:21:15 +02:00
parent 5e9471a778
commit d8fe1f8097
17 changed files with 91 additions and 2192 deletions
+4 -2
View File
@@ -80,8 +80,10 @@ rsync; **Python-Code-Änderungen brauchen den Restart**.
## Konventionen
- KISS über alles: kein schweres Framework, kein Build-Schritt, solange es ohne geht.
- **SoC ohne Build**: neuer Bereich = ein `routers/<bereich>.py` (FastAPI-Router) + ein `static/js/panels/<bereich>.js` (ES-Modul nach Panel-Vertrag) + ein Nav-Eintrag in `index.html`. Gemeinsame Backend-Logik in `config/auth/jobengine/llamaswap`, gemeinsame Frontend-Logik in `js/core/*`. Keine schweren Libs, kein CDN — nur relative `import`s.
- **Frontend: Vite + Svelte 5** (Phase C). Neuer Bereich = `frontend/src/panels/<Bereich>Panel.svelte` + `routers/<bereich>.py` + `initNav`-Eintrag in `index.html`. Danach `npm run build` in `frontend/` → `static/dist/main.js` wird committet.
- Stores: `frontend/src/stores/status.svelte.ts`, `jobs.svelte.ts`, `system.svelte.ts` — Svelte 5 Runes (`$state`).
- Statische Hilfsfunktionen in `static/js/core/` (api.js, ui.js, nav.js) bleiben als gemeinsame Basis — werden von Vite gebündelt, nicht direkt geladen.
- **Backend SoC**: ein `routers/<bereich>.py` je Bereich, gemeinsame Logik in `config/auth/jobengine/llamaswap/hw_math`.
- Endpoint-URLs bleiben unter `/api/*`; neue Bereiche degradieren sauber, wenn ihre Quelle (sysfs, `amd-smi`, `systemctl`) fehlt (z. B. beim Entwickeln auf Windows).
- Funktion darf **nicht** von `localStorage` abhängen (nur das Token-Feld nutzt es, das ist ok).
- **Sicherheit**: Das Backend führt Shell-Befehle aus → ausschließlich im vertrauenswürdigen LAN betreiben, niemals offen ins Internet.