1. 为什么要在 Docker 里装 OpenClaw skills,以及 endpoint 为什么要改
OpenClaw 是一个可以本地部署的智能体运行框架,你可以把它理解成一个「住在容器里的 AI 助手」,它本身只提供对话和任务调度的骨架,真正让它能干活的,是一个个独立的 skills(技能包)。比如联网搜索、GitHub 仓库管理、飞书文档读写、自动化工作流编排,这些都是靠 skill 挂载进去的。适合谁?适合想把 AI 助手跑在自己机器上、又不想污染本机环境的人,尤其是 Windows 用户——Docker 帮你把依赖、Node 版本、Python 环境全部隔离在一个容器里,删掉容器就等于卸载干净。
但这里有个新手最容易卡住的点:OpenClaw 默认的模型 endpoint 指向的是官方地址,国内直连经常超时或者返回 401。所以安装 skills 之前,先把 endpoint 改到 TaoToken 的 API 地址,让容器里的 OpenClaw 走一个稳定可达的模型入口。这一步不做,后面 skills 装得再全,调用模型时照样报错。
我试过在 Windows 上用 Docker Desktop 跑 OpenClaw,整个流程分两大块:一是容器本身的启动和 skills 目录挂载,二是把 endpoint 配置写进 settings 文件。下面按可复制的顺序拆开讲,命令都能直接粘贴。
先明确几个概念,避免后面混淆:
- 镜像(image):OpenClaw 的程序本体,从镜像仓库拉下来。
- 容器(container):镜像跑起来的实例,你的 skills 装在容器内部。
- skills 目录:容器里存放技能包的路径,通常需要挂载到宿主机,方便备份和查看。
- endpoint:模型 API 的请求地址,本篇指向 TaoToken。
Docker 环境下的 skills 安装和裸机安装最大的区别是:你不能直接在 PowerShell 里敲npx clawhub install xxx,因为 clawhub 这个命令装在容器里,宿主机上没有。正确姿势是用docker exec把命令「递」进容器执行。这个思路贯穿全文,记住它就不会迷路。
另外提醒一句,skills 安装依赖网络拉取资源,部分技能包(比如搜索类、社交平台类)在拉取阶段可能因为资源地址问题失败,这属于正常现象,后面第五节会专门讲怎么排查。
2. TaoToken 前置准备:拿到 Base URL、Key 和 Model ID
在动 Docker 之前,先把 TaoToken 这边的三件套准备好,否则容器起来了也没法调模型。所谓三件套就是:Base URL、API Key、Model ID。这三个东西在后面的 settings 配置里都要填,缺一不可。
第一步,注册并登录。打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,完成账号注册。这一步没什么技术含量,邮箱验证即可。
第二步,进控制台创建 API Key。登录后进入控制台页面 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,找到 API Keys 管理入口 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,点新建,复制生成的 Key。这个 Key 只显示一次,建议先粘到记事本里。格式通常是一串以sk-开头的字符串。
第三步,确认 Base URL。TaoToken 的 API 基础地址是:
https://taotoken.net/api注意这个地址后面不加UTM 参数,配置里就写这个干净的地址。有些工具要求填到/v1结尾,有些只填到/api,具体看 OpenClaw 的配置字段要求,本篇的 settings 片段会给出完整写法。
第四步,选一个 Model ID。在模型列表里挑一个你要用的模型,比如常见的对话模型或者代码模型,把它的 ID 记下来。Model ID 是区分大小写的,填错会直接报模型不存在。
三件套汇总成一张表,方便你对照:
| 配置项 | 值 | 获取位置 |
|---|---|---|
| Base URL | https://taotoken.net/api | 固定地址 |
| API Key | sk-xxxxxxxx | 控制台 API Keys 页 |
| Model ID | 如claude-sonnet-4-5等 | 模型列表页 |
如果你只是想先验证模型能不能通,不想折腾容器,可以直接用模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条消息测试,能正常回复说明 Key 和模型都没问题,再往下走 Docker 流程心里就有底了。
对于长期要跑编码任务或者 Agent 自动化的场景,可以考虑 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,额度更划算。但本篇重点是 Docker 里的 skills 安装,先把基础连通性搞定。
拿到三件套后,别急着关页面,接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 建议开着,里面有针对不同客户端的配置示例,遇到字段不确定时可以对照。
3. 可复制配置:docker run / compose 与 settings 片段
这一节是全文的核心操作区,给出能直接复制的 Docker 启动命令、compose 文件,以及指向 TaoToken 的 settings 配置片段。路径和字段名尽量和 OpenClaw 官方保持一致,你照着改 Key 和 Model ID 就能用。
3.1 拉取镜像并启动容器
先拉镜像。打开 PowerShell(建议以管理员身份运行,避免挂载目录权限问题),执行:
docker pull openclaw/openclaw:latest拉完后确认镜像在本地:
docker images | findstr openclawWindows 的 PowerShell 里findstr相当于 Linux 的grep。看到镜像列表里有 openclaw 就说明拉取成功。
接下来启动容器。这里用docker run给一个最小可用版本,重点是把 skills 目录挂载出来,并把配置目录也挂出来,方便改 settings:
docker run -d --name my-openclaw ^ -p 3000:3000 ^ -v D:\openclaw\skills:/app/skills ^ -v D:\openclaw\config:/app/config ^ -e TZ=Asia/Shanghai ^ openclaw/openclaw:latest注意 Windows PowerShell 里换行符是^,不是 Linux 的\。如果你在 CMD 里跑,换行符又不一样,建议直接用一行写完,避免踩坑:
docker run -d --name my-openclaw -p 3000:3000 -v D:\openclaw\skills:/app/skills -v D:\openclaw\config:/app/config -e TZ=Asia/Shanghai openclaw/openclaw:latest参数逐个解释:
-d:后台运行。--name my-openclaw:容器名字,后面docker exec要用到,别写错。-p 3000:3000:端口映射,宿主机 3000 对应容器 3000,网页控制台走这个端口。-v D:\openclaw\skills:/app/skills:把宿主机的 skills 目录挂进容器,skills 装在这里,删容器不丢技能。-v D:\openclaw\config:/app/config:配置目录挂载,settings 文件放这里。-e TZ=Asia/Shanghai:时区,避免日志时间错乱。
启动后检查容器状态:
docker ps | findstr my-openclaw状态显示Up就对了。如果显示Exited,用docker logs my-openclaw看日志排错。
3.2 用 docker compose 管理(推荐)
如果你不想每次敲一长串命令,用 compose 更清爽。在D:\openclaw下新建docker-compose.yml:
version: "3.8" services: openclaw: image: openclaw/openclaw:latest container_name: my-openclaw ports: - "3000:3000" volumes: - ./skills:/app/skills - ./config:/app/config environment: - TZ=Asia/Shanghai restart: unless-stopped然后在同目录执行:
docker compose up -drestart: unless-stopped保证机器重启后容器自动拉起,省心。
3.3 写入指向 TaoToken 的 settings 片段
配置文件放在挂载出来的D:\openclaw\config目录下,文件名通常是settings.json。如果容器里没有自动生成,就手动新建一个。内容如下:
{ "model": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的Key粘贴到这里", "modelId": "claude-sonnet-4-5", "timeout": 60000 }, "skills": { "dir": "/app/skills", "autoLoad": true }, "server": { "port": 3000 } }几个关键字段说明:
provider填openai-compatible,因为 TaoToken 提供的是兼容 OpenAI 协议的接口。baseUrl就是前面拿到的https://taotoken.net/api,不要加多余斜杠。apiKey换成你自己的 Key。modelId换成你要用的模型 ID。skills.dir指向容器内的/app/skills,和挂载路径对应。autoLoad: true让容器启动时自动加载 skills 目录下的技能。
改完 settings 后重启容器让配置生效:
docker restart my-openclaw如果你用的是 Claude Code 这类客户端做润色或编码辅助,配置思路类似,Base URL、Key、Model ID 三件套填法一致,具体字段名参考接入文档。这里不展开,避免偏离 Docker skills 安装的主线。
4. 安装 10 个 skills 并验证加载结果
配置就绪后,进入 skills 安装环节。核心公式就一句话:在原始安装命令前加docker exec -it my-openclaw。因为 clawhub 命令在容器里,宿主机上没有,必须通过 exec 递进去。
4.1 万能安装公式
docker exec -it my-openclaw npx clawhub@latest install 技能名把「技能名」替换成具体 skill 的标识即可。下面按 excerpt 里提到的 10 个技能逐个给出命令,并标注实测结果。
4.2 安全与自我管理类
skill-vetter(安全扫描专家)—— 安装任何技能前帮你排查恶意代码,强烈建议第一个装:
docker exec -it my-openclaw npx clawhub@latest install skill-vetter实测结果:成功。终端会跑进度条,最后提示Installed。
find-skills(技能大管家)—— 不知道用什么工具时,让它自己搜索并安装:
docker exec -it my-openclaw npx clawhub@latest install find-skills实测结果:成功。
4.3 大脑升级类
proactive-agent(主动性大脑)—— 记住历史习惯,减少重复输入:
docker exec -it my-openclaw npx clawhub@latest install proactive-agent实测结果:成功。
self-improving-agent(自我学习与记忆)—— 长期交互越来越懂你:
docker exec -it my-openclaw npx clawhub@latest install self-improving-agent实测结果:成功。
4.4 触角延伸类
tavily-search(联网搜索)—— AI 优化版搜索,实时查资讯:
docker exec -it my-openclaw npx clawhub@latest install tavily-search实测结果:失败,找不到资源。这个技能依赖外部搜索服务的资源包,拉取阶段报错。后续可以尝试手动配置 Tavily 的 API Key 再重试。
github(仓库管理)—— 自动管理仓库、Issue、PR:
docker exec -it my-openclaw npx clawhub@latest install github实测结果:成功。
gog(Google 全家桶)—— 打通 Gmail、日历、Drive:
docker exec -it my-openclaw npx clawhub@latest install gog实测结果:成功。注意装完后需要在网页控制台填入 Google 的授权信息才能用。
bird(X/Twitter 集成)—— 自动发帖、搜热点:
docker exec -it my-openclaw npx clawhub@latest install bird实测结果:失败,找不到资源。这个技能同样依赖外部平台资源,且要注意甄别恶意版本,别随便装来路不明的包。
feishu-doc(飞书文档集成)—— 集成飞书文档和云盘:
docker exec -it my-openclaw npx clawhub@latest install feishu-doc实测结果:成功。
4.5 超级工作流类
automation-workflows(自动化编排)—— 把多个技能串联,执行「收邮件+查数据+写报告+发飞书」这类复杂任务:
docker exec -it my-openclaw npx clawhub@latest install automation-workflows实测结果:成功。
4.6 验证 skills 是否加载成功
装完后,进容器里看一眼 skills 目录:
docker exec -it my-openclaw ls -la /app/skills应该能看到各个技能对应的文件夹。再检查 OpenClaw 的加载日志:
docker logs my-openclaw | findstr skill日志里会列出已加载的技能名。如果某个技能装了但没出现在日志里,说明加载失败,检查 settings 里的autoLoad是否为 true,以及技能目录权限。
最后打开网页控制台http://localhost:3000,在技能列表页应该能看到已安装的技能。成功安装的 8 个会显示为可用状态,失败的 2 个(tavily-search、bird)不会出现或显示异常。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
这一节把 Docker 环境下最容易撞上的几类报错集中处理,每个都给出真实报错特征和排查路径。
5.1 401 Unauthorized
报错特征:调用模型时返回401,日志里出现invalid api key或authentication failed。
原因:API Key 填错、过期,或者 settings 里的apiKey字段没生效。
排查步骤:
- 确认 Key 没有多余空格。复制时容易带上换行,粘到 JSON 里会破坏格式。
- 检查 settings.json 是否是合法 JSON。用在线 JSON 校验工具过一遍,少个逗号都会导致整个配置不生效。
- 确认容器重启过。改完 settings 必须
docker restart my-openclaw。 - 用模型对话页面单独测一下 Key 是否有效,排除 Key 本身的问题。
5.2 local proxy failed
报错特征:容器日志出现local proxy failed或connection refused。
原因:容器内访问外部地址失败,通常是网络配置或 endpoint 地址写错。
排查步骤:
- 确认
baseUrl写的是https://taotoken.net/api,没有多余路径。 - 进容器测试网络连通性:
docker exec -it my-openclaw curl -I https://taotoken.net/api能返回 HTTP 状态码说明网络通。如果卡住或报错,检查 Docker Desktop 的网络设置。
- 确认没有在容器里配置额外的代理环境变量,代理配置冲突会导致请求发不出去。
5.3 reading choices 相关报错
报错特征:日志出现reading 'choices'或cannot read property of undefined。
原因:模型返回的响应结构不符合预期,通常是 endpoint 指向了错误的路径,或者模型 ID 填错导致返回了错误信息而非正常响应。
排查步骤:
- 确认
modelId拼写正确,大小写敏感。 - 确认
provider填的是openai-compatible。 - 用 curl 直接测一次接口,看返回结构:
curl https://taotoken.net/api/v1/chat/completions ^ -H "Authorization: Bearer sk-你的Key" ^ -H "Content-Type: application/json" ^ -d "{\"model\":\"你的模型ID\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}"返回里有choices字段说明接口正常,问题在 OpenClaw 的解析配置。
5.4 OAuth 授权失败
报错特征:安装 gog、feishu-doc 这类需要授权的技能后,调用时报OAuth failed或token expired。
原因:这类技能装完后需要在网页控制台完成 OAuth 授权,光装包不够。
排查步骤:
- 打开
http://localhost:3000,进技能配置页。 - 找到对应技能,点授权按钮,按提示完成 OAuth 流程。
- 授权回调地址要填对,通常是
http://localhost:3000/callback这类,具体看技能文档。 - 授权完成后重启容器。
5.5 技能安装时找不到资源
报错特征:npx clawhub install xxx报404或resource not found。
原因:该技能的资源包在仓库里不存在或已下架,比如本篇的 tavily-search 和 bird。
处理方式:这类问题不是配置错误,是资源本身缺失。可以关注技能仓库的更新,或者手动从其他渠道获取技能包放进/app/skills目录。别用来路不明的包,装之前先用 skill-vetter 扫一遍。
排查时养成看日志的习惯,docker logs my-openclaw --tail 100看最近 100 行,大部分问题日志里都有线索。
6. 后续怎么用:把 skills 跑起来并持续扩展
skills 装完只是开始,真正让它产生价值的是调用。打开网页控制台http://localhost:3000,在对话框里直接描述任务,OpenClaw 会根据任务自动匹配已加载的技能。比如你说「帮我搜一下最近的 AI 新闻」,如果 tavily-search 装成功了它会自动调用;如果没装成功,它会提示没有可用搜索技能。
对于自动化编排,automation-workflows 这个技能值得重点玩。你可以定义一条工作流:收到邮件 → 提取关键信息 → 查数据库 → 生成报告 → 发到飞书。这条链路里用到的 gog、feishu-doc、automation-workflows 三个技能都装成功了,理论上可以跑通。配置入口在控制台的 workflow 页面,按提示串联即可。
扩展新技能时,记住那个万能公式:docker exec -it my-openclaw npx clawhub@latest install 技能名。装之前先用 find-skills 搜一下有没有现成的,再用 skill-vetter 扫一遍安全性,这个习惯能帮你避开不少坑。
如果你要长期跑编码或 Agent 任务,模型调用量会上去,可以了解下 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,额度更合适。遇到配置字段不确定的地方,接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里有各客户端的完整示例,对照着改就行。需要新建或更换 Key 时,API Keys 页面 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 随时可以操作。
最后说个实用技巧:把D:\openclaw这个目录整个用 Git 管起来,skills 和 config 都在里面,换机器时 clone 下来重新docker compose up -d就能恢复整套环境,比重新装一遍省事得多。容器删了也不怕,技能和配置都在宿主机上留着。