☰
个人游戏笔记本免费“养龙虾”(八)OpenClaw的openclaw.json文件配置与TaoToken接入
2026/9/25 17:34:34 网站建设 项目流程

1. 为什么你的 OpenClaw 对话模式调不动 skills

前几篇把 OpenClaw 在个人游戏笔记本上跑起来之后,webchat 里能聊天、命令行能执行agent-browser,但一到对话界面让它调 skills 就装死。我试过在 webchat 里发「帮我打开浏览器搜一下」,它回你一段礼貌的拒绝,命令行里同样的指令却跑得飞起。这不是模型笨,是openclaw.json里的权限没给够。

OpenClaw 的对话模式默认跑在严格沙箱里,只允许纯文本往返,文件读写、浏览器操作、shell 执行这些全被按住。命令行模式权限更高,所以同一个 agent 在两个入口表现完全不同。要打通这个差异,核心就落在两个配置块上:agents决定 agent 运行时能碰什么,gateway决定 webchat 这个入口怎么连、连上之后认不认你的 token。把这两块配明白,再通过 TaoToken 统一 Key 通道接上模型,本地就能跑通一套可复制的配置。

这篇给出一份可以直接抄的openclaw.json骨架,重点讲agents和gateway,然后演示用 TaoToken 的 API 通道完成接入验证。适合已经在 Win10+WSL2 里装好 OpenClaw、模型也拉下来了,但卡在「对话模式不干活」这一步的人。

2. TaoToken 前置:统一 Key 与 API 通道

OpenClaw 支持多种模型提供方,本地 ollama 是一种,走云端 API 也是一种。本地 6G 显存跑 2B 量化模型够聊天,但一旦要 agent 连续调工具、多轮推理,本地模型容易在工具调用格式上翻车。这时候把模型请求切到 TaoToken 的统一通道,用同一个 Key 管多个模型,配置上反而更省事。

TaoToken 在这里的角色是统一入口:你不需要在openclaw.json里为每个模型单独填一套 base_url 和 key,而是把 OpenAI 兼容的 base_url 指向 TaoToken 的 API 地址,Key 用同一个。OpenClaw 的models块里配好 provider,auth块里放 Key,agent 就能通过 gateway 把请求发出去。

需要提前准备的东西:

  • 一个 TaoToken 账号,登录后在控制台创建 API Key
  • 本地 OpenClaw 已经能启动,openclaw doctor不报致命错误
  • 知道你的openclaw.json路径,通常在~/.openclaw/openclaw.json

创建 Key 的入口在控制台的 API Keys 页面,拿到之后先别急着写进配置,用 curl 验一下通道通不通,避免配置写完才发现是 Key 的问题。

curl https://taotoken.net/api/v1/models \ -H "Authorization: Bearer sk-你的Key"

返回模型列表就说明通道没问题。这一步很关键,因为后面openclaw.json里任何一处写错,报错信息都不会直接告诉你「是 Key 错了」,而是 gateway 超时或者 401,排查起来绕远路。

3. 可复制的 openclaw.json 骨架

下面这份骨架是在自动生成配置的基础上补全的,重点标了agents和gateway两块。JSON5 格式支持注释,但为了复制方便,这里用标准 JSON 写法,你粘贴时把注释行删掉即可。

3.1 agents 块:把权限开到位

agents里的defaults管全局默认,list管具体 agent 实例。对话模式调不动 skills,八成是elevatedDefault没开,或者list里 agent 的tools.elevated没放行 webchat。

{ "agents": { "defaults": { "model": { "primary": "taotoken/qwen3.5-2b" }, "workspace": "/home/hello/.openclaw/workspace", "userTimezone": "Asia/Shanghai", "timeFormat": "24", "elevatedDefault": "on", "contextPruning": { "mode": "cache-ttl", "ttl": "1h", "keepLastAssistants": 3 }, "heartbeat": { "every": "30m", "model": "taotoken/qwen3.5-2b", "session": "main", "target": "none" } }, "list": [ { "id": "main", "default": true, "name": "Main", "workspace": "~/.openclaw/workspace", "model": "taotoken/qwen3.5-2b", "skills": [ "agent-browser", "healthcheck", "weather" ], "sandbox": { "mode": "off" }, "tools": { "allow": ["llm-task"], "elevated": { "enabled": true, "allowFrom": { "webchat": ["*"] } } } } ] } }

几个容易踩的点:elevatedDefault设成on是让 agent 默认具备提权能力,但真正决定 webchat 能不能用,是list里那个 agent 的tools.elevated.allowFrom.webchat。只开前者不开后者,对话模式照样被拦。sandbox.mode设off是本地自用场景的取舍,如果你后面要接外部渠道,这里得重新评估。

3.2 gateway 块:让 webchat 连得上

gateway管的是 webchat 这个入口的监听、认证和节点权限。自动生成的配置里port、bind、auth.token都有,但nodes.denyCommands默认会挡掉一批敏感命令,本地自用可以按需放开。

{ "gateway": { "port": 18789, "mode": "local", "bind": "loopback", "controlUi": { "enabled": true }, "auth": { "mode": "token", "token": "你的gateway-token" }, "nodes": { "denyCommands": [ "camera.snap", "screen.record", "sms.send" ] } } }

bind保持loopback意味着只有本机能连,这对个人笔记本场景是合适的。auth.token是 webchat 握手用的,和 TaoToken 的 API Key 是两回事,别混。nodes.denyCommands里我保留了摄像头和录屏的禁用,浏览器和 shell 相关的没放进去,这样 agent-browser 才能正常跑。

3.3 models 与 auth:接上 TaoToken

模型提供方这块,把 base_url 指向 TaoToken 的 API 地址,Key 放在auth里。OpenClaw 的 provider 命名可以自定义,这里用taotoken作为前缀。

{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "TAOTOKEN_API_KEY", "models": { "qwen3.5-2b": { "contextWindow": 104858, "maxTokens": 8192 } } } } }, "auth": { "taotoken": { "apiKey": "sk-你的Key" } } }

contextWindow和maxTokens这两个参数别贪大。6G 显存下contextWindow拉到十万级别,多轮对话后内存会顶到上限,系统直接崩。maxTokens设 8192 是留了工具调用返回的空间,再大推理速度掉得明显。

4. 验证请求:gateway 是否正常响应

配置写完,先跑openclaw doctor看有没有语法错误,然后重启 gateway。

openclaw doctor openclaw gateway restart

重启后确认 gateway 在监听:

curl http://127.0.0.1:18789/health

返回{"status":"ok"}之类的响应就说明 gateway 起来了。接着打开 webchat,在对话里发一条能触发 shell 的指令,比如:

!echo hello from openclaw

如果返回hello from openclaw,说明elevated权限生效了,对话模式能执行外部命令。再试一条 skills 指令:

帮我用 agent-browser 打开 example.com 并截图

agent 如果开始调agent-browser并返回执行结果,说明agents和gateway两块配置都通了。这时候模型请求走的是 TaoToken 通道,你可以在 TaoToken 控制台的用量页面看到对应的调用记录,确认请求确实从统一通道出去了。

验证模型对话是否正常,可以直接在 webchat 里问一个需要推理的问题,观察返回是否连贯。如果返回中断或者报 context 超限,回去调小contextWindow。

5. 本篇常见错排查

gateway 起不来,端口被占:18789被别的进程占了,openclaw gateway restart会报 bind 失败。换端口或者lsof -i :18789找到占用进程处理掉。

webchat 连不上,一直转圈:先确认gateway.auth.token和 webchat 里填的 token 一致。token 不一致时握手会静默失败,界面不报错但就是连不上。

对话模式还是调不动 skills:检查list里 agent 的tools.elevated.allowFrom.webchat是不是["*"]。只配defaults.elevatedDefault不够,实例级的放行才是最终生效的。

模型请求 401:TaoToken 的 Key 写错了,或者auth.taotoken.apiKey和models.providers.taotoken.apiKeyEnv指向的环境变量不一致。先用第 2 节的 curl 命令单独验 Key。

改了配置没生效:OpenClaw 不会热加载所有字段,改完必须openclaw gateway restart。建议每改一个字段就跑一次openclaw doctor,别攒一堆再重启,出错时定位困难。

agent-browser 执行超时:tools.exec.timeoutSec默认可能偏短,浏览器操作慢的时候会被掐断。适当调大,但别设成无限,避免卡死。

6. 接入与后续

配置跑通之后,日常改动的节奏是:改openclaw.json→openclaw doctor→openclaw gateway restart→ webchat 里发一条验证指令。这套流程走顺了,后面加 skills、调模型参数都不会再卡在权限上。

如果你还没创建 TaoToken 的 Key,去控制台的 API Keys 页面建一个,接入文档里有 OpenAI 兼容调用的完整说明。模型对话入口可以用来单独验证某个模型在 TaoToken 通道上的表现,不用每次都起 OpenClaw。长期跑编码类 agent 的话,Coding Plan 的额度模型更适合连续多轮工具调用,比按次计费省心。

下一篇会讲怎么在openclaw.json里配channels,把 webchat 之外的入口也接进来,以及session的隔离范围怎么选。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询