1. 从零跑通 OpenClaw环境依赖与首个任务场景OpenClaw 是一个把大模型能力接到本地工作流的开源 Agent 框架它能通过 gateway 后台服务统一管理模型、插件和会话让你在浏览器控制台或命令行里直接指挥模型操作网页、读写文件、对接飞书等渠道。它适合谁适合想把模型接入自己电脑、又不想被单一厂商绑死的开发者尤其是需要浏览器自动化、多模型切换、本地工作目录隔离的人。我这次的目标很明确在一台新机器上从零装好 OpenClaw跑通第一个任务并且把模型通道统一换成 TaoToken避免以后每换一个模型就改一次 Key。整个链路其实分四段装 Node 环境、全局装 OpenClaw、初始化配置、接入模型通道。听起来简单但真正卡人的地方在配置项和报错排查上。比如 gateway 起不来、browser 插件连不上、模型 provider 写错导致reading choices报错这些我都踩过。所以这篇不写虚的直接给可复制的命令和配置片段你跟着敲就能复现一套能用的环境。先说清楚 OpenClaw 的目录结构后面所有配置都围绕它转。主配置文件在~/.openclaw/openclaw.json工作目录默认是~/.openclaw/workspacegateway 日志在~/.openclaw/logs/gateway.log控制台地址是http://127.0.0.1:18789/。记住这四个路径排障时你会反复用到。macOS 上 gateway 是通过 LaunchAgent 常驻的服务文件在~/Library/LaunchAgents/ai.openclaw.gateway.plist想让它开机不自启就卸载 daemon。环境准备这块Node.js 建议用 20 LTS 以上npm 跟着 Node 一起装。装完先验证版本再全局装 OpenClaw。这里有个坑如果你用 pnpm 或 nvm 管理 Node全局 bin 路径可能不在 PATH 里openclaw命令会提示找不到。解决办法是用which openclaw确认路径或者直接用pnpm openclaw前缀调用。我实测下来npm 全局装最省事路径也最标准。首个任务我建议从最简单的开始让 OpenClaw 打开一个网页并总结内容。这个任务能同时验证 gateway、模型通道和 browser 插件三件事跑通了说明整条链路是通的。下面按步骤来。2. TaoToken 前置准备统一 Key 与 API 通道在接模型之前先把 TaoToken 的通道准备好。TaoToken 的作用是给你一个统一的 API 入口OpenClaw 里所有模型 provider 都指向它这样你换模型时只改 model id不用动 baseUrl 和 Key。官网在https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 地址是https://taotoken.net/api。第一步是拿 Key。进控制台创建 API Key路径在https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole。创建完复制出来先存到本地环境变量里别直接写进配置文件明文。我习惯这样export TAOTOKEN_API_KEYsk-你的key echo $TAOTOKEN_API_KEY第二步是确认你要用的模型 ID。TaoToken 的模型列表在文档里能查到路径是https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc。OpenClaw 的 provider 配置里baseUrl填https://taotoken.net/apiapiKey填你的 Keyapi字段填openai-completions因为 TaoToken 兼容 OpenAI 的 completions 协议。模型 id 就填你选的那个比如deepseek-v4-pro或claude-sonnet-4这类。这里要强调一个概念OpenClaw 的 provider 是「模型来源」agent 的primary是「默认用哪个」。你可以配多个 provider但 agent 只认一个 primary。所以接 TaoToken 时我建议直接把 TaoToken 配成一个 provider然后把 primary 指过去这样最干净。如果你还想保留本地 Ollama 作为备选也没问题OpenClaw 支持多 provider 并存。但注意 provider 的 key 名不能重复比如taotoken和ollama-local是两个不同的 provider。切换时用openclaw config set agents.defaults.model.primary命令改 primary 就行。还有一个前置动作确认 gateway 没在跑旧配置。如果你之前装过 OpenClaw 并改过配置先openclaw gateway stop改完再 start。不然旧配置会缓存新 provider 不生效。这个坑我踩过改了半天配置发现 gateway 还在用旧的重启一下就好了。3. 可复制配置openclaw.json 接入 TaoToken 完整片段这一节是核心直接给可复制的配置。OpenClaw 的配置文件是 JSON 格式路径~/.openclaw/openclaw.json。你可以用vim或cat查看改之前先备份cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak下面是我实测能跑通的配置片段重点是models.providers和agents.defaults两块。注意baseUrl和apiKey要换成你自己的apiKey建议用环境变量引用但 OpenClaw 的 JSON 不支持直接读环境变量所以要么写明文不推荐要么用启动脚本注入。我这里先写占位符你替换成真实 Key。{ models: { mode: merge, providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, api: openai-completions, models: [ { id: deepseek-v4-pro, name: DeepSeek V4 Pro via TaoToken, api: openai-completions, reasoning: true, input: [text], contextWindow: 128000, maxTokens: 8192 }, { id: claude-sonnet-4, name: Claude Sonnet 4 via TaoToken, api: openai-completions, reasoning: true, input: [text], contextWindow: 200000, maxTokens: 8192 } ] } } }, agents: { defaults: { model: { primary: taotoken/deepseek-v4-pro }, models: { taotoken/deepseek-v4-pro: {}, taotoken/claude-sonnet-4: {} }, workspace: /Users/你的用户名/.openclaw/workspace } } }这段配置的关键点models.mode设为merge表示新 provider 合并进现有配置不会覆盖其他 provider。providers.taotoken里的api必须是openai-completions这是 TaoToken 兼容的协议。agents.defaults.model.primary指向taotoken/deepseek-v4-pro格式是provider名/模型id。如果你还想保留本地 Ollama可以在providers里再加一个ollama-local: { baseUrl: http://127.0.0.1:11434/v1, apiKey: ollama, api: openai-completions, models: [ { id: qwen3:4b, name: Qwen3 4B Local, api: openai-completions, reasoning: false, input: [text], contextWindow: 16000, maxTokens: 4096 } ] }改完配置后一定要验证 JSON 格式不然 gateway 起不来openclaw config validate如果输出config is valid说明格式没问题。然后重启 gatewayopenclaw gateway restart重启后看日志确认模型加载成功openclaw logs --follow日志里应该出现类似agent model: taotoken/deepseek-v4-pro的行。如果没有说明 primary 没生效检查agents.defaults.model.primary的拼写。还有一个细节agents.defaults.models里列出的模型是「允许 agent 使用的模型白名单」。如果你只写了 primary 没写 models有些版本会报模型不可用。所以我把taotoken/deepseek-v4-pro和taotoken/claude-sonnet-4都列进去了。这个坑在旧版本里比较常见新版本可能宽松些但写上更保险。4. 验证请求跑通首个任务与成功结果配置改完gateway 重启后就可以验证了。先确认 gateway 状态openclaw gateway status正常输出会显示running: true和端口18789。然后打开浏览器控制台open http://127.0.0.1:18789/或者直接进 main 会话open http://127.0.0.1:18789/chat?sessionmain在聊天框里输入第一个任务打开 https://example.com 并总结页面内容如果模型通道和 browser 插件都正常你会看到 OpenClaw 先调用 browser 打开网页读取快照然后模型返回总结。这个过程在日志里能看到完整链路tail -f ~/.openclaw/logs/gateway.log日志里会依次出现browser open、browser snapshot、model request、model response这些行。如果卡在某一步就对应排查。命令行验证模型通道是否通可以用一个简单请求curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: deepseek-v4-pro, messages: [{role: user, content: 回复 OK}], max_tokens: 10 }如果返回里有choices字段和内容说明 TaoToken 通道是通的。这一步能帮你区分是 OpenClaw 配置问题还是通道问题。browser 插件单独验证openclaw browser doctor openclaw browser start openclaw browser open https://example.com openclaw browser snapshotbrowser doctor会输出插件状态、profile、transport 等信息。正常应该看到running: true和transport: cdp。如果显示gateway closed或connect EPERM说明 CLI 连不上 gateway通常是因为在受限终端里跑换普通 Terminal 就行。成功跑通首个任务后你可以试试更复杂的在当前网页点击 Learn more然后截图这个任务会触发 browser 的 click 和 screenshot 命令。如果也能跑通说明 browser 插件完全可用。最后确认一下默认模型openclaw config get agents.defaults.model.primary应该返回taotoken/deepseek-v4-pro。如果返回的是旧模型说明配置没生效重新openclaw gateway restart。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列我实际遇到过的报错和解决办法对照着查能省不少时间。401 Unauthorized模型请求返回 401通常是 API Key 错了或没传。检查openclaw.json里providers.taotoken.apiKey是否填对注意别有多余空格。如果你用环境变量注入确认启动 gateway 的 shell 里TAOTOKEN_API_KEY已 export。还有一种情况是 Key 过期或被禁用去控制台重新生成一个。local proxy failed / connect EPERM 127.0.0.1:18789这个报错说明 CLI 连不上 gateway。原因通常是 gateway 没跑或者你在沙盒终端里跑命令。先openclaw gateway status确认 gateway 在跑如果没跑就openclaw gateway start。如果 gateway 在跑但 CLI 还是连不上换普通 macOS Terminal 执行别在 IDE 内置终端或受限 shell 里跑。reading choices 报错完整报错类似Cannot read properties of undefined (reading choices)。这是模型返回格式不对OpenClaw 期望 OpenAI 格式的choices数组但实际返回的不是。原因通常是api字段填错了比如填了anthropic-messages但 TaoToken 走的是openai-completions。检查providers.taotoken.api是否为openai-completions。另一个原因是模型 id 不存在TaoToken 返回了错误对象而不是正常响应。去文档确认模型 id 拼写。OAuth token refresh failed / 504 Gateway Time-out这个报错通常出现在用 Qwen OAuth 的场景OAuth token refresh failed for qwen-portal。原因是旧的 OAuth 通道失效了。解决办法是切到 TaoToken 的 API Key 方式别用 OAuth。如果你配置里还有qwen-portal-auth插件残留删掉它openclaw config unset plugins.entries.qwen-portal-auth openclaw config unset plugins.allow --strict-json openclaw gateway restartplugin not found: qwen-portal-auth旧配置残留同上处理从plugins.entries和plugins.allow里移除。web_search provider brave 不可用报错web_search provider is not available: brave。这不影响模型和 browser只是搜索功能不可用。要么装 Brave provider要么把tools.web.search.provider改成别的。如果不需要搜索忽略即可。openclaw-lark channelConfigs warningplugin openclaw-lark: channel plugin manifest declares feishu without channelConfigs metadata。这是插件 manifest 的元数据警告不影响功能。要彻底修复得改插件的openclaw.plugin.json但一般可以忽略。gateway 起不来日志报 JSON parse error配置文件格式错了。用openclaw config validate检查或者用python -m json.tool ~/.openclaw/openclaw.json验证 JSON。常见错误是多了逗号、少了引号、括号不匹配。模型切换后不生效改完agents.defaults.model.primary后必须openclaw gateway restart。gateway 会缓存配置不重启不生效。重启后看日志确认新模型加载。排查通用思路先看日志openclaw logs --follow再确认 gateway 状态然后验证 TaoToken 通道用 curl最后检查 browser 插件用openclaw browser doctor。一层层排除基本能定位到问题。6. 长期使用建议与接入文档入口跑通之后日常使用就简单了。启动服务openclaw gateway start打开控制台http://127.0.0.1:18789/在聊天里直接下指令。命令行操作 browser 也很方便openclaw browser start openclaw browser open https://example.com openclaw browser snapshot如果你要长期用 OpenClaw 做编码或 Agent 任务建议把 TaoToken 的 Coding Plan 用起来路径在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan。它适合高频调用场景比按次计费更划算。模型对话验证可以去https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchat接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocAPI Key 管理在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys。安全方面再提醒一次openclaw.json里别写真实 Key 明文别把配置文件传到公开仓库。gateway 的 token 和飞书 app secret 也一样。改完认证信息记得openclaw gateway restart。最后给一个快速命令清单贴在手边随时查openclaw --version openclaw gateway start openclaw gateway restart openclaw gateway status openclaw logs --follow openclaw config validate openclaw plugins list openclaw browser doctor openclaw browser start openclaw browser status openclaw browser open https://example.com openclaw browser tabs openclaw browser snapshot这套环境我跑了一段时间稳定性没问题。关键是把 provider 配对接好剩下的就是下指令的事了。