Skip to content

Commit c0852ff

Browse files
Align OpenClaw Ocabra roster with the ctx-tagged model set
Bring OpenClaw's models.providers.ocabra and agents.defaults.models in line with the OpenCode roster (the 10 ctx-tagged ids, matching contextWindow/maxTokens). Default model and its fallback move from ocabra/qwen3:14b to ocabra/gemma4:12b-ctx256k. README updated. Also fixes a latent bug: the ocabra_provider_json Python block used lowercase true/false, which raised NameError at runtime, so the provider metadata was never actually applied. Switched to Python True/False so json.dumps emits valid JSON. continue-config.yaml is intentionally left untouched: Continue needs its own autocomplete/embedding models that are not part of the chat roster. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent afe807d commit c0852ff

2 files changed

Lines changed: 16 additions & 12 deletions

File tree

‎workspaces/OpenClaw/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Template inicial para ejecutar OpenClaw sobre la imagen `ghcr.io/makespacemadrid
3232
- Puedes entrar por KasmVNC (escritorio) o terminal.
3333
- `[OpenClaw] Auto-iniciar servicio`: arranca OpenClaw al iniciar.
3434
- `[OpenClaw] Directorio de trabajo`: directorio desde el que se ejecuta OpenClaw.
35-
- `[OpenClaw] Modelo por defecto`: modelo por defecto para OpenClaw (por defecto `ocabra/qwen3:14b`).
35+
- `[OpenClaw] Modelo por defecto`: modelo por defecto para OpenClaw (por defecto `ocabra/gemma4:12b-ctx256k`).
3636
- `Provisionar API key Ocabra automáticamente`: genera una key de 30 días si no aportas una.
3737
- `Provisionar API key FreeAPI automáticamente`: genera y precarga una key de FreeAPI al crear el workspace.
3838
- `TF_VAR_ocabra_endpoint_base_url`: base URL OpenAI-compatible de Ocabra por defecto.
@@ -57,7 +57,7 @@ Template inicial para ejecutar OpenClaw sobre la imagen `ghcr.io/makespacemadrid
5757
- El template desactiva el pairing de dispositivos (`gateway.controlUi.dangerouslyDisableDeviceAuth=true`) para entrar directamente con token.
5858
- El template puede autoprovisionar 2 credenciales API (si hay endpoints): Ocabra (`OCABRA_KEY`) y FreeAPI (`FREEAPI_KEY_ENDPOINT`), cada una con su propio toggle en el formulario.
5959
- El template crea `auth-profiles.json` con perfiles `ocabra:manual` y/o `freeapi:manual`.
60-
- El template define `models.providers.ocabra` con `qwen3:14b`, `qwen3:32b`, `qwen3-coder:30b`, `gpt-oss:20b`.
60+
- El template define `models.providers.ocabra` con el roster ctx-tagged: `gemma4:12b-ctx256k`, `qwen3-coder:30b-ctx256k`, `nemotron-3-nano:30b-ctx384k`, `nemotron-3-nano:30b-ctx256k`, `qwen3.6:ctx128k`, `gemma4:26b-ctx160k`, `ministral-3:14b-ctx128k`, `qwen3.5:27b-ctx96k`, `nemotron3:33b-ctx64k`, `ravenx-256k`.
6161
- El template detecta modelos FreeAPI acabados en `-ha` y, cuando está disponible `/model/info` (LiteLLM), enriquece automáticamente capacidades, tokens y costes por modelo.
6262
- El template rellena `agents.defaults.models` con esos modelos para que aparezcan en el selector de agentes.
6363
- El template asegura `agents.list` con entrada `id: "main"` para que los cambios de modelo en la UI de agentes se marquen como modificados y el botón `Save` se habilite.

‎workspaces/OpenClaw/main.tf‎

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ data "coder_parameter" "openclaw_workdir" {
8484
data "coder_parameter" "openclaw_default_model" {
8585
name = "05_openclaw_default_model"
8686
display_name = "[OpenClaw] Modelo por defecto"
87-
description = "Modelo por defecto de OpenClaw (ej. ocabra/qwen3:14b). Si se deja vacío, no se fuerza."
87+
description = "Modelo por defecto de OpenClaw (ej. ocabra/gemma4:12b-ctx256k). Si se deja vacío, no se fuerza."
8888
type = "string"
89-
default = "ocabra/qwen3:14b"
89+
default = "ocabra/gemma4:12b-ctx256k"
9090
mutable = true
9191
}
9292

@@ -756,12 +756,16 @@ cfg = {
756756
"auth": "api-key",
757757
"api": "openai-completions",
758758
"models": [
759-
{"id": "qwen3-coder:30b", "name": "Qwen3 Coder 30b", "reasoning": false, "input": ["text"], "contextWindow": 262144, "maxTokens": 8192},
760-
{"id": "devstral-small-2:24b", "name": "Devstral Small 2 24b", "reasoning": false, "input": ["text"], "contextWindow": 393216, "maxTokens": 8192},
761-
{"id": "qwen3.5:27b", "name": "Qwen3.5 27b", "reasoning": true, "input": ["text"], "contextWindow": 262144, "maxTokens": 8192},
762-
{"id": "qwen3.6:latest", "name": "Qwen3.6", "reasoning": true, "input": ["text"], "contextWindow": 262144, "maxTokens": 8192},
763-
{"id": "gemma4:26b", "name": "Gemma 4 26b", "reasoning": true, "input": ["text"], "contextWindow": 262144, "maxTokens": 8192},
764-
{"id": "qwen3:8b", "name": "Qwen3 8b", "reasoning": true, "input": ["text"], "contextWindow": 40960, "maxTokens": 8192},
759+
{"id": "gemma4:12b-ctx256k", "name": "Gemma 4 12b (256K)", "reasoning": True, "input": ["text"], "contextWindow": 262144, "maxTokens": 16384},
760+
{"id": "qwen3-coder:30b-ctx256k", "name": "Qwen3 Coder 30b (256K)", "reasoning": False, "input": ["text"], "contextWindow": 262144, "maxTokens": 32768},
761+
{"id": "nemotron-3-nano:30b-ctx384k", "name": "Nemotron 3 Nano 30b (384K)", "reasoning": True, "input": ["text"], "contextWindow": 393216, "maxTokens": 16384},
762+
{"id": "nemotron-3-nano:30b-ctx256k", "name": "Nemotron 3 Nano 30b (256K)", "reasoning": True, "input": ["text"], "contextWindow": 262144, "maxTokens": 16384},
763+
{"id": "qwen3.6:ctx128k", "name": "Qwen3.6 (128K)", "reasoning": True, "input": ["text"], "contextWindow": 131072, "maxTokens": 16384},
764+
{"id": "gemma4:26b-ctx160k", "name": "Gemma 4 26b (160K)", "reasoning": True, "input": ["text"], "contextWindow": 163840, "maxTokens": 16384},
765+
{"id": "ministral-3:14b-ctx128k", "name": "Ministral 3 14b (128K)", "reasoning": True, "input": ["text"], "contextWindow": 131072, "maxTokens": 8192},
766+
{"id": "qwen3.5:27b-ctx96k", "name": "Qwen3.5 27b (96K)", "reasoning": True, "input": ["text"], "contextWindow": 98304, "maxTokens": 16384},
767+
{"id": "nemotron3:33b-ctx64k", "name": "Nemotron3 33b (64K)", "reasoning": True, "input": ["text"], "contextWindow": 65536, "maxTokens": 8192},
768+
{"id": "ravenx-256k", "name": "RavenX CyberAgent (256K)", "reasoning": False, "input": ["text"], "contextWindow": 262144, "maxTokens": 32768},
765769
],
766770
}
767771
print(json.dumps(cfg, separators=(",", ":")))
@@ -948,7 +952,7 @@ PY
948952
import json, os
949953
allowed = {}
950954
if os.environ.get("HAS_OCABRA") == "1":
951-
for model in ("qwen3-coder:30b", "devstral-small-2:24b", "qwen3.5:27b", "qwen3.6:latest", "gemma4:26b", "qwen3:8b"):
955+
for model in ("gemma4:12b-ctx256k", "qwen3-coder:30b-ctx256k", "nemotron-3-nano:30b-ctx384k", "nemotron-3-nano:30b-ctx256k", "qwen3.6:ctx128k", "gemma4:26b-ctx160k", "ministral-3:14b-ctx128k", "qwen3.5:27b-ctx96k", "nemotron3:33b-ctx64k", "ravenx-256k"):
952956
allowed[f"ocabra/{model}"] = {}
953957
if os.environ.get("HAS_FREEAPI") == "1":
954958
try:
@@ -1002,7 +1006,7 @@ PY
10021006
OPENCLAW_PORT="$${OPENCLAW_PORT:-3333}"
10031007
OPENCLAW_GATEWAY_TOKEN="$${OPENCLAW_GATEWAY_TOKEN:-}"
10041008
OPENCLAW_WORKDIR="$${OPENCLAW_WORKDIR:-$HOME/Projects}"
1005-
OPENCLAW_DEFAULT_MODEL="$${OPENCLAW_DEFAULT_MODEL:-ocabra/qwen3:14b}"
1009+
OPENCLAW_DEFAULT_MODEL="$${OPENCLAW_DEFAULT_MODEL:-ocabra/gemma4:12b-ctx256k}"
10061010
EOF
10071011
chmod 600 "$HOME/.local/state/openclaw/runtime.env"
10081012

0 commit comments

Comments
 (0)