llama-swap: brains verdraengt nichts mehr (exclusive: false) - Lucy-Anfragen warfen den Coder raus
Ampel / ampel (push) Failing after 20s
Ampel / ampel (push) Failing after 20s
Ohne den Key ist eine llama-swap-Gruppe exklusiv: JEDE Anfrage ans Hirn entlud den Coder und die Bild-Zwillinge (live gemessen 24.09.). Fuer OpenChamber hiess das nach jeder Lucy-, NerdQuiz- oder Job-Anfrage: Coder neu laden und den ganzen Vorlauf nachrechnen. set_group setzt den Key fuer immer-warme Gruppen jetzt selbst, damit ein Hirn-Tausch ihn nicht wieder verliert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
91aa16eee1
commit
133a491aca
@@ -444,6 +444,10 @@ def set_group(group: str, members: list[str], swap: bool = False, persist: bool
|
||||
cfg = read_config()
|
||||
groups = cfg.setdefault("groups", {})
|
||||
groups[group] = {"swap": swap, "persist": persist, "persistent": persist,
|
||||
# Eine immer-warme Gruppe darf nichts verdrängen. llama-swap macht Gruppen sonst
|
||||
# `exclusive`, und JEDE Anfrage ans Hirn entlud den Coder samt Prompt-Cache
|
||||
# (live gefunden 24.09.2026: Lucy-Anfrage → OpenChamber-Coder weg).
|
||||
**({"exclusive": False} if persist else {}),
|
||||
"members": list(members)}
|
||||
# Härtung: eine persistente (immer-warme) Gruppe verlangt ttl:0 je Mitglied.
|
||||
# `persistent` schützt NUR gegen Verdrängung durch andere Modelle, NICHT gegen
|
||||
|
||||
@@ -654,3 +654,16 @@ def test_baseline_misst_bilder_ueber_den_zwilling(monkeypatch, ps):
|
||||
radar._baseline("hirn", time.time() + 60)
|
||||
assert aufrufe[1]["bild"] is False and aufrufe[1]["bild_modell"] is None
|
||||
assert aufrufe[0]["kennung"] != aufrufe[1]["kennung"] # neuer Zwilling → neue Baseline
|
||||
|
||||
|
||||
def test_immer_warme_gruppe_verdraengt_nichts(monkeypatch):
|
||||
"""24.09.: ohne exclusive: false entlud jede Anfrage ans Hirn den Coder — set_group muss das setzen."""
|
||||
from services import llamaswap
|
||||
cfg = {"models": {"h": {"cmd": "x", "ttl": 300}}, "groups": {}}
|
||||
monkeypatch.setattr(llamaswap, "read_config", lambda: cfg)
|
||||
monkeypatch.setattr(llamaswap, "write_config", lambda c: None)
|
||||
llamaswap.set_group("brains", ["h"], swap=False, persist=True)
|
||||
assert cfg["groups"]["brains"]["exclusive"] is False and cfg["groups"]["brains"]["persistent"] is True
|
||||
assert cfg["models"]["h"]["ttl"] == 0
|
||||
llamaswap.set_group("andere", ["h"], swap=True, persist=False)
|
||||
assert "exclusive" not in cfg["groups"]["andere"]
|
||||
|
||||
@@ -140,6 +140,10 @@ groups:
|
||||
# MC2-interne Lese-Key (API/UI) und wird von llama-swap ignoriert. Beide pflegen!
|
||||
persist: true
|
||||
persistent: true
|
||||
# 24.09.2026: exclusive: false — ohne den Key ist eine Gruppe in llama-swap exklusiv, und JEDE Anfrage ans
|
||||
# Hirn entlud den Coder (und die Bild-Zwillinge). Für OpenChamber hieß das: Lucy fragt etwas, der Coder
|
||||
# fliegt raus, die nächste Coding-Anfrage lädt ihn neu und rechnet den ganzen Vorlauf nach. Live gemessen.
|
||||
exclusive: false
|
||||
members:
|
||||
- Qwen3-Embedding-0.6B
|
||||
- Qwen3-Reranker-0.6B
|
||||
|
||||
Reference in New Issue
Block a user