OpenClaw β Codex Fallback Diagnosis
Datum: 2026-04-24 Rating: π΄ BLOCKER fΓΌr qwen3-primary Onboarding-Test Status: Wartet auf Chapaty-Entscheidung (A vs C)
Symptom
Howard-Test "Antworte kurz: welches Model nutzt du gerade?" dauert 5m48s. executionTrace.winnerModel = "gpt-5.4" (Codex), obwohl Howard-Config primary=qwen3:8b-32k. Codex halluziniert Antwort "Ich nutze gerade ollama/qwen3:8b-32k" β faktisch falsch, echt war Codex.
Angewandte Fixes (alle richtig, aber nicht kausal)
| Fix | Wert vorher β nachher | Kausal? |
agents.defaults.contextTokens | 16000 β 32000 | nein |
agents.defaults.heartbeat.model | qwen3:8b β qwen3:8b-32k | nein |
commands.nativeSkills | "auto" β false | nein (reduziert Prompt, verhindert aber OOM nicht) |
agents.defaults.model.primary | llama3.1:8b β qwen3:8b-32k | nein (Howard-per-agent-Config zog schon) |
Echter Root-Cause: OOM
Ollama-Logs wΓ€hrend Test (05:13β05:19 UTC):
05:13:10 loading model layers=37 (qwen3:8b-Variant, Primary)
05:14:22 loading model layers=37 (Retry)
05:16:21 POST /api/chat β 500 nach 1m59s (qwen3:8b-32k crash)
05:16:25 loading model layers=41 (qwen3:14b-32k, Fallback)
05:16:52 error: llama runner process has terminated: signal: killed
05:17:16 error: llama runner process has terminated: signal: killed
05:18:23 error: llama runner process has terminated: signal: killed
05:19:07 error: llama runner process has terminated: signal: killed
signal: killed = SIGKILL = OOM Killer.
Host-Status wΓ€hrend Test:
- Total: 31.3 GiB, Free: 13 GiB
- Swap: 0 B (nicht konfiguriert)
- qwen3:8b-32k im /api/ps geladen (10GB size)
- KV-Cache fΓΌr 32k ctx auf 36 layers: ~15β17 GB bei realem Prompt
- β Summen-Footprint ΓΌbersteigt 13GB free β OOM-Kill
Warum qwen3:8b-32k schon beim Primary OOM't
Selbst bei leerem Warm-Up (/api/generate mit 5 Tokens) = 10GB RAM β . Bei realem OpenClaw-Request (System-Prompt + Tool-Schemas + Workspace ~5β8k Token):
- KV-Cache wΓ€chst proportional
- Peak-Allokation ΓΌberschreitet freie RAM
- llama-runner gets SIGKILL
Warum qwen3:14b-32k als Fallback 4Γ scheitert
14B weights = 9 GB base. Plus KV fΓΌr 32k ctx = ~20+ GB. Nie genug free. OOM-Killer tΓΆtet Ollama-Runner (signal killed, nicht graceful shutdown).
Warum Codex "gewinnt"
OpenClaw-Cascade:
- qwen3:8b-32k β 1m59s β timeout/500
- qwen3:14b-32k β mehrfach OOM (~2min pro Versuch)
- nvidia-nim/llama-3.3-70b β nicht attemptet (oder auch gefailed?)
- openai-codex/gpt-5.4 β β success, winnerModel
fallbackUsed: false im Trace ist irrefΓΌhrend β OpenClaw zΓ€hlt Codex-Attempts als eigenen Primary-Versuch, nicht als Fallback.
Entscheidungsoptionen
Option A β Swap + num_ctx=16384 (technisch)
- Swap-File 16GB anlegen (
fallocate /swapfile 16G) - qwen3:8b-32k Modelfile:
PARAMETER num_ctx 16384(halbiert KV) - Realistisch: 16k ctx reichen fΓΌr Single-Agent-Tasks
- Risiko: Swap-Thrashing macht qwen3 langsam (30+ tok/s CPU β 2-3 tok/s)
- Erwartete Latenz: 30β90s pro Howard-Call statt aktuell 5m Codex
Option B β ZurΓΌck auf qwen3:8b (8k ctx, kein -32k)
- Ollama default num_ctx=8k β ~5GB KV, kein OOM-Risiko
- Tool-Schema-Bloat muss gekΓΌrzt werden (nativeSkills=false + Workspace-Trim)
- Verlust: kein langes Arbeiten an einem Auftrag, nur kurze Turns
- Schnell: 10β30s pro Call
Option C β Codex als Primary akzeptieren
- Codex gratis via ChatGPT-OAuth, kein Lokal-Load
- Latenz: ~5 Min pro Call (wie gerade gesehen) β fΓΌr interaktive Dispatch zu lang
- Datenschutz: Howard-Content geht zu OpenAI (ChatGPT)
- FΓΌr Onboarding-Langlauf akzeptabel, fΓΌr Telegram-Dispatch nicht
Option D β Hybrid (Lenny=qwen3:8b 8k / Sheldon=Codex / Howard=Codex)
- Lenny bleibt lokal schnell (kein 32k nΓΆtig fΓΌr Dispatch)
- Howard/Sheldon auf Codex (QualitΓ€t > Latenz)
- Realistisch, akzeptiert Hardware-Grenzen
Empfehlung
D β Hybrid. Die 32GB-Hardware reicht nicht fΓΌr stabiles qwen3-32k. Lenny lokal schnell halten, Howard/Sheldon auf Codex (gratis) fΓΌr QualitΓ€t.
Onboarding-Test kann mit Option D starten.