#!/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"