1. Docker 里跑通 OpenClaw 之后,模型通道怎么接
OpenClaw 是一个可以自托管的智能体网关,跑起来之后能接企业微信、Web UI、CLI 多种入口,适合想把 Agent 能力落到自己服务器上的开发者。用 Docker 部署 OpenClaw 的好处是环境隔离、重启方便,但很多人卡在最后一步:容器起来了,Web UI 也能打开,可模型请求发不出去,或者 Key 散落在各个 Agent 配置里,换一次就得改一圈。
这篇就聚焦这个环节。假设你已经按官方 Docker 手册把openclaw-gateway容器跑起来了,接下来要做的,是在 OpenClaw 的config.toml里把模型通道统一指向 TaoToken 的 API 地址,然后用容器内的curl验证请求真的能通。目标很明确:一次配置完成,请求可达,日志里能看到正常的响应状态。
适合谁看:已经在服务器上跑通 OpenClaw 容器、手里有 TaoToken API Key、想让所有 Agent 共用一条模型通道的人。如果你还没拿到 Key,先去控制台建一个,后面配置里要用。
TaoToken 在这里的角色是统一的模型接入层。你不需要在 OpenClaw 里为每个模型单独配一套凭证,只要把base_url指向https://taotoken.net/api,Key 填进去,OpenClaw 发出的请求就会走这条通道。对 Docker 部署来说,这意味着你改一处配置、重启一次容器,所有 Agent 的模型调用就都切换过来了。
2. 前置准备:Key、目录与容器状态确认
动手改配置之前,先把三件事确认清楚,能省掉后面一半的排查时间。
第一件是 API Key。登录 TaoToken 控制台,在 API Keys 页面创建一个新 Key,复制下来先存到安全的地方。这个 Key 后面要写进config.toml,注意别提交到 Git 仓库里。控制台地址是https://taotoken.net/console,API Keys 页面是https://taotoken.net/api-keys。
第二件是确认 OpenClaw 的配置目录。Docker 部署下,OpenClaw 的配置通常挂载在宿主机的~/.openclaw/目录,容器内对应/home/node/.openclaw/。你可以先看一眼:
ls -la ~/.openclaw/如果里面有openclaw.json,说明配置目录已经挂载好了。config.toml就放在同一层,和openclaw.json平级。
第三件是确认容器在跑:
docker ps | grep openclaw正常应该能看到openclaw-openclaw-gateway-1这个容器处于Up状态。如果没起来,先docker compose logs openclaw-gateway看日志,把容器问题解决掉再往下走。
注意:改
config.toml之后必须重启容器才生效,OpenClaw 不会热加载这个文件。重启命令后面会给。
3. config.toml 可复制骨架:base_url 与 Key 占位
OpenClaw 的模型接入配置写在config.toml里。下面这份骨架可以直接复制,把YOUR_TAOTOKEN_API_KEY换成你自己的 Key 就行。
# ~/.openclaw/config.toml # OpenClaw 模型通道配置:统一走 TaoToken [model] # 默认使用的模型,按你实际需要的填 default = "claude-sonnet-4-20250514" [model.providers.taotoken] # 关键:base_url 指向 TaoToken 的 API 地址 base_url = "https://taotoken.net/api" # Key 占位,替换成控制台创建的真实 Key api_key = "YOUR_TAOTOKEN_API_KEY" # 协议类型,OpenClaw 走 OpenAI 兼容格式 type = "openai" # 如果需要在多个 Agent 之间共用这条通道, # 在各自的 agent 配置里引用 provider 名称即可 [agents.default] provider = "taotoken" model = "claude-sonnet-4-20250514"几个参数说明一下。base_url必须是https://taotoken.net/api,注意结尾不要多加斜杠,OpenClaw 拼接路径时对结尾斜杠敏感。type填openai,因为 TaoToken 提供的是 OpenAI 兼容接口,OpenClaw 用这个协议去发请求。api_key就是你在控制台建的那个 Key。
如果你有多个 Agent,比如一个跑企业微信、一个跑 CLI,可以在[agents.xxx]里分别指定provider = "taotoken",这样它们共用同一个 provider 定义,Key 只维护一份。改 Key 的时候只动[model.providers.taotoken]这一处。
写文件的时候用你顺手的编辑器:
vim ~/.openclaw/config.toml保存后,重启容器让配置生效:
cd ~/openclaw docker compose restart openclaw-gateway等几秒,确认容器重新起来:
docker ps | grep openclaw4. 容器内 curl 验证与日志排查
配置写完不代表请求能通,最稳的验证方式是进容器里直接发一个请求。这一步能区分「配置问题」和「网络问题」。
先进容器:
docker exec -it openclaw-openclaw-gateway-1 bash进去之后,用curl打 TaoToken 的接口。把下面的 Key 换成你自己的:
curl -s -o /dev/null -w "%{http_code}\n" \ https://taotoken.net/api/v1/models \ -H "Authorization: Bearer YOUR_TAOTOKEN_API_KEY"如果返回200,说明容器到 TaoToken 的网络是通的,Key 也有效。如果返回401,是 Key 不对或者没带上;返回403通常是 Key 权限问题;如果卡住不动或者报连接超时,那就是容器出网有问题,往下看排查部分。
再进一步,直接发一个对话请求,确认模型通道真的能用:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer YOUR_TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'正常会返回一段 JSON,里面有choices字段和模型回复内容。看到这个,说明从容器内部到 TaoToken 的整条链路是通的。
然后回到宿主机,看 OpenClaw 自己的日志,确认它发请求时没报错:
docker compose logs -f openclaw-gateway在 Web UI 或者企业微信里触发一次对话,观察日志里有没有provider相关的报错。如果日志里出现connection refused或者timeout,对照下一节的排查表处理。
5. 本篇常见错排查
配置和验证过程中,下面这几个错最常见,基本能覆盖大部分情况。
报错一:401 Unauthorized。九成是 Key 写错了,或者config.toml里api_key那行有空格、引号没配对。检查一下 Key 是不是完整复制,前后有没有多余字符。另外确认你改的是容器实际读取的那个config.toml,别改到了别的路径下的文件。
报错二:容器内 curl 超时。说明容器出网有问题。先确认宿主机本身能访问外网,再检查 Docker 的网络模式。如果是自定义 bridge 网络,确认 DNS 配置正常:
docker exec -it openclaw-openclaw-gateway-1 cat /etc/resolv.conf如果 DNS 不对,可以在docker-compose.yml里给服务加dns配置,或者用宿主机的网络模式重启。
报错三:改了 config.toml 但没生效。OpenClaw 不热加载配置,必须重启容器。如果你只docker restart了但配置目录没挂载对,容器读的还是旧文件。确认挂载:
docker inspect openclaw-openclaw-gateway-1 | grep -A5 Mounts看~/.openclaw是不是正确挂到了容器内的/home/node/.openclaw。
报错四:base_url结尾多了斜杠。比如写成https://taotoken.net/api/,OpenClaw 拼接/v1/chat/completions时可能变成双斜杠,部分网关会拒绝。统一去掉结尾斜杠。
报错五:模型名不对。default和model字段填的模型名必须是 TaoToken 支持的。如果返回model not found,去模型对话页面确认一下可用模型列表,或者先用curl打/v1/models看返回里有哪些。
排查的时候有个小技巧:先在容器内用curl确认网络和 Key 没问题,再去看 OpenClaw 日志。这样能把问题范围缩小到「配置层」还是「网络层」,不用两头猜。
6. 把通道固定下来,后面就省心了
配置这件事,一次做对,后面换模型、加 Agent 都只是改一个字段的事。我自己的做法是,把config.toml里的 provider 定义当成唯一的 Key 入口,所有 Agent 都引用它,这样 Key 轮换的时候只动一行,重启一次容器就完事。
如果你后面要长期跑编码类 Agent,或者想让多个 Agent 共用额度,可以了解一下 Coding Plan,它更适合这种持续调用的场景。想先验证模型通不通,直接去模型对话页面发一条消息最快。Key 的管理和新建都在 API Keys 页面,接入细节可以翻接入文档。
把base_url固定成https://taotoken.net/api,Key 填进config.toml,容器内curl返回 200,这三步走完,Docker 里的 OpenClaw 就算真正接上模型通道了。剩下的就是按你的业务去配 Agent 和技能,通道这层不用再操心。