47f7a85510
Die Ampel-Nachruestung deckte 317/337 vorbestehende ruff-Verstoesse im ganzen Repo auf. Aufgeraeumt: - ruff.toml: intentionale Muster als Projekt-Politik ausgenommen (BLE001 blind-except, S110/S112 try-except-pass/continue, PLW1510 subprocess-best-effort, B008 FastAPI- Depends/File-Idiom, EXE001 Shebang, + wenige Stil-Regeln). __init__.py-Re-Exports geschuetzt (F401). - ruff --fix: 128 mechanische (Import-Sortierung, PEP585/604-Annotationen, tote Imports, ueberfluessige noqa) auto-behoben. - 12 echte Reste von Hand: PERF402/102, PLC3002 (Lambda->walrus), ISC004 (String-Concat geklammert), F841/RUF059 (ungenutzte Vars), PIE810 (startswith-Tuple), UP031 (f-string), UP035 (veraltete typing-Imports). Ergebnis: 'ruff check .' = 0, 'compileall' grün. Kein Verhaltenswechsel (nur Stil/Modernisierung). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
import sys
|
|
from pathlib import Path
|
|
|
|
# Add backend directory to sys.path so we can import services
|
|
sys.path.append(str(Path(__file__).resolve().parent))
|
|
|
|
from config import CONFIG_PATH
|
|
from services.llamaswap import _PATH_RE, read_config, spec_draft_flags, write_config
|
|
|
|
|
|
def migrate():
|
|
print(f"Reading config from {CONFIG_PATH}...")
|
|
if not CONFIG_PATH.exists():
|
|
print(f"Config path {CONFIG_PATH} does not exist. Skipping.")
|
|
return
|
|
|
|
cfg = read_config()
|
|
models = cfg.get("models", {})
|
|
|
|
for name, spec in models.items():
|
|
if not isinstance(spec, dict):
|
|
continue
|
|
cmd = spec.get("cmd", "")
|
|
if not cmd:
|
|
continue
|
|
|
|
print(f"Migrating model: {name}")
|
|
|
|
# 1. Defektes --prompt-cache/--prompt-cache-all entfernen (llama-CLI-Flags,
|
|
# die llama-server ablehnt → Start scheitert). Caching macht llama-server
|
|
# automatisch pro Slot.
|
|
cmd = cmd.replace(" --prompt-cache-all", "").replace(" --prompt-cache", "")
|
|
|
|
# 2. Extract aliases/role
|
|
aliases = spec.get("aliases", [])
|
|
role = aliases[0] if aliases else None
|
|
|
|
# 3. Add parallel + (nur vocab-kompatibles) Speculative Decoding für fast/coder.
|
|
# spec_draft_flags() prüft die Vocab-Kompatibilität und hängt --spec-type an;
|
|
# ein inkompatibler Draft (z.B. qwen2.5 ↔ Qwen3.6) wird NICHT gesetzt.
|
|
if role in ("fast", "coder"):
|
|
if "--parallel" not in cmd:
|
|
cmd = cmd.strip() + " --parallel 2"
|
|
if "--spec-draft-model" not in cmd:
|
|
target = mt.group(1) if (mt := _PATH_RE.search(cmd)) else ""
|
|
cmd = cmd.strip() + spec_draft_flags(target)
|
|
|
|
# Update cmd
|
|
from ruamel.yaml.scalarstring import LiteralScalarString
|
|
spec["cmd"] = LiteralScalarString(cmd.strip() + "\n")
|
|
|
|
print(f"Writing updated config back to {CONFIG_PATH}...")
|
|
write_config(cfg)
|
|
print("Migration completed successfully!")
|
|
|
|
if __name__ == "__main__":
|
|
migrate()
|