|
19 | 19 | - [🎯 Right after install — first use](#-right-after-install--first-use) |
20 | 20 | - [① Browser web UI](#-browser-web-ui) |
21 | 21 | - [② Container CLI](#-container-cli) |
| 22 | + - [🎯 Which model should you pick in the wizard? — RAM-based recommendations (v0.2.23+)](#-which-model-should-you-pick-in-the-wizard--ram-based-recommendations-v0223) |
22 | 23 | - [③ Terminal REPL chat](#-terminal-repl-chat) |
23 | 24 | - [Verify](#verify) |
24 | 25 | - [🌐 Temporarily opening external network](#-temporarily-opening-external-network) |
@@ -190,6 +191,37 @@ Exact order/wording depends on the OpenClaw build, but you'll generally see thes |
190 | 191 | Full surface (50+ providers, advanced-flow extras): [OpenClaw upstream docs `cli/onboard`](https://docs.openclaw.ai/cli/onboard). |
191 | 192 | </details> |
192 | 193 |
|
| 194 | +#### 🎯 Which model should you pick in the wizard? — RAM-based recommendations (v0.2.23+) |
| 195 | + |
| 196 | +When the wizard reaches step 8 (`ollama` → model name), pick one of these based on your laptop's RAM. **Smaller is NOT always better** — 3B-class models reply fast but consistently fail to follow direct commands ("delete X", "fill in Y", "remember Z") because the multi-step reasoning chain "user said delete → I have a delete tool → I should call it" is fragile at that scale. You'll see the bot looping back into conversation instead of actually doing the thing. |
| 197 | + |
| 198 | +| RAM | Primary pick (default) | Lightweight fallback (latency-first) | Heavy work | |
| 199 | +|---|---|---|---| |
| 200 | +| **8 GB** | `qwen2.5:3b-instruct` (1.8 GB) | — | — | |
| 201 | +| **16 GB** | `qwen2.5:7b-instruct` (4.7 GB) | `qwen2.5:3b-instruct` (1.8 GB) | — | |
| 202 | +| **24 GB** | 🌟 **`gemma4:latest` (8.9 GB)** — vision + audio + thinking + tools | `qwen2.5:3b-instruct` | `gemma4:26b` (17 GB) via explicit call | |
| 203 | +| **32 GB+** | `gemma4:latest` or `qwen2.5-coder:14b` (8.4 GB) | `gemma4:latest` | `gemma4:26b`, `llama3.3:70b`, etc. | |
| 204 | + |
| 205 | +> **Why `gemma4:latest` for 24 GB?** Cold load 7.2 s / warm 0.27 s (far under OpenClaw's 120 s idle watchdog). Multimodal — images, audio, thinking, tools all native. Coexists with other apps on a 24 GB machine. Most importantly: **follows direct commands the 3B models drop on the floor.** Discord bot interactions like "delete this", "remember that", "fill in the file" Just Work. |
| 206 | +
|
| 207 | +##### Lock your pick permanently — `OPENCLAW_FORCE_DEFAULT_MODEL` |
| 208 | + |
| 209 | +After the wizard, every future `./openclaw setup` run goes through the auto-optimizer ([three-tier policy](docs/GUIDE-DISCORD-BOT.md#default-모델을-영구-lock-하기-v0223)). To make your choice immutable, add one line to `.env`: |
| 210 | + |
| 211 | +```bash |
| 212 | +# openclaw-mgr/.env (copy from .env.example if it doesn't exist yet) |
| 213 | +OPENCLAW_FORCE_DEFAULT_MODEL="gemma4:latest" |
| 214 | +``` |
| 215 | + |
| 216 | +With this set, every subsequent `./openclaw setup` · `update` · `restore` will **force** this model back to `models[0]`, regardless of what the wizard did or what OpenClaw's upstream hardcoded defaults try to inject. Change the line and re-run setup when you want to switch. |
| 217 | + |
| 218 | +Default behavior (env var unset): |
| 219 | +- ✅ Wizard-picked model has `tools` capability → **kept as-is** (your choice is respected) |
| 220 | +- ⚙️ Wizard-picked model has no `tools` (e.g., embedding-only) → **auto-swap to the smallest tools-capable model** (safety net) |
| 221 | +- ⚠️ No tools-capable model is registered at all → **warning only**, suggests `ollama pull gemma4:latest` |
| 222 | + |
| 223 | +Full flow and trade-offs in [📜 docs/GUIDE-DISCORD-BOT.md — case D](docs/GUIDE-DISCORD-BOT.md#케이스-d--모델이-너무-무거워-첫-응답-전에-watchdog-트리거-v021--v022-권장-모델-변경). |
| 224 | + |
193 | 225 | > ⚠️ **`run --rm`, not `exec`** — the `openclaw-cli` container's entrypoint (`node dist/index.js`) prints help and exits immediately on no-arg invocation (`docker ps -a` shows it as `Exited (1)`). `./openclaw setup` handles this internally; if you ever call it manually, always use `docker compose run --rm openclaw-cli <subcommand>`. |
194 | 226 | > |
195 | 227 | > Raw shell inside the container? `docker compose run --rm --entrypoint bash openclaw-cli`. |
|
0 commit comments