feat: Cookbook-Download-Fix, Live-Update-Konsole, Profi-Highlight, OpenCode-Guide

Backend:
- hf_bin() + HF_DOWNLOAD_ENV zentral in config.py; install-recipe und
  install-model in cookbook.py nutzten weiter das fehlende `hf` + falsches
  XET-Env -> Haupt-Installationsweg war ebenso kaputt, jetzt konsistent gefixt

Frontend:
- Server: laufende Updates (LLM-Engine/OS) live auf der Server-Seite mitlesbar,
  inkl. klarer Fertig-/Fehlgeschlagen-Meldung (onJobs + Aktueller-Vorgang-Karte)
- Cookbook/Profi-Modus: meistgeladenes, passendes Modell wird als
  "★ Beste Wahl für dein System" hervorgehoben (analog zu den Templates)
- Verbinden: OpenCode korrekt per opencode.json (@ai-sdk/openai-compatible)
  statt irrefuehrender Felder; erklaert "Connect to API"-Fehler (LAN-IP statt
  localhost)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-06-21 18:03:12 +02:00
parent f07a8440b2
commit 720b47a6e1
7 changed files with 125 additions and 28 deletions
+5 -5
View File
@@ -12,7 +12,7 @@ from ruamel.yaml.scalarstring import LiteralScalarString
from auth import auth
from hw_math import evaluate_fit, max_ctx_for
from config import MODELS_DIR, CMD_TEMPLATE, DEFAULT_TTL
from config import MODELS_DIR, CMD_TEMPLATE, DEFAULT_TTL, HF_DOWNLOAD_ENV, hf_bin
from llamaswap import read_config, write_config
from jobengine import start_job, JOBS
from recipes import RECIPES, UPGRADES
@@ -149,7 +149,7 @@ def install_recipe(req: InstallRecipeReq):
if not recipe:
raise HTTPException(404, "Setup nicht gefunden.")
ram_gb = psutil.virtual_memory().total / (1024 ** 3)
env = {"HF_XET_HIGH_PERFORMANCE": "1"}
env = dict(HF_DOWNLOAD_ENV)
if req.hf_token:
env["HF_TOKEN"] = req.hf_token
cfg = read_config()
@@ -160,7 +160,7 @@ def install_recipe(req: InstallRecipeReq):
continue # kein GGUF im Repo gefunden -> Modell ueberspringen (Rest installiert trotzdem)
target = MODELS_DIR / m["repo"].split("/")[-1]
target.mkdir(parents=True, exist_ok=True)
args = ["hf", "download", m["repo"], file, "--local-dir", str(target)]
args = [hf_bin(), "download", m["repo"], file, "--local-dir", str(target)]
jid = start_job(args, f"download {m['name']}", env=env)
JOBS[jid]["result_path"] = str(target / file)
job_ids.append(jid)
@@ -226,12 +226,12 @@ def install_model(req: InstallModelReq):
if not file:
raise HTTPException(404, "Keine GGUF-Datei im Repo gefunden.")
ram_gb = psutil.virtual_memory().total / (1024 ** 3)
env = {"HF_XET_HIGH_PERFORMANCE": "1"}
env = dict(HF_DOWNLOAD_ENV)
if req.hf_token:
env["HF_TOKEN"] = req.hf_token
target = MODELS_DIR / req.repo.split("/")[-1]
target.mkdir(parents=True, exist_ok=True)
jid = start_job(["hf", "download", req.repo, file, "--local-dir", str(target)],
jid = start_job([hf_bin(), "download", req.repo, file, "--local-dir", str(target)],
f"download {req.repo.split('/')[-1]}", env=env)
JOBS[jid]["result_path"] = str(target / file)
cfg = read_config()