上周 OpenClaw Skills 生态突然爆了,我 timeline 全是各种花式 Skill 展示。说实话一开始我是拒绝的------又一个平台?但看到有人用它接了 GLM5 做微信 Bot,还有人搞了个 Three.js 可视化 Skill,我坐不住了,花了两天时间从零把 OpenClaw 接上大模型 API 跑通了。
OpenClaw 接入大模型 API 的核心步骤:注册账号 → 创建 Skill → 配置 LLM Provider(填入兼容 OpenAI 协议的 API 地址和 Key)→ 编写 Skill 逻辑 → 测试发布。 最关键的一步是 LLM Provider 配置,选对 API 服务能省掉 80% 的麻烦。
先说结论
| 步骤 | 耗时 | 难度 | 踩坑概率 |
|---|---|---|---|
| 注册 + 环境配置 | 10 分钟 | ⭐ | 低 |
| 创建第一个 Skill | 5 分钟 | ⭐ | 低 |
| 配置 LLM Provider | 15 分钟 | ⭐⭐⭐ | 高 |
| 编写 Skill 逻辑代码 | 30-60 分钟 | ⭐⭐ | 中 |
| 调试 + 发布 | 20 分钟 | ⭐⭐ | 中 |
配置 LLM Provider 这步坑最多,下面重点讲。
环境准备
你需要准备:
- OpenClaw 账号(官网注册,目前开放申请)
- 一个兼容 OpenAI 协议的 API Key(后面会讲怎么选)
- Node.js 18+(本地调试用)
- 你喜欢的编辑器(我用 Cursor)
先装 OpenClaw CLI:
bash
npm install -g @openclaw/cli
openclaw login
登录成功会在终端看到你的用户名,这步没啥坑。
方案一:直接用各家官方 API
最直觉的做法------拿到哪家模型的 Key 就填哪家的。
创建一个 Skill 项目:
bash
openclaw create my-first-skill --template llm-basic
cd my-first-skill
项目结构长这样:
bash
my-first-skill/
├── skill.yaml # Skill 元信息
├── src/
│ └── index.ts # 主逻辑
├── package.json
└── .env # API 配置
编辑 skill.yaml,配置 LLM Provider:
yaml
name: my-first-skill
version: 0.1.0
description: "我的第一个 OpenClaw Skill"
providers:
llm:
protocol: openai-compatible
base_url: "https://api.openai.com/v1"
model: "gpt-5"
然后在 src/index.ts 里写核心逻辑:
typescript
import { defineSkill, llm } from '@openclaw/sdk';
export default defineSkill({
name: 'smart-summary',
description: '输入一段文字,返回结构化摘要',
async handler(input: { text: string }) {
const response = await llm.chat({
model: 'gpt-5',
messages: [
{ role: 'system', content: '你是一个擅长结构化摘要的助手,输出用 markdown 格式。' },
{ role: 'user', content: `请为以下内容生成结构化摘要:\n\n${input.text}` }
],
temperature: 0.3,
});
return {
summary: response.choices[0].message.content,
model: response.model,
tokens: response.usage?.total_tokens,
};
}
});
本地测试:
bash
openclaw dev
# 另开终端
curl -X POST http://localhost:3800/invoke \
-H "Content-Type: application/json" \
-d '{"text": "OpenClaw 是一个开放的 AI Skills 平台..."}'
问题来了:直连官方 API,延迟波动很大,我测了几次 GPT-5 的响应时间在 800ms-3000ms 之间飘。而且不同模型要分别申请 Key、分别配置。我想在 Skill 里根据任务复杂度动态切换模型------简单任务用 DeepSeek V3 省钱,复杂任务用 Claude Opus 4.6------就得维护好几套配置,烦死了。
方案二:用聚合 API 一套配置搞定
折腾了一圈,最省事的方案是用聚合 API。我现在用的是 ofox.ai,它是一个 AI 模型聚合平台,一个 API Key 可以调用 GPT-5、Claude Opus 4.6、Gemini 3、DeepSeek V3、GLM5 等 50+ 模型,兼容 OpenAI 协议,低延迟直连无需代理,支持支付宝付款。
配置改动非常小,skill.yaml 只需要改 base_url:
yaml
providers:
llm:
protocol: openai-compatible
base_url: "https://api.ofox.ai/v1" # 聚合接口,一个 Key 用所有模型
model: "gpt-5"
.env 文件:
bash
OPENCLAW_LLM_API_KEY=your-ofox-api-key
这样一来,Skill 代码里可以随意切换模型,不用动任何配置:
typescript
import { defineSkill, llm } from '@openclaw/sdk';
export default defineSkill({
name: 'adaptive-qa',
description: '根据问题复杂度自动选择模型的问答 Skill',
async handler(input: { question: string; mode?: 'fast' | 'quality' }) {
// 简单模式用 DeepSeek V3 省钱,质量模式用 Claude Opus 4.6
const model = input.mode === 'quality' ? 'claude-opus-4.6' : 'deepseek-v3';
const response = await llm.chat({
model,
messages: [
{ role: 'system', content: '你是一个专业的技术问答助手。' },
{ role: 'user', content: input.question }
],
temperature: 0.5,
stream: true, // OpenClaw 支持流式输出
});
let fullContent = '';
for await (const chunk of response) {
fullContent += chunk.choices[0]?.delta?.content || '';
}
return {
answer: fullContent,
model_used: model,
};
}
});
整个调用链路是这样的:
同一个 Key、同一个 base_url,Skill 代码里只改 model 字段就能切换,部署后不用重新配置环境变量。
踩坑记录
坑 1:skill.yaml 里的 model 字段和代码里的 model 参数冲突
我一开始在 skill.yaml 配了 model: "gpt-5",代码里又传了 model: 'deepseek-v3',结果请求一直走 GPT-5。查了半天文档才发现 skill.yaml 里的 model 如果写了,会强制覆盖代码层的参数。解决办法:yaml 里不写 model 字段,或者设成 model: "auto",让代码层自己控制。
坑 2:流式输出的 SSE 格式问题
OpenClaw 的 Skill handler 返回流式内容时,需要显式声明 streaming: true。我第一版没加,前端收到的是一坨 Buffer 乱码。正确姿势:
typescript
// skill.yaml 里加上
output:
streaming: true
坑 3:超时设置太短
OpenClaw 默认的 Skill 执行超时是 30 秒,但如果模型生成内容比较长(比如写一篇千字总结),很容易超时。在 skill.yaml 里改:
yaml
runtime:
timeout: 120 # 单位秒,建议设到 120
坑 4:本地 dev 模式和线上行为不一致
openclaw dev 跑的是本地 Node 环境,有些系统级环境变量线上没有。我一度把 API Key 写死在代码里调试,差点提交上去。正确做法是用 .env + openclaw secrets set 管理线上密钥:
bash
openclaw secrets set LLM_API_KEY "your-key-here"
发布上线
调试没问题后,一行命令发布:
bash
openclaw publish
发布后在 OpenClaw 的 Skills 市场能看到你的 Skill,其他开发者可以直接调用。也可以设成私有模式自己用。
小结
OpenClaw 接入大模型 API 本身不难,核心就是配好 LLM Provider。只用一个模型的话直连官方 API 就够了;跟我一样想在 Skill 里灵活切换多个模型,用聚合 API 改一个 base_url 最省事。
2026 年 Skills 生态刚爆发,现在进场还算早。我已经把那个自适应问答 Skill 跑起来了,接下来准备搞一个结合 Function Calling 的工具链 Skill,有进展再写。
有问题评论区聊,特别是踩到新坑的同学------这玩意更新太快,说不定下周又有新坑等着我们。