【OpenClaw】接入豆包教程(2/12 更新)

【OpenClaw】接入豆包教程(2/12 更新)

AI 工具
2026/02/12(更新于2026/02/12
预计阅读时长 5 分钟
阅读 90
因为接入微信容易被封。 我突然想到豆包的语音交互很棒啊,所以就想着能不能接入豆包? 从技术上来讲,可以通过豆包–coze–openclaw–coze–豆包。 搞了一个多小时,终于通了!

原理

在Coze上创建一个智能体,然后发布到豆包,即可使用豆包强大的声音交流方式。

基本原理:豆包--coze--openclaw--coze--豆包

步骤

打开Coze进入智能体开发

https://code.coze.cn/home?from_source=https%3A%2F%2Fwww.coze.cn%2Fcollection

打开如下图。

img

点击右上角的「回到旧版」。

创建小龙虾对话流

创建智能体:

img

编写信息

img

然后,点击右上角,更改类型,选择「对话流」:

img

出现了,选择添加「对话流」,点击一下:

img

点击「官方示例」,选择libai,「复制并添加」:

img

页面就成这样了:

img

点击「对话流配置」,进入编辑,因为官方给的东西其实已经过时了,很多功能用不了,如下:

img

把这个节点的模型改成 「豆包角色扮演模型」,然后点击右上角发布。我们先试试可行性。

img

对话一下,看起来可以用。

img

点击右上角发布,先进行首次发布,从而让我们豆包可以用它(现在还没有接入小龙虾),只是测试这个功能是否可用。

img

选择发布到「豆包」

img

发布之火,可以跳转去对话。

img

点击「立即对话」,可以跳转到豆包对话。

img

很好,现在其实我们并没有接入OpenClaw,只是做了一个技术验证,下面我们开始真正的接入OpenClaw。

启动Http

打开GateWay里的这个配置:

img

或者手动修改配置文件: ~/.clawdbot/clawdbot.json

img

记得重启gateway,然后进行下面的测试,看看是否正常:

curl -X POST http://127.0.0.1:18789/v1/chat/completions 
  -H "Authorization: Bearer xxxxxx你的token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openclaw",
    "user": "doubao",
    "messages": [
      {
        "role": "user",
        "content": "你好"
      }
    ]
  }'

如果结果正常输出,那么就说明我们的配置生效了,开始下一步。

img

内网穿透

这里有两个思路:

1、直接去🐟买一个内网穿透工具,一个月几块钱,然后用内网穿透工具绑定 18789端口

2、如果你是云服务器,有公网IP,那就直接访问公网IP:18789

完成了这个操作之后我们开始核心步骤了。

Coze小龙虾对话流修改

回到最开始的小龙虾对话流,把大模型节点去掉,然后加一个HTTP请求节点以及一个代码节点,然后连起来。

img

如下:

img

点击HTTP请求节点,选择导入:

img

导入的Curl如下,其实就是「启动Http」章节类似的代码,只不过,ip需要替换一下:

curl -X POST http://你的公网IP或者域名:18789/v1/chat/completions 
  -H "Authorization: Bearer xxxxxx你的token" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openclaw",
    "user": "doubao",
    "messages": [
      {
        "role": "user",
        "content": "你好"
      }
    ]
  }'

导入成功之后,就是这样:

img

点击右上角的 > 按钮,测试一下是否返回结果。如果有结果返回,就说明是正常的。

然后点击Edit Json,我们需要把每一次发给豆包的信息都发送给OpenClaw:

img

选中content,输入{会弹出下面的系统变量弹窗:

img

选择「USER_INPUT」:

img

这里注意一下,如果 ‘user’这个变量你没有改(比如我就是 coze),那么所有你从 coze 发过去的消息都在一个会话里。
如果你想要分多个会话,可以把上面的 user,使用变量 conversation_name。

点击代码节点,把输入和输出改为如图所示:

img

然后在代码里写入:

async function main({ params }: Args): Promise<Output> {
  try {
    const input = params.openclaw;
    const bodyStr = typeof input === 'object' ? input.body : input;
    if (!bodyStr) throw new Error('无有效body内容');

    // 极简二次解析(最多两层,适配偶尔的双层转义)
    let data = JSON.parse(bodyStr);
    if (typeof data === 'string') {
      data = JSON.parse(data);
    }

    const message = data?.choices?.[0]?.message?.content || "No response";
    return { reply: message, success: true };
  } catch (e) {
    console.error('解析失败:', e);
    return { reply: "解析OpenClaw返回内容失败", success: false };
  }
} 
 

最后回到结束节点,选中「reply」变量。

img

很好,基本快完成了,我们点击测试「试运行」。

img

结果如下,说明已经快成了!

img

点击右上角发布工作流,然后发布小龙虾🦞!

img

开始对话吧,你会发现,已经变了!

img

‼️权限设置(十分重要)

默认发布的时候,是公开,但是OpenClaw是运行在你自己的电脑或者服务器上的,还是得小心,最好设置为「私密」,只有你自己的豆包账号才能对话。

img

Next-下一步

  • 新增图片、文件之类的上传功能