1. 为什么企业都在折腾这只“小龙虾”
OpenClaw 是 2026 年最火的开源智能体框架,一句话概括:它让 AI 从“只会聊天”变成“能动手干活”。普通对话模型只能给你一段文字,而 OpenClaw 可以调用工具、操作文件、跑流程、对接企业微信和公众号,把重复劳动真正接过去。它适合谁?适合想把客服、运营、报表、办公自动化落到实处的团队,尤其是没有大模型自研能力、但希望快速跑通 AI 闭环的中小企业。
我这次的目标很明确:用 Docker 把 OpenClaw 跑起来,再通过 TaoToken 统一 Key 和 API 通道,完成settings.json与config.toml的骨架配置,最后用一条可复制的请求验证连通性。整套流程走完,你就能拿到一个能接入企业业务的最小闭环。下面按部署、配置、验证、排障的顺序展开,每一步都给到可直接复制的命令和参数。
2. TaoToken 前置准备:统一 Key 与 API 通道
OpenClaw 本身不绑定某一家模型服务,它通过配置文件读取 API 地址和密钥。如果你每个模型都单独申请 Key、单独改地址,后期维护会很乱。TaoToken 的作用就是把这些通道统一起来:一个 Key、一个 API 入口,模型切换只改配置里的模型名,不用动密钥和地址。
你需要先拿到两样东西:API Key 和 API 地址。API 地址固定为https://taotoken.net/api,注意这个地址不带任何查询参数。Key 在控制台的 API Keys 页面创建,创建后只显示一次,建议直接写进环境变量而不是硬编码进配置文件。
创建 Key 的入口在这里:
控制台 API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
接入文档(配置字段含义、模型名列表都在这):
接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
如果你只是想先验证模型能不能通,不想碰 OpenClaw 的配置文件,可以直接用模型对话页面测一条:
模型对话:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite
长期跑编码和 Agent 任务的话,Coding Plan 更划算,后面配置里模型名可以直接复用:
Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
拿到 Key 之后,先写进 shell 环境,避免明文散落在多个文件里:
export TAOTOKEN_API_KEY="sk-你的实际Key" export TAOTOKEN_BASE_URL="https://taotoken.net/api"这样后续 Docker 启动时用-e传入即可,配置文件里只引用变量名。
3. Docker 部署 OpenClaw 与配置文件骨架
3.1 拉镜像与目录规划
先建一个工作目录,把配置和数据分开挂载,容器重建时数据不丢:
mkdir -p /opt/openclaw/{config,data,logs} cd /opt/openclaw docker pull openclaw/openclaw:2026-latest目录约定:config放settings.json和config.toml,data放会话与知识库,logs放运行日志。挂载这三个目录,升级镜像时只换镜像不动数据。
3.2 settings.json 骨架
settings.json负责运行时行为,重点是模型通道和入口开关。下面这份骨架可以直接用,把api_key和base_url指向 TaoToken:
{ "runtime": { "name": "openclaw-enterprise", "log_level": "info", "data_dir": "/app/data", "log_dir": "/app/logs" }, "model": { "provider": "openai-compatible", "base_url": "https://taotoken.net/api", "api_key": "${TAOTOKEN_API_KEY}", "default_model": "claude-sonnet-4-20250514", "fallback_models": ["gpt-4o", "claude-3-5-sonnet-20241022"], "timeout_seconds": 60, "max_retries": 2 }, "channels": { "wecom": { "enabled": true, "token": "${WECOM_TOKEN}", "aes_key": "${WECOM_AES_KEY}" }, "wechat_mp": { "enabled": true, "app_id": "${WX_APPID}", "app_secret": "${WX_SECRET}" } }, "sandbox": { "enabled": true, "allow_shell": false, "allow_file_write": true, "workspace": "/app/data/workspace" } }几个关键点:provider用openai-compatible,因为 TaoToken 的 API 是兼容 OpenAI 协议的,OpenClaw 直接按这个协议发请求即可;fallback_models是主模型超时或报错时的备选,多模型自动切换靠它;sandbox一定要开,企业场景下allow_shell建议保持false,只放开文件读写。
3.3 config.toml 骨架
config.toml负责技能、插件和业务入口的声明。企业微信和公众号的对接参数放这里:
[agent] name = "enterprise-assistant" system_prompt = "你是企业智能助手,负责客服接待、订单查询与工单流转。" max_turns = 20 [skills] enabled = ["faq", "order_query", "ticket", "report"] [skills.faq] knowledge_path = "/app/data/knowledge/faq.md" [skills.order_query] endpoint = "https://internal.example.com/api/order" auth_header = "Bearer ${INTERNAL_API_TOKEN}" [plugins.wecom] callback_path = "/webhook/wecom" port = 8080 [plugins.wechat_mp] callback_path = "/webhook/mp" port = 8081skills里声明的是 OpenClaw 能调用的能力,faq读本地知识库,order_query打内部接口,ticket建工单,report出报表。企业微信和公众号各占一个回调路径和端口,部署时记得在防火墙放行。
3.4 启动容器
把环境变量和目录一起传进去:
docker run -d --name openclaw \ -p 8080:8080 -p 8081:8081 \ -e TAOTOKEN_API_KEY="${TAOTOKEN_API_KEY}" \ -e WECOM_TOKEN="你的企业微信Token" \ -e WECOM_AES_KEY="你的EncodingAESKey" \ -e WX_APPID="你的公众号AppID" \ -e WX_SECRET="你的公众号Secret" \ -v /opt/openclaw/config:/app/config \ -v /opt/openclaw/data:/app/data \ -v /opt/openclaw/logs:/app/logs \ openclaw/openclaw:2026-latest启动后先看日志确认没有配置解析错误:
docker logs -f openclaw正常会看到model provider initialized和channels loaded: wecom, wechat_mp两行,说明模型通道和业务入口都读到了。
4. 验证请求:确认模型通道真的通了
配置写完不代表通了,必须发一条真实请求验证。OpenClaw 自带一个诊断命令,可以直接打模型通道:
docker exec -it openclaw openclaw doctor --check model预期输出类似:
[ok] base_url reachable: https://taotoken.net/api [ok] auth passed [ok] model claude-sonnet-4-20250514 responded in 1.8s [ok] fallback model gpt-4o available如果auth passed没出现,八成是 Key 没传进容器,用docker exec openclaw env | grep TAOTOKEN确认变量存在。
再发一条业务级请求,模拟公众号自动回复:
curl -X POST http://localhost:8080/webhook/mp \ -H "Content-Type: application/json" \ -d '{"msg_type":"text","content":"你们的退货政策是什么?"}'返回里应该带reply字段,内容是知识库里faq.md匹配到的答案。这一步通了,说明“公众号入口 → OpenClaw → TaoToken 模型通道 → 知识库”整条链路是活的。企业微信同理,把路径换成/webhook/wecom即可。
想单独确认某个模型名是否可用,不用改配置,直接在模型对话页面选同名模型发一句话,能回就说明模型名没写错:
模型对话验证:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite
5. 本篇常见错排查
5.1 401 或 auth failed
最常见的原因是 Key 没进容器。settings.json里写的是${TAOTOKEN_API_KEY},如果启动时没加-e TAOTOKEN_API_KEY=...,这个变量就是空的,请求自然被拒。先docker exec openclaw env | grep TAOTOKEN确认,再检查 Key 有没有多余空格或换行。
5.2 base_url 拼错导致 404
base_url必须是https://taotoken.net/api,结尾不要加/v1或斜杠。OpenClaw 会自己在后面拼/chat/completions,你多写一段路径就会 404。这个坑我踩过,日志里报404 page not found时先看地址。
5.3 模型名不存在
default_model和fallback_models里的名字必须和文档里列的一致。写错名字会返回model not found。不确定就去接入文档核对,或者用模型对话页面选一遍确认。
5.4 企业微信回调验证失败
企业微信要求回调 URL 在 5 秒内返回校验结果。如果容器启动慢或端口没放行,会一直提示“回调失败”。先确认8080端口能从企业微信服务器访问到,再看日志里有没有收到echostr请求。公众号的8081同理。
5.5 沙箱拦截了技能调用
如果order_query这类技能报权限错误,检查sandbox.allow_file_write和技能声明的路径是否在workspace范围内。企业场景下不建议直接关沙箱,而是把需要的路径加进白名单。
6. 把闭环跑稳之后
最小闭环跑通只是起点。接下来你可以把faq.md换成真实产品手册,把order_query接到内部订单系统,把report技能挂上定时任务,让 OpenClaw 每天固定时间把报表推到企业微信群。配置层面不用大改,只动config.toml里的技能声明和对应接口地址。
需要长期跑编码和 Agent 任务的团队,建议把模型通道切到 Coding Plan,配额和稳定性更适合持续调用:
Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
新增 Key 或轮换密钥时,回到控制台操作,容器里只更新环境变量再重启即可:
API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
配置字段拿不准就翻接入文档,模型名、协议格式、错误码都有说明:
接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
最后提醒一句:先拿一个场景试点,比如只开公众号自动回复,跑一周看日志和命中率,再逐步加技能。一次全铺开,出了问题很难定位是哪一环。