

ClawdBot 是跑在 OpenClaw 框架上的 Discord AI Bot,能接各家 LLM。聽起來很美好,但配置這東西讓我踩了不少坑。
先講結論
一個能動的 ClawdBot 只需要搞定三件事:選對模型、設好認證、別留殘留配置。如果你的 bot 莫名噴 429,八成是第三點出問題。
兩份配置,別搞混了
ClawdBot 和 OpenClaw 各有各的配置檔,改錯邊等於白改:
~/.clawdbot/clawdbot.json— Discord Bot 專用~/.openclaw/openclaw.json— OpenClaw CLI/Gateway 用
我第一次踩坑就是改了 openclaw.json 然後納悶為什麼 Bot 行為沒變。別問我怎麼知道的。
配置的核心:模型 + 認證
整個 clawdbot.json 最關鍵的就兩塊。模型決定用誰的腦袋,認證決定怎麼連上去:
{
"agents": {
"defaults": {
"model": {
"primary": "openai-codex/gpt-5.2-codex"
}
}
},
"auth": {
"profiles": {
"openai-codex:default": {
"provider": "openai-codex",
"mode": "oauth"
}
}
}
}格式是 provider/model-id。常見的組合:
openai-codex/gpt-5.2-codex(oauth 認證)openai/gpt-4o(api_key)anthropic/claude-3-5-sonnet(api_key)google/gemini-2.0-flash(api_key)
不確定目前跑哪個模型?直接在 Discord 問它:「你現在用什麼模型?」它會老實回答。
血淚教訓:Gemini 429 地獄
某天 ClawdBot 突然開始瘋狂噴錯:
Agent failed before reply: All models failed (3):
google/gemini-2.0-flash: LLM error: { "error": { "code": 429 } }
我明明設的是 OpenAI 模型啊?查了半天才發現 auth.profiles 裡殘留了一組 google:default,系統在主模型失敗時 fallback 到 Gemini,然後 Gemini 也被打爆了。
修法很簡單但很容易漏:
- 砍掉
auth.profiles裡不用的 provider - 確認
models.providers是空的{} - 重啟 Gateway(改配置不重啟 = 沒改)
# 砍掉重來
taskkill /F /IM node.exe
cd ~/.clawdbot && pnpm openclaw gateway run這件事教會我一個原則:只留一個模型 provider。多留一個就多一個出錯的機會。
Discord 頻道設定
{
"channels": {
"discord": {
"enabled": true,
"token": "${DISCORD_BOT_TOKEN}",
"dm": {
"policy": "allowlist",
"allowFrom": ["your-user-id"]
}
}
}
}Token 用環境變數 ${ENV_VAR} 格式,不要硬寫在 JSON 裡。allowlist 限制誰能私訊 Bot——除非你想讓全世界都能跟你的 Bot 聊天。
最小可用配置(直接抄)
如果你只是想讓它跑起來,這是我精簡過的完整配置:
{
"env": { "shellEnv": { "enabled": true } },
"auth": {
"profiles": {
"openai-codex:default": {
"provider": "openai-codex",
"mode": "oauth"
}
}
},
"models": { "providers": {} },
"agents": {
"defaults": {
"model": { "primary": "openai-codex/gpt-5.2-codex" },
"contextTokens": 8192,
"timeoutSeconds": 300
}
},
"channels": {
"discord": {
"enabled": true,
"token": "${DISCORD_BOT_TOKEN}",
"dm": { "policy": "allowlist", "allowFrom": ["your-user-id"] }
}
},
"gateway": { "mode": "local" }
}注意 models.providers 刻意留空——就是要防止 fallback 亂跳。
日常維護備忘
- 改完配置一定要重啟 Gateway,不然就是在自嗨
- Gateway 日誌在
\tmp\openclaw\openclaw-*.log,出事先看這裡 - 如果同時跑 OpenClaw CLI 和 ClawdBot,兩邊的模型設定要一致,不然會精神分裂
配置檔就像保險——平常覺得煩,出事的時候才感恩當初多花了五分鐘整理。