1. OpenClaw 里 Skill 和 MCP 到底怎么配合
OpenClaw 是一个开源的 AI Agent 框架,核心能力是把大模型的推理能力和外部工具、数据源接在一起。它跟普通聊天客户端最大的区别在于:模型不只是回答问题,而是能主动调用工具去查数据、跑命令、读写文件。支撑这套机制的两根柱子,一个是 Skill,一个是 MCP。
Skill 可以理解成「给 Agent 看的能力说明书」。你用自然语言加一段描述文件告诉它这个技能能干什么、需要什么参数、有什么权限,Agent 在规划任务时就会把 Skill 当成可选项。MCP(Model Context Protocol)则是「工具和数据源的统一插口」,它把数据库、文件系统、第三方 API 这些外部资源标准化成模型能识别的工具列表。Skill 负责「怎么用」,MCP 负责「连到哪」,两者协同起来,Agent 才能既知道有把锤子,又真的能拿到锤子去敲钉子。
这套组合适合谁?如果你在搭自动化工作流、做代码助手、接企业内部系统,或者想让 Agent 长期跑在某个业务场景里,OpenClaw 的 Skill + MCP 结构会比单纯堆 prompt 稳得多。但真正上手时,很多人卡在第一步:模型通道怎么统一配。OpenClaw 本身不绑定某一家模型,你要自己填 base_url、api_key、model 这些字段,如果每个 Skill 或每个 MCP 服务都单独配一套 Key,维护起来会非常痛苦。这篇就围绕这个痛点,用 TaoToken 做统一 Key 和 API 通道,把 config.toml 骨架和连通性验证一次讲清楚。
2. 用 TaoToken 统一模型通道的前置准备
在写 config.toml 之前,先把「模型从哪来」这件事定下来。OpenClaw 的模型调用走的是 OpenAI 兼容协议,也就是说只要一个服务提供/v1/chat/completions这类标准接口,就能接进去。TaoToken 提供的就是这样一个统一入口,你不需要为每个模型单独申请 Key,也不用在多个平台之间来回切换配置。
具体要准备三样东西。第一是 TaoToken 的 API Key,登录后在控制台创建,地址是 https://taotoken.net/api-keys 。第二是 API 基础地址,统一用 https://taotoken.net/api ,注意这个地址后面不加 UTM 参数,保持干净。第三是你要用的模型名称,比如 claude 系列、gpt 系列,具体以控制台模型列表为准。
注意:API Key 属于敏感凭证,不要直接提交到 Git 仓库。建议放在环境变量里,config.toml 中通过引用读取,或者至少把配置文件加入 .gitignore。
如果你还没注册,可以从官网入口进:https://taotoken.net/?utm_source=taotoken_aic_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。注册后在 API Keys 页面生成 Key,复制保存好,后面配置要用。这一步不复杂,但 Key 只显示一次,丢了就得重新建。
3. 可复制的 config.toml 骨架配置
OpenClaw 的配置文件通常放在项目根目录或~/.openclaw/config.toml,具体路径看你的安装方式。下面这份骨架把模型通道、MCP 服务器、Skill 加载三块都串起来了,你可以直接复制后改 Key。
# ~/.openclaw/config.toml [model] # 统一走 TaoToken 的 OpenAI 兼容通道 provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" # 从环境变量读取,避免明文 model = "claude-3-5-sonnet" # 按控制台实际模型名填写 max_tokens = 4096 temperature = 0.3 [gateway] port = 3000 auth_type = "token" auth_token = "${OPENCLAW_GATEWAY_TOKEN}" skill_timeout_ms = 30000 max_concurrent_skills = 10 # MCP 服务器:stdio 方式接入本地工具 [[mcp.servers]] name = "filesystem" protocol = "stdio" command = "npx" args = ["-y", "@modelcontextprotocol/server-filesystem", "./workspace"] capabilities = ["resources", "tools"] # MCP 服务器:http_sse 方式接入远程服务 [[mcp.servers]] name = "remote-tools" protocol = "http_sse" url = "https://your-mcp-endpoint.example.com/sse" headers = { Authorization = "Bearer ${MCP_REMOTE_TOKEN}" } capabilities = ["tools"] [skills] # Skill 目录,OpenClaw 启动时扫描加载 dirs = ["./skills", "~/.openclaw/skills"] auto_reload = true几个关键点解释一下。base_url填https://taotoken.net/api,不要带尾部斜杠,OpenClaw 会自己拼/v1/chat/completions。api_key用${TAOTOKEN_API_KEY}这种写法,启动前在 shell 里export TAOTOKEN_API_KEY=你的Key即可。MCP 的stdio适合本地进程,http_sse适合远程服务,两种可以同时存在。capabilities声明这个 MCP 提供资源还是工具,Agent 规划时会参考。
环境变量设置示例:
export TAOTOKEN_API_KEY="sk-你的实际Key" export OPENCLAW_GATEWAY_TOKEN="自定义网关令牌" export MCP_REMOTE_TOKEN="远程MCP的令牌"配好之后,Skill 文件放在./skills下,每个 Skill 一个目录,里面放SKILL.md和实现代码。MCP 服务器会在 OpenClaw 启动时自动拉起,stdio 类型的进程由框架管理生命周期。
4. 连通性验证:从模型到 MCP 的完整请求
配置写完不代表能跑,得一步步验证。先确认模型通道通不通,再确认 MCP 工具能不能被列出,最后跑一次带工具调用的完整请求。
第一步,验证模型通道。用 curl 直接打 TaoToken 的接口,确认 Key 和 base_url 没问题:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-3-5-sonnet", "messages": [{"role": "user", "content": "回复 OK 两个字母"}], "max_tokens": 16 }'返回里能看到choices[0].message.content就说明通道正常。如果返回 401,检查 Key;返回 404,检查 base_url 是不是写成了带/v1的完整路径(配置里只写到/api)。
第二步,启动 OpenClaw 并检查 MCP 状态:
openclaw gateway status openclaw mcp listmcp list会列出所有已连接的 MCP 服务器和它们暴露的工具。如果某个服务器显示disconnected,看日志:
openclaw gateway logs --tail 50stdio 类型连不上,多半是command或args写错,或者 npx 没装。http_sse 类型连不上,检查 url 和 Authorization 头。
第三步,跑一次带工具调用的对话,验证 Skill 和 MCP 协同。在 OpenClaw 的对话入口(模型对话页面:https://taotoken.net/model-chat?utm_source=taotoken_aic_blog_end&utm_content=model_chat&utm_campaign=rewrite )或者 CLI 里输入一个需要读文件的请求,比如「列出 workspace 目录下的文件」。Agent 应该会调用 filesystem MCP 的 list 工具,返回文件列表。这一步成功,说明模型通道、MCP 连接、Skill 调度三层都通了。
5. 本篇常见错误排查
配置过程中最容易踩的坑集中在几个地方。下面按现象、原因、解决三列对照,方便你快速定位。
| 现象 | 可能原因 | 解决动作 |
|---|---|---|
| 模型请求返回 401 | API Key 未设置或过期 | 重新生成 Key,确认环境变量已 export |
| 模型请求返回 404 | base_url 路径写错 | 配置里只写https://taotoken.net/api,不要加/v1 |
| MCP 服务器 disconnected | command/args 错误或依赖缺失 | 手动执行 command 看报错,确认 npx 可用 |
| Skill 未被加载 | skills.dirs 路径不对 | 用绝对路径测试,确认 SKILL.md 存在 |
| 工具调用超时 | skill_timeout_ms 太短 | 调到 60000 或更高,看 MCP 响应速度 |
| 网关 403 | auth_token 不匹配 | 检查 OPENCLAW_GATEWAY_TOKEN 与客户端一致 |
还有一个隐蔽问题:config.toml 里用了${VAR}语法,但 OpenClaw 启动时环境变量没传进去。如果你用 systemd 或 Docker 跑,要在 service 文件或 compose 里显式声明 env。本地调试时,先echo $TAOTOKEN_API_KEY确认有值再启动。
另外,MCP 的http_sse模式对网络稳定性有要求,如果远程服务偶尔断连,OpenClaw 会重试,但重试期间工具调用会失败。生产环境建议加一层健康检查,或者优先用 stdio 模式跑本地工具。
6. 长期跑 Agent 的通道与编码方案
把 config.toml 跑通只是起点。如果你打算让 OpenClaw 长期承担编码、自动化任务,模型通道的稳定性和成本控制就变成主要矛盾。TaoToken 的统一 Key 在这里的价值是:你可以在一个地方管理所有模型的调用,切换模型不用改代码,只改 config.toml 里的model字段。对于需要频繁切换 Claude、GPT 做对比测试的场景,这点很省事。
编码类任务建议走 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aic_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,它针对代码生成和 Agent 长会话做了优化,配合 OpenClaw 的 Skill 调度,能减少上下文截断带来的工具调用失败。接入细节和参数说明看文档:https://taotoken.net/doc?utm_source=taotoken_aic_blog_end&utm_content=doc&utm_campaign=rewrite 。
如果你用的是 Claude Code 这类编码工具,想把它和 OpenClaw 的 MCP 生态打通,可以参考 ClaudeCodeAnthropic 的接入方式:https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aic_blog_end&utm_content=claude_code_anthropic&utm_campaign=rewrite 。核心思路是一样的:统一 base_url 和 Key,让工具链里的每个环节都走同一条通道,减少凭证散落带来的维护成本。
实测下来,OpenClaw 的 Skill + MCP 结构在配置正确后相当稳,真正花时间的往往是通道和权限的初始对齐。把 config.toml 骨架固化下来,后面加 Skill、加 MCP 服务器都是增量操作,不用每次重来。