1. OpenClaw 是什么:从 Gateway 到 Agent 的运行时全景
OpenClaw 是一个通过 Gateway 把即时通讯平台(Channel,比如 Telegram、Discord、Slack)和本地 AI Agent 连接起来的个人助手运行时。它能 24×7 常驻运行,不是简单的消息转发器,而是具备完整会话管理、并发控制、记忆检索和工具支持的 Agent 执行环境。适合谁?适合想把大模型能力接到自己日常聊天工具里、又希望数据留在本地的开发者;也适合想研究 Agent Loop、Skills、Hooks 这套扩展机制的技术人。
我先把它的五个功能区讲清楚,后面改 settings 才不会迷路。
Gateway 是中央控制平面,一个长期运行的守护进程,负责三件事:接收各渠道消息、决定消息路由给哪个 Agent、把回复投递回对应渠道。它默认把控制面板绑定到 loopback,只允许本机访问,也支持通过私有网络扩展远程访问。一个 Gateway 可以托管多个互相独立的 Agent。
Agent 是推理引擎,核心是 Agent Loop,一个“思考-行动”循环:提问 → 思考 → 规划 → 行动 → 观察 → 再思考 → 纠错 → 完成。LLM 负责思考,Tools 负责行动,执行结果作为观察反馈给 LLM,继续下一轮。Agent 的四个阶段是上下文组装、模型推理、工具执行、回复分发。上下文组装会把系统提示、会话历史、工作区文件(AGENTS.md、SOUL.md、TOOLS.md 等)拼成完整 Prompt 发给 LLM。
Skills 是能力扩展机制,遵循 AgentSkills 规范,用 Markdown 加脚本描述“什么时候用、怎么做、限制是什么”。Channels 负责连接各消息平台,把消息标准化成内部格式。Nodes 是运行在手机、笔记本、树莓派上的小智能体,提供摄像头、地理位置、系统通知等本地能力,形成“远程大脑、本地双手”的架构。
它的内核 Pi Agent 很精简,核心工具只有四个:bash 执行 shell 命令、read 读文件、write 写文件、edit 编辑文本文件,系统提示词约 1000 tokens。多 LLM 提供商支持是它的一大特点,模型选择用 provider/model 格式,比如zai/GLM-4.7、anthropic/claude-opus-4-5,也支持 Ollama、LM Studio 这类本地端点。
理解了这套结构,你就明白为什么接入配置要改在 settings 里:模型提供商、Base URL、API Key 这些都属于 Agent 运行时依赖的外部能力,改对了 Agent Loop 才能跑通。
2. 接入前的准备:TaoToken 的 Base URL 与 Key 怎么拿
在动手改 settings 之前,先把要用的三件套准备好:Base URL、API Key、Model ID。这三样是任何 OpenAI 兼容接入的通用要素,OpenClaw 的模型提供商配置也遵循这个逻辑。
TaoToken 的 API 地址是https://taotoken.net/api,这是 OpenAI 兼容的调用入口。你需要先去控制台创建一个 API Key,然后把它保存好——Key 只在创建时完整显示一次,关掉页面就看不到了。
具体操作路径是这样的:打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,进入控制台,在 API Keys 页面新建一个 Key。创建时可以给它起个名字,比如openclaw-local,方便以后区分用途。复制出来的 Key 通常以sk-开头,先贴到一个临时文本里。
Model ID 这块要注意,OpenClaw 用的是provider/model格式。你在 TaoToken 侧看到的模型名,需要按 OpenClaw 的 provider 配置映射进去。常见做法是把 TaoToken 当成一个 OpenAI 兼容的 provider,给它起个自定义名字,比如taotoken,然后在模型列表里填上你要用的模型 ID。
这里有个容易踩的坑:很多人以为 Base URL 要填到/v1后面,其实不同客户端处理方式不一样。OpenClaw 的 provider 配置里,baseUrl一般填到根路径,由客户端自己拼接/v1/chat/completions。所以你先按https://taotoken.net/api填,如果验证时报 404,再检查是不是路径拼接重复了。
另外,Key 的权限和额度也要确认。新创建的 Key 默认继承账户额度,如果你在控制台给 Key 设了单独的额度上限,记得留够测试用的量。测试阶段建议先用一个小额度 Key,跑通再换正式 Key。
准备好这三样之后,就可以进入 settings 的修改环节了。下面我会给出可直接复制的配置片段,你按自己的实际 Key 替换占位符即可。
3. 把 settings 改到 TaoToken:可复制的配置片段
OpenClaw 的模型提供商配置写在 settings 的models.providers下面。它的结构是:每个 provider 有baseUrl、apiKey、api类型,以及models数组。下面是一个完整的可复制片段,把 TaoToken 作为 OpenAI 兼容 provider 接入。
{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "api": "openai-completions", "models": [ { "id": "你的模型ID", "name": "TaoToken 主力模型", "contextWindow": 200000 } ] } } }, "agent": { "model": "taotoken/你的模型ID" } }这段配置里几个字段要重点解释。baseUrl填 TaoToken 的 API 根地址,不要带多余的斜杠。apiKey换成你在控制台创建的那个 Key。api字段填openai-completions,表示走 OpenAI 兼容的对话补全协议。models数组里每个模型要有id、name、contextWindow,id必须和你在 TaoToken 侧看到的模型标识一致。
agent.model这一行决定默认用哪个模型,格式是provider/modelId,也就是taotoken/你的模型ID。如果你有多个 Agent,可以在agents.list里给每个 Agent 单独指定模型,实现故障转移或按任务分流。
如果你用的是 TOML 格式的 settings,等价写法是这样:
[models.providers.taotoken] baseUrl = "https://taotoken.net/api" apiKey = "sk-你的TaoToken密钥" api = "openai-completions" [[models.providers.taotoken.models]] id = "你的模型ID" name = "TaoToken 主力模型" contextWindow = 200000 [agent] model = "taotoken/你的模型ID"改完配置后,需要重启 Gateway 让 settings 生效。如果你是用 Docker 跑的,命令类似docker compose restart openclaw-gateway;如果是本地进程,直接重启对应的服务即可。重启后先别急着发消息,先做连通性验证,确认配置真的被加载了。
这里提醒一个细节:settings 文件里如果有多个 provider,注意 JSON 的逗号别写错,尤其是数组和对象嵌套的地方。我见过不少人因为多了一个逗号导致整个 settings 解析失败,Gateway 起不来,报错信息还很不直观。
4. 验证请求:确认 Agent 真的走通了 TaoToken
配置改完、Gateway 重启之后,下一步是验证请求。验证分两层:先确认 Gateway 起来了,再确认模型调用真的打到了 TaoToken。
第一层,检查 Gateway 状态。OpenClaw 的 Gateway 默认监听ws://127.0.0.1:18789,你可以用它的 CLI 查看运行状态,或者直接看日志里有没有 provider 加载成功的记录。如果日志里出现类似provider taotoken loaded的字样,说明配置被正确解析了。
第二层,发一条测试消息。你可以在任意一个已连接的 Channel 里发一句简单的话,比如“你好,报一下你当前使用的模型”。如果 Agent 正常回复,并且回复内容符合预期,说明 Agent Loop 跑通了。更直接的验证方式是看 TaoToken 控制台的调用记录,那里会显示请求时间、模型、token 消耗。如果控制台里出现了对应的调用记录,就证明请求确实打到了 TaoToken。
如果你想用命令行直接验证,可以用 curl 模拟一次 OpenAI 兼容请求:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "只回复两个字:通了"}] }'如果返回的 JSON 里有choices数组,并且message.content是“通了”,说明 Key、Base URL、Model ID 三件套都对。这一步能帮你把 OpenClaw 配置问题和 TaoToken 侧问题分开定位——如果 curl 通了但 OpenClaw 不通,问题就在 settings;如果 curl 也不通,问题在 Key 或模型 ID。
验证成功后,建议把这次调用记录截图或记下时间,方便后面排查时对照。另外,第一次调用可能会有冷启动延迟,尤其是模型侧需要加载的时候,别因为等了几秒就以为失败了。
5. 常见报错排查:401、local proxy failed 与 reading choices
接入过程中最常见的几类报错,我按实际遇到的频率排一下,并给出定位思路。
第一类是 401 Unauthorized。这个基本就是 Key 的问题。可能原因有:Key 复制时多了空格或换行、Key 被禁用或删除、Key 的额度用完了、或者 Authorization 头格式不对。排查时先用上面那段 curl 单独测 Key,如果 curl 也 401,就去控制台确认 Key 状态;如果 curl 通了但 OpenClaw 401,检查 settings 里apiKey字段有没有被引号或转义符污染。
第二类是local proxy failed或连接被拒绝。这类报错通常出现在 Base URL 填错、网络不通、或者本地代理配置冲突的时候。先确认baseUrl是https://taotoken.net/api,没有多余路径。然后确认运行 OpenClaw 的环境能正常访问外网 HTTPS。如果你本地有 HTTP 代理环境变量,检查它有没有干扰请求。这类问题的一个快速判断方法是:在同一个环境里跑 curl,如果 curl 通而 OpenClaw 不通,多半是 OpenClaw 进程没继承到正确的网络环境。
第三类是reading choices相关的报错,比如cannot read property 'choices' of undefined。这通常意味着返回的响应结构不符合 OpenAI 兼容格式,可能原因有:Base URL 路径拼接错误导致返回了 HTML 错误页、模型 ID 写错导致返回了错误对象、或者api字段填错了协议类型。排查时把 OpenClaw 的日志级别调高,看它实际请求的完整 URL 和返回的原始内容。如果返回的是 HTML,基本就是路径问题;如果返回的 JSON 里没有choices,检查api字段是不是openai-completions。
第四类是 OAuth 或鉴权流程相关的报错。如果你在配置里混用了 OAuth 类 provider 和 API Key 类 provider,可能会出现鉴权方式冲突。OpenClaw 的 provider 配置里,API Key 类走apiKey字段,OAuth 类走另一套流程。确认你给 TaoToken 配的是apiKey而不是 OAuth 相关字段。
排查时有个通用原则:先隔离变量。用 curl 验证 TaoToken 侧,用最小 settings 验证 OpenClaw 侧,两边都通了再合并。这样能避免在多个变量之间来回猜。
6. 跑通之后:把 TaoToken 用顺的几个实用建议
跑通第一次调用只是开始,后面要让 OpenClaw 稳定用 TaoToken,有几个点值得注意。
第一,给不同 Agent 配不同模型。OpenClaw 支持多 Agent,每个 Agent 可以绑定自己的模型。你可以把日常对话类 Agent 配一个响应快的模型,把需要长上下文分析的任务配一个 contextWindow 大的模型。在agents.list里给每个 Agent 指定model字段就行,格式还是taotoken/模型ID。
第二,利用故障转移。OpenClaw 的模型配置支持故障转移,你可以在 provider 里配多个模型,主模型不可用时自动切到备用。这对 24×7 常驻的助手很实用,避免因为单个模型临时不可用导致整个 Agent 停摆。
第三,把 Key 管理好。不要在 settings 里硬编码长期 Key,测试用临时 Key,正式环境用单独创建的 Key,并且定期轮换。如果 OpenClaw 支持从环境变量读 Key,优先用环境变量,避免 Key 进版本库。
第四,关注调用量。TaoToken 控制台能看到调用记录和 token 消耗,定期看一眼,避免因为某个 Agent 循环调用把额度跑光。尤其是开了 heartbeat 的 Agent,定时任务如果设计不当,可能会产生预期外的调用。
第五,settings 改动后养成验证习惯。每次改完 provider 或 model 配置,先跑一次 curl 验证,再重启 Gateway,再看日志确认加载成功,最后发一条测试消息。这套动作花不了两分钟,但能省掉很多“改了没生效”的困惑。
如果你想把 OpenClaw 接到更多场景,可以去看 TaoToken 的接入文档,里面有不同客户端的配置示例。需要管理多个 Key 或查看用量,去控制台就行。想先试试模型对话效果,可以直接用模型对话页面发几条消息感受一下。长期跑编码类 Agent 的话,Coding Plan 会更合适。