/install hobohan-model-config
Model Configuration
Everything about configuring models in OpenClaw — providers, routing, sessions, and cron pinning. Learned the hard way through many errors.
Provider setup
Adding a provider
Edit openclaw.json:
{
"providers": {
"deepseek": {
"apiKey": "sk-...",
"baseUrl": "https://api.deepseek.com"
}
}
}
If using API key from file: reference env var or key file. Direct env var injection via ~/.openclaw/openclaw.json.
Never restart gateway and immediately assume the model is live. Check after restart.
Checking what model is active
openclaw status # shows current model
session_status # shows session-level model
Provider priority
If multiple providers offer the same model, Gateway resolves via: plugin providers > config providers > default fallback chain. A DeepSeek plugin can sit alongside a MiniMax config provider — the plugin wins if enabled.
The session model lock (most common mistake)
The trap: When you change the default model in config, the current Telegram session stays locked to its birth model — the model that was default when the session was created.
Session created at 18:05 → model = MiniMax (was default)
Gateway restarted at 18:06 → config now says DeepSeek
Session at 18:07 → STILL MiniMax ← TRAP
New session created at 18:08 → DeepSeek ← Correct
The fix:
- Existing sessions keep their model until the session expires or is reset
/model \x3Cprovider/model>— force-switches the current session immediately- For Telegram: sending a message to a brand new session (or after session expiry) picks up the current default
- Closing and reopening a Telegram chat does NOT reset the session (Telegram chats can't be "closed")
Lesson: After changing model config, either:
- Send
/model deepseek/deepseek-v4-flashto switch running session - Wait for session to expire naturally (~24h inactivity)
- Accept that cron sessions (always new) will use new config immediately
Cron model pinning (second most common mistake)
Time-sensitive cron jobs MUST pin the model explicitly. The global default can get stuck on model cold-start resolution (MiniMax especially bad — up to 300s delay).
{
"payload": {
"kind": "agentTurn",
"message": "...",
"timeoutSeconds": 600,
"model": "deepseek/deepseek-v4-flash"
}
}
Crons that ALWAYS need pinning:
| Cron | Why |
|---|---|
| Expense check-ins (10am, 1:30pm, 10pm) | Time-sensitive, Hobo waits for them |
| Expense sync (9:30am) | Must run on schedule |
| News briefings (7:30am, 3pm, 10pm) | Hobo expects them on time |
| Investment check-in (Sat 10am) | Weekly, must fire |
| Investment sync (Sat 11am) | Same |
| Transport check-in (9am) | Previous-day ask |
Crons that don't need pinning:
- Dashboard regeneration, token tracker, backup, security audit — delay is harmless
Failure symptom: lastDiagnostics.summary = "cron: job execution timed out (last phase: model-call-started)". Fix: pin model.
dmScope (multi-agent routing)
In multi-agent setups (Patch + Muthu), messages can route to the wrong agent's session unless dmScope is set correctly:
{
"telegram": {
"dmScope": "per-channel-peer-account"
}
}
per-channel-peer-account — each Telegram bot + user combo gets its own session. Without this, messages from both bots could land in the same session.
Symptom of wrong dmScope: Hobo messages Patch but Muthu's session receives them, or vice versa.
Plugins vs config providers
- Plugins (installed via ClawHub or
openclaw): can introduce new model providers - Config providers (in
openclaw.json): directly configured API endpoints - Both can coexist. Plugin providers take priority over config providers for same model.
To check loaded providers:
openclaw plugin list | grep -i model
grep -A5 '"providers"' ~/.openclaw/openclaw.json
Model switching during session
| Method | Scope | Persistence |
|---|---|---|
/model deepseek/deepseek-v4-flash |
Current session only | Until session expires |
Change "model" in openclaw.json |
All new sessions | Permanent (requires gateway restart) |
Pin "model" in cron payload |
That cron only | Permanent until changed |
Safety checklist (when changing models)
- Edit
openclaw.json→ add/change provider + model - Restart gateway:
openclaw gateway restart - CHECK:
openclaw status— confirms the new model is live - CHECK: Send a test message — verify which model responds
- If wrong model responds →
/model \x3Ccorrect/provider/model> - Update cron pinning for any time-sensitive crons
- Verify cron test runs pick up the new model (check lastRunStatus)
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install hobohan-model-config - 安装完成后,直接呼叫该 Skill 的名称或使用
/hobohan-model-config触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Model Config 是什么?
Configure and troubleshoot OpenClaw model providers, routing, session model locks, cron model pinning, and provider switching. Lessons from real failures. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 27 次。
如何安装 Model Config?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install hobohan-model-config」即可一键安装,无需额外配置。
Model Config 是免费的吗?
是的,Model Config 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Model Config 支持哪些平台?
Model Config 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Model Config?
由 Hobohan(@hohobohan)开发并维护,当前版本 v1.0.0。