1. 第一次打开 openclaw.json:从“会用”到“会改”的起点
你大概率已经跑通了 OpenClaw,终端里那个能聊天、能查资料的机器人让你挺有成就感。但过不了几天,手就开始痒了——~/.openclaw/openclaw.json这个文件,就像新车的引擎盖,总想掀开看看里面到底藏了什么。OpenClaw 配置文件采用 JSON5 格式,比标准 JSON 友好得多:可以写//注释、允许尾逗号、支持单引号。这意味着你可以把配置当“操作手册”来写,改一行、注一行,一个月后回来看还能秒懂当时为什么这么设。
这篇文章面向刚上手、准备从“会用”迈向“会改”的开发者。我会带你逐层拆解agents、models、channels、session等核心参数,给出可直接复制的配置片段与参数注释,并说明修改后如何重启验证、如何用日志确认参数真正生效。目标只有一个:让你安全完成第一次配置调整,而不是改完就炸、炸完就懵。
先明确一个前提:OpenClaw 本身不内置模型,它靠对接外部 API 来获得“脑子”。所以配置文件里最常折腾的两块,就是agents(机器人怎么思考)和models(用哪个脑子)。其余像channels、session、gateway属于“一次配好、长期受益”的部分。下面按实际修改频率从高到低展开。
2. TaoToken 统一 Key 通道:给 OpenClaw 接上稳定模型入口
在改models.providers之前,得先解决一个现实问题:模型 API Key 从哪来、怎么管。如果你同时用 Claude、GPT、DeepSeek 等多个模型,每个厂商一个 Key、一套计费、一套限流,配置文件里会塞满各种apiKey字段,换一个模型就要改一次配置,非常容易出错。
TaoToken 在这里的角色是统一 Key 通道:你只需要一个 Key,就能在 OpenClaw 里对接多个模型。它的 API 地址是https://taotoken.net/api,兼容 OpenAI 的openai-completions调用模式,所以 OpenClaw 的models.providers里可以直接按 OpenAI 兼容格式填写。官网入口在https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,注册后在控制台创建 API Key 即可。
具体操作路径:进入控制台https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite,在 API Keys 页面https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite生成 Key。拿到 Key 后,OpenClaw 配置里只需要填一次baseUrl和apiKey,后续换模型只改models数组里的id,不用再动 Key。
这里要强调一个配置原则:OpenClaw 的models.providers支持多个 provider 并存。你可以把 TaoToken 作为一个 provider,把其他直连服务作为备用 provider。这样主通道出问题时,agents.defaults.model.fallbacks能自动切换,机器人不会直接“失联”。对于长期跑编码任务或 Agent 场景,建议搭配 Coding Planhttps://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,把模型调用额度集中管理,避免多个 Key 分散计费导致对账困难。
如果你还没决定用哪个模型,可以先在模型对话页https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite试跑几个 prompt,确认输出风格和响应速度符合预期,再写进配置文件。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有完整的 Base URL、鉴权方式和模型 ID 列表,配置前建议对照一遍。
3. 可复制配置:agents 与 models 参数逐项拆解
下面这段配置可以直接复制到~/.openclaw/openclaw.json,我按“改哪里、为什么改、不改会怎样”逐项注释。注意 JSON5 允许注释和尾逗号,所以你可以放心保留这些说明。
{ // ========== 1. Agent 配置区:机器人怎么思考 ========== "agents": { "defaults": { // 工作目录:机器人读写文件的地方,保持默认即可 "workspace": "~/.openclaw/workspace", // 模型:主模型 + 备用模型 "model": { // 主模型,通过 TaoToken 统一通道调用 "primary": "anthropic/claude-sonnet-4-5", // 主模型不可用时自动切换 "fallbacks": ["openai/gpt-5.2"] }, // 温度:越高越“发散”,越低越“听话” // 日常总结/代码场景建议 0.2,创意写作可到 0.7 "temperature": 0.2, // 心跳:让机器人在后台定期干活 "heartbeat": { "every": "30m", // 每 30 分钟一次 "target": "last" // 结果发回最后聊天的窗口 }, // 沙箱:安全隔离,防止机器人误删文件 // 新手推荐 non-main,非核心任务在隔离环境跑 "sandbox": { "mode": "non-main" } } }, // ========== 2. 模型配置区:用哪个脑子 ========== "models": { "providers": { // TaoToken 统一 Key 通道 "taotoken": { "baseUrl": "https://taotoken.net/api", // 注意:不要多加 /v1 "apiKey": "sk-你的TaoToken密钥", // 从控制台复制,别漏 sk- 前缀 "api": "openai-completions", // OpenAI 兼容模式 "models": [ { "id": "anthropic/claude-sonnet-4-5", // 模型 ID 必须一字不差 "name": "Claude Sonnet 4.5" }, { "id": "openai/gpt-5.2", "name": "GPT-5.2" } ] } } }, // ========== 3. 渠道配置区:在哪聊天 ========== "channels": { "telegram": { "enabled": true, "botToken": "123456:ABC-DEF1234", // BotFather 给的 token // 白名单:只允许这些用户私聊,防止被爬虫扫到刷额度 "allowFrom": ["+8613912345678"], "groups": { "*": { "requireMention": true } // 群里必须 @ 机器人才回复 }, "dmPolicy": "pairing" // 新用户需配对码确认 } }, // ========== 4. 会话配置区:记忆力控制 ========== "session": { "dmScope": "per-channel-peer", // 每个用户独立上下文 "reset": { "mode": "daily", // 每天重置一次 "atHour": 4 // 凌晨 4 点清空 }, "threadBindings": { "enabled": true, "idleHours": 24 // 线程 24 小时无活动自动关闭 } } }几个关键点单独说明。baseUrl填https://taotoken.net/api即可,不要自作主张加/v1,OpenClaw 的openai-completions模式会自动拼接路径。apiKey从 TaoToken 控制台复制时,注意不要漏掉sk-前缀,也不要在末尾多复制空格。models[].id必须和 TaoToken 文档里列出的模型 ID 完全一致,大小写、连字符都不能错。
temperature这个参数值得多调几次。我试过设成 1.0 让它写总结,结果输出了一首诗;调到 0.2 后逻辑严谨、Token 消耗也明显下降。sandbox.mode设为non-main后,非核心任务在隔离环境执行,即使机器人误操作也不会直接动到你主目录的文件。allowFrom和dmPolicy是“钱袋子”防线,不配的话任何知道你机器人账号的人都能调用,费用全记你账上。
4. 验证请求:改完配置后如何确认参数生效
改完配置不要直接关掉编辑器就完事。OpenClaw 支持热重载,大部分参数(如temperature、model.primary)保存后立即生效,但gateway.port、gateway.reload这类必须重启。验证流程分三步。
第一步,语法检查。JSON5 虽然宽松,但括号不匹配、引号缺失仍会导致解析失败。运行:
openclaw doctor --fix这个命令会自动检测语法错误、路径错误,并在修复前备份原配置。升级版本后我必跑一次,能省掉大量排查时间。
第二步,如果改了必须重启的配置,执行:
systemctl --user restart openclaw-gateway # 或者 openclaw gateway restart第三步,看日志确认参数生效。重启后跟踪日志:
journalctl --user -u openclaw-gateway -f在日志里搜索你刚改的关键词,比如temperature、primary model、provider taotoken。如果看到类似loaded provider taotoken with 2 models或agent defaults applied: temperature=0.2的输出,说明配置已被正确读取。如果日志里出现provider taotoken not found或invalid model id,说明models.providers的键名和agents.defaults.model.primary里的前缀对不上,回去检查拼写。
再做一个端到端验证:在 Telegram 里给机器人发一条消息,问一个需要逻辑推理的问题。如果回复风格明显更“收敛”、不再发散,说明temperature生效了。如果回复里带上了模型名称(部分配置会回显),可以确认主模型切换成功。验证模型本身是否可用,也可以直接在模型对话页https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite用同一个 prompt 对比输出,排除是 OpenClaw 配置问题还是模型通道问题。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
配置改错时,报错信息往往不够直白。下面按真实遇到的频率排列,每条给出定位方法和修复动作。
401 Unauthorized:最常见。原因通常是apiKey填错、漏了sk-前缀、或者 Key 已过期。先检查models.providers.taotoken.apiKey字段,确认没有多余空格和换行。然后去 TaoToken 控制台https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite确认 Key 状态是否正常。如果 Key 没问题,检查baseUrl是否误写成了https://taotoken.net/api/v1,多出的/v1会导致鉴权路径错误。
local proxy failed:这个报错通常出现在channels.telegram.proxy配置了本地代理但代理服务未启动时。先确认代理进程在运行,再检查端口是否一致。如果你不需要代理,直接删掉proxy字段即可。注意 OpenClaw 的代理配置只影响渠道连接,不影响模型 API 调用,两者是独立的。
reading choices:这个报错说明模型返回的响应结构不符合openai-completions预期。常见原因是api字段填成了anthropic-messages或其他模式,但实际调用的模型不支持该模式。把api改回openai-completions,并确认models[].id在 TaoToken 文档的兼容列表里。如果仍然报错,检查baseUrl是否指向了正确的 API 根路径。
OAuth 相关报错:如果你在配置里启用了需要 OAuth 的 provider,但未完成授权流程,会看到OAuth token missing或refresh failed。OpenClaw 的 OAuth 配置和 API Key 配置是两套体系,不要混用。对于 TaoToken 统一 Key 通道,不需要 OAuth,直接用apiKey字段即可。如果你同时配置了 OAuth provider 和 Key provider,确保agents.defaults.model.primary指向的是 Key provider 下的模型 ID。
排查通用原则:先跑openclaw doctor --fix,再看日志定位具体字段,最后用最小配置(只保留一个 provider、一个模型)逐步加回,确认是哪一行引入的问题。改配置前养成备份习惯:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak这样即使改崩了,也能一条命令回滚。
6. 长期编码与 Agent 场景:把配置调成顺手的工具
当你熟悉了agents和models的基本参数后,可以针对长期编码或 Agent 任务做进一步调整。编码场景建议把temperature压到 0.1–0.2,减少模型“自由发挥”导致的代码风格漂移。heartbeat.every可以设为15m,让机器人在后台定期检查任务队列或拉取代码变更。sandbox.mode保持non-main,避免 Agent 在执行 shell 命令时影响主环境。
如果你跑的是多步 Agent 任务,session.dmScope设为per-channel-peer能让每个用户拥有独立上下文,避免不同任务的记忆互相污染。session.reset.mode设为daily并在凌晨低峰期重置,可以控制上下文长度、降低 Token 消耗。对于需要长期记忆的场景,可以把reset.mode改为manual,完全由你决定何时清空。
模型通道方面,长期编码任务建议使用 Coding Planhttps://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,把额度集中管理,避免多个 Key 分散导致限流。Claude Code 接入场景可以参考https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite,里面有针对 Anthropic 兼容模式的配置说明。如果你用的是 Cline MCP 或 Codex,注意auth.json里的 Base URL、Key、Model ID 三件套要和 OpenClaw 配置保持一致,否则会出现“编辑器能跑、OpenClaw 跑不通”的割裂情况。
最后提醒一点:配置文件里的注释是你的长期资产。每次修改都写上日期和原因,比如// 2026.03.13 新增 fallback,主模型限流时自动切换。一个月后回来看,你会感谢当时写注释的自己。改错了也没关系,备份文件加doctor --fix能兜住绝大多数问题。去把temperature调到 0.5 试试,或者换一个模型 ID 跑一轮,你会发现 OpenClaw 比想象中更耐造。