OpenClaw接入大模型API完整教程:2026年Skills开发从零到跑通

Written by

in

文章目录
  • 步骤 耗时 难度 踩坑概率 注册 + 环境配置 10 分钟 ⭐ 低 创建第一个 Skill 5 分钟 ⭐ 低 配置 LLM Provider 15 分钟 ⭐⭐⭐ 高 编写 Skill 逻辑代码 30-60 分钟 ⭐⭐ 中 调试 + 发布 20 分钟 ⭐⭐ 中 配置 LLM Provider 这步坑最多,下面重点讲。
  • 你需要准备: OpenClaw 账号(官网注册,目前开放申请) 一个兼容 OpenAI 协议的 API Key(后面会讲怎么选) Node.js 18+(本地调试用) 你喜欢的编辑器(我用 Cursor) 先装 OpenClaw CLI: npm install -g @openclaw/cli openclaw login 登录成功会在终端看到你的用户名,这步没啥坑。
  • 最直觉的做法——拿到哪家模型的 Key 就填哪家的。 创建一个 Skill 项目: openclaw create my-first-skill –template llm-basic cd my-first-skill 项目结构长这样: my-first-skill/ ├── skill.yaml # Skill 元信息 ├── src/ │ └── index.ts # 主逻辑 ├── package.json └── .env # API 配置 编辑 skill.yaml,配置 LLM Provider: 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 里写核心逻辑: 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: `请为以下内容生成结构化摘要:nn${input.text}` } ], temperature: 0.3, }); return { summary: response.choices[0].message.content, model: response.model, tokens: response.usage?.total_tokens, }; } }); 本地测试: 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。我现在用的是 ofox.ai,它是一个 AI 模型聚合平台,一个 API Key 可以调用 GPT-5、Claude Opus 4.6、Gemini 3、DeepSeek V3、GLM5 等 50+ 模型,兼容 OpenAI 协议,低延迟直连无需代理,支持支付宝付款。 配置改动非常小,skill.yaml 只需要改 base_url: providers: llm: protocol: openai-compatible base_url: “https://api.ofox.ai/v1” # 聚合接口,一个 Key 用所有模型 model: “gpt-5″ .env 文件: OPENCLAW_LLM_API_KEY=your-ofox-api-key 这样一来,Skill 代码里可以随意切换模型,不用动任何配置: 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, }; } }); 整个调用链路是这样的: graph LR A[用户请求] –> B[OpenClaw Platform] B –> C[你的 Skill] C –> D[ofox.ai 聚合网关] D –> E[GPT-5] D –> F[Claude Opus 4.6] D –> G[DeepSeek V3] D –> H[GLM5] D –> I[Gemini 3] 同一个 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 乱码。正确姿势: // skill.yaml 里加上 output: streaming: true 坑 3:超时设置太短 OpenClaw 默认的 Skill 执行超时是 30 秒,但如果模型生成内容比较长(比如写一篇千字总结),很容易超时。在 skill.yaml 里改: runtime: timeout: 120 # 单位秒,建议设到 120 坑 4:本地 dev 模式和线上行为不一致 openclaw dev 跑的是本地 Node 环境,有些系统级环境变量线上没有。我一度把 API Key 写死在代码里调试,差点提交上去。正确做法是用 .env + openclaw secrets set 管理线上密钥: openclaw secrets set LLM_API_KEY “your-key-here”
  • 调试没问题后,一行命令发布: openclaw publish 发布后在 OpenClaw 的 Skills 市场能看到你的 Skill,其他开发者可以直接调用。也可以设成私有模式自己用。
  • OpenClaw 接入大模型 API 本身不难,核心就是配好 LLM Provider。只用一个模型的话直连官方 API 就够了;跟我一样想在 Skill 里灵活切换多个模型,用聚合 API 改一个 base_url 最省事。 2026 年 Skills 生态刚爆发,现在进场还算早。我已经把那个自适应问答 Skill 跑起来了,接下来准备搞一个结合 Function Calling 的工具链 Skill,有进展再写。 以上就是OpenClaw接入大模型API完整教程:2026 Skills开发从零到跑通的详细内容,更多关于OpenClaw接入大模型API教程的资料请关注风君子博客其它相关文章!
  • 目录
    • 先说结论
    • 环境准备
    • 方案一:直接用各家官方 API
    • 方案二:用聚合 API 一套配置搞定
    • 踩坑记录
    • 发布上线
    • 小结

    上周 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:

    npm install -g @openclaw/cli
    openclaw login

    登录成功会在终端看到你的用户名,这步没啥坑。

    最直觉的做法——拿到哪家模型的 Key 就填哪家的。

    创建一个 Skill 项目:

    openclaw create my-first-skill --template llm-basic
    cd my-first-skill
    

    项目结构长这样:

    my-first-skill/
    ├── skill.yaml # Skill 元信息
    ├── src/
    │ └── index.ts # 主逻辑
    ├── package.json
    └── .env # API 配置
    

    编辑 skill.yaml,配置 LLM Provider:

    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 里写核心逻辑:

    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: `请为以下内容生成结构化摘要:nn${input.text}` }
     ],
     temperature: 0.3,
     });
     return {
     summary: response.choices[0].message.content,
     model: response.model,
     tokens: response.usage?.total_tokens,
     };
     }
    });

    本地测试:

    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。我现在用的是 ofox.ai,它是一个 AI 模型聚合平台,一个 API Key 可以调用 GPT-5、Claude Opus 4.6、Gemini 3、DeepSeek V3、GLM5 等 50+ 模型,兼容 OpenAI 协议,低延迟直连无需代理,支持支付宝付款

    配置改动非常小,skill.yaml 只需要改 base_url

    providers:
     llm:
     protocol: openai-compatible
     base_url: "https://api.ofox.ai/v1" # 聚合接口,一个 Key 用所有模型
     model: "gpt-5"

    .env 文件:

    OPENCLAW_LLM_API_KEY=your-ofox-api-key
    

    这样一来,Skill 代码里可以随意切换模型,不用动任何配置:

    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,
     };
     }
    });

    整个调用链路是这样的:

    graph LR
     A[用户请求] --> B[OpenClaw Platform]
     B --> C[你的 Skill]
     C --> D[ofox.ai 聚合网关]
     D --> E[GPT-5]
     D --> F[Claude Opus 4.6]
     D --> G[DeepSeek V3]
     D --> H[GLM5]
     D --> I[Gemini 3]
    

    同一个 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 乱码。正确姿势:

    // skill.yaml 里加上
    output:
     streaming: true

    坑 3:超时设置太短

    OpenClaw 默认的 Skill 执行超时是 30 秒,但如果模型生成内容比较长(比如写一篇千字总结),很容易超时。在 skill.yaml 里改:

    runtime:
     timeout: 120 # 单位秒,建议设到 120

    坑 4:本地 dev 模式和线上行为不一致

    openclaw dev 跑的是本地 Node 环境,有些系统级环境变量线上没有。我一度把 API Key 写死在代码里调试,差点提交上去。正确做法是用 .env + openclaw secrets set 管理线上密钥:

    openclaw secrets set LLM_API_KEY "your-key-here"
    

    调试没问题后,一行命令发布:

    openclaw publish
    

    发布后在 OpenClaw 的 Skills 市场能看到你的 Skill,其他开发者可以直接调用。也可以设成私有模式自己用。

    OpenClaw 接入大模型 API 本身不难,核心就是配好 LLM Provider。只用一个模型的话直连官方 API 就够了;跟我一样想在 Skill 里灵活切换多个模型,用聚合 API 改一个 base_url 最省事。

    2026 年 Skills 生态刚爆发,现在进场还算早。我已经把那个自适应问答 Skill 跑起来了,接下来准备搞一个结合 Function Calling 的工具链 Skill,有进展再写。

    以上就是OpenClaw接入大模型API完整教程:2026 Skills开发从零到跑通的详细内容,更多关于OpenClaw接入大模型API教程的资料请关注风君子博客其它相关文章!

    站内搜索