From 34a9862591069e3c852b737b96069f1c7202e180 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Sun, 23 Aug 2026 20:44:10 +0200 Subject: [PATCH] fix(kontext): Coder bekommt den ganzen Slot - 65536 auf 131072 Ursache der haeufigen Komprimierung war kein zu scharfer Automatismus, sondern ein falscher Wert von mir: opencode.json deklarierte 131072, der Slot hatte aber nur 65536 (-c 131072 --parallel 2). Beweis im Log: finish_reason=length -> 400 Bad Request -> Wiederholung 200 OK. Diese Wiederholung war die Komprimierung. Jetzt: coder mit --parallel 1 = volle 131072 (er hat nur einen Verbraucher; Lucy und explore nutzen hermes, review nutzt heavy). fast behaelt seine zwei Slots und steht ehrlich auf 65536. Am laufenden Prozess gegengeprueft. Co-Authored-By: Claude Opus 5 --- deploy/coder-vollkontext.sh | 77 ++++++++++++++++++++++++++++ deploy/opencode-config/opencode.json | 2 +- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 deploy/coder-vollkontext.sh diff --git a/deploy/coder-vollkontext.sh b/deploy/coder-vollkontext.sh new file mode 100644 index 0000000..c9f25ed --- /dev/null +++ b/deploy/coder-vollkontext.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +# coder-vollkontext.sh — gibt dem Coder den ganzen Kontext (23.08.2026). +# +# WARUM: llama-swap startet den Coder mit `-c 131072 --parallel 2`. Das sind +# zwei Slots à 65.536 — und nur diese 65.536 stehen einer Sitzung zur Verfuegung. +# Der Coder hat aber genau EINEN Verbraucher: OpenChamber. Lucy benutzt `hermes`, +# der explore-Subagent auch, `review` benutzt `heavy`. Die zweite Bahn liegt brach. +# +# Mit `--parallel 1` bekommt eine Sitzung die vollen 131.072 — doppelt so viel +# Platz, halb so viel Komprimieren. +# +# ‼️ NICHT waehrend eines laufenden Auftrags ausfuehren: llama-swap laeuft mit +# --watch-config und laedt beim Speichern SOFORT neu. Das schneidet eine +# laufende Sitzung mitten im Satz ab. +# +# Aufruf: bash deploy/coder-vollkontext.sh (Trockenlauf, zeigt den Diff) +# bash deploy/coder-vollkontext.sh --ja (wendet an) +set -uo pipefail + +CONF="${LLAMA_SWAP_CONF:-/etc/llama-swap/config.yaml}" +BLOCK="${CODER_BLOCK:- Qwen3.8-27B:}" + +if [ ! -r "$CONF" ]; then echo "ABBRUCH: $CONF nicht lesbar"; exit 1; fi + +TMP="$(mktemp)" +cp "$CONF" "$TMP" + +python3 - "$TMP" "$BLOCK" <<'PY' +import io, re, sys +pfad, block = sys.argv[1], sys.argv[2] +z = io.open(pfad, encoding="utf-8").read().split("\n") +try: + start = next(i for i, l in enumerate(z) if l.startswith(block)) +except StopIteration: + print("ABBRUCH: Block '%s' nicht gefunden" % block); sys.exit(1) +ende = next((i for i in range(start + 1, len(z)) if re.match(r"^ [A-Za-z]", z[i])), len(z)) + +# Streng auf den Coder-Block begrenzt — `fast`/`hermes` MUESSEN ihre zwei Slots +# behalten, dort greifen Lucy und der Explorer wirklich gleichzeitig zu. +n_par = n_ctx = 0 +for i in range(start, ende): + if "--parallel 2" in z[i]: + z[i] = z[i].replace("--parallel 2", "--parallel 1"); n_par += 1 + if z[i].strip() == "context: 65536": + z[i] = z[i].replace("65536", "131072"); n_ctx += 1 + +if n_par != 1 or n_ctx != 1: + print(f"ABBRUCH: unerwartet (parallel {n_par}x, context {n_ctx}x) — Konfiguration hat sich geaendert") + sys.exit(1) +io.open(pfad, "w", encoding="utf-8").write("\n".join(z)) +PY +if [ $? -ne 0 ]; then rm -f "$TMP"; exit 1; fi + +echo "=== Aenderung ===" +diff "$CONF" "$TMP" +echo + +if [ "${1:-}" != "--ja" ]; then + echo "TROCKENLAUF — nichts geaendert. Anwenden mit: bash $0 --ja" + rm -f "$TMP"; exit 0 +fi + +SICHER="${CONF}.bak-$(date +%Y%m%d-%H%M%S)" +sudo -n cp "$CONF" "$SICHER" && echo "Sicherung: $SICHER" +sudo -n cp "$TMP" "$CONF" && echo "angewendet — llama-swap laedt durch --watch-config selbst neu" +rm -f "$TMP" + +echo +echo "Warte auf den Neustart des Coders..." +sleep 8 +curl -s -m 15 "http://127.0.0.1:8080/v1/models" >/dev/null 2>&1 \ + && echo "llama-swap antwortet wieder" \ + || echo "ACHTUNG: llama-swap antwortet nicht — Sicherung liegt unter $SICHER" + +echo +echo "Danach in ~/.config/opencode/opencode.json auf dem PC nachziehen:" +echo " coder: limit.context 65536 -> 131072" diff --git a/deploy/opencode-config/opencode.json b/deploy/opencode-config/opencode.json index aa59410..6a7ba27 100644 --- a/deploy/opencode-config/opencode.json +++ b/deploy/opencode-config/opencode.json @@ -13,7 +13,7 @@ "name": "fast - Qwen3.6-35B-A3B (MoE) - schnell, fuer Erkunden und Kleinkram", "tool_call": true, "limit": { - "context": 131072, + "context": 65536, "output": 16384 } },