Skip to content

解决 OpenClaw 连接腾讯元宝机器人时的配置、权限和消息异常问题。适用场景:连接元宝机器人到聊天应用(私聊/群聊),排查机器人无回应、消息为空等故障。关键操作:使用 openclaw channels add --channel yuanbao --token "appKey:appSecret" 添加通道,然后 openclaw gateway restart 生效;通过 dmPolicy 控制私聊权限,requireMention 控制群聊是否需要 @ 提及。限制:仅支持 WebSocket 连接,不支持线程回复,单消息最大 3000 字符。

OpenClaw 元宝通道配置与故障排查

OpenClaw 的元宝(Yuanbao)通道插件通过 WebSocket 将腾讯元宝机器人接入网关,支持私聊和群聊中的文本、图片、文件、语音等消息类型。本文档涵盖从快速接入、权限控制、高级配置到常见故障的完整流程。

状态:生产可用(私聊 + 群聊)。仅支持 WebSocket 连接模式。


快速接入

要求 OpenClaw 2026.4.10 或更高版本。 运行 openclaw --version 检查版本。使用 openclaw update 升级。

使用凭据添加元宝通道

bash
openclaw channels add --channel yuanbao --token "appKey:appSecret"

--token 值使用冒号分隔的 appKey:appSecret 格式。你可以在元宝应用的后台创建机器人时获取这些信息。

设置完成后,重启网关以应用配置

bash
openclaw gateway restart

交互式配置(备选)

也可使用交互式向导:

bash
openclaw channels login --channel yuanbao

按提示输入 App ID 和 App Secret。


访问控制

私聊

通过 dmPolicy 配置控制谁能私聊机器人:

  • "pairing" — 未知用户会收到配对码;通过 CLI 批准
  • "allowlist" — 仅 allowFrom 中的用户可以聊天
  • "open" — 允许所有用户(默认)
  • "disabled" — 禁用所有私聊

批准配对请求:

bash
openclaw pairing list yuanbao
openclaw pairing approve yuanbao <CODE>

群聊

@ 提及要求channels.yuanbao.requireMention):

  • true — 要求 @ 提及机器人(默认)
  • false — 无需 @ 提及即可回复

在群聊中回复机器人的消息被视为隐式 @ 提及。


配置示例

基础设置:开放私聊

json5
{
  channels: {
    yuanbao: {
      appKey: "your_app_key",
      appSecret: "your_app_secret",
      dm: {
        policy: "open",
      },
    },
  },
}

限制私聊到特定用户

json5
{
  channels: {
    yuanbao: {
      appKey: "your_app_key",
      appSecret: "your_app_secret",
      dm: {
        policy: "allowlist",
        allowFrom: ["user_id_1", "user_id_2"],
      },
    },
  },
}

禁用群聊 @ 提及要求

json5
{
  channels: {
    yuanbao: {
      requireMention: false,
    },
  },
}

优化出站消息投递

json5
{
  channels: {
    yuanbao: {
      // 立即发送每个块,不缓冲
      outboundQueueStrategy: "immediate",
    },
  },
}

调整文本合并策略

json5
{
  channels: {
    yuanbao: {
      outboundQueueStrategy: "merge-text",
      minChars: 2800, // 缓冲到此字符数才发送
      maxChars: 3000, // 超出此限制强制拆分
      idleMs: 5000, // 空闲超时后自动刷新(毫秒)
    },
  },
}

常用命令

命令描述
/help显示可用命令
/status显示机器人状态
/new开始新会话
/stop停止当前运行
/restart重启 OpenClaw
/compact压缩会话上下文

元宝支持原生斜杠命令菜单。网关启动时,命令会自动同步到平台。


故障排除

机器人在群聊中不回应

  1. 确保机器人已添加到群聊
  2. 确保 @ 提及了机器人(默认要求)
  3. 检查日志:openclaw logs --follow

机器人收不到消息

  1. 确保机器人在元宝应用中已创建并获批
  2. 确保 appKeyappSecret 配置正确
  3. 确保网关正在运行:openclaw gateway status
  4. 检查日志:openclaw logs --follow

机器人发送空回复或回退回复

  1. 检查 AI 模型是否返回了有效内容
  2. 默认回退回复为:"暂时无法解答,你可以换个问题问问我哦"
  3. 可通过 channels.yuanbao.fallbackReply 自定义

App Secret 泄露

  1. 在元宝应用中重置 App Secret
  2. 更新配置文件中的值
  3. 重启网关:openclaw gateway restart

高级配置

多账号

json5
{
  channels: {
    yuanbao: {
      defaultAccount: "main",
      accounts: {
        main: {
          appKey: "key_xxx",
          appSecret: "secret_xxx",
          name: "Primary bot",
        },
        backup: {
          appKey: "key_yyy",
          appSecret: "secret_yyy",
          name: "Backup bot",
          enabled: false,
        },
      },
    },
  },
}

defaultAccount 控制当出站 API 未指定 accountId 时使用哪个账号。

消息限制

  • maxChars — 单消息最大字符数(默认:3000 字符)
  • mediaMaxMb — 媒体上传/下载限制(默认:20 MB)
  • overflowPolicy — 消息超限时的处理行为:"split"(默认)或 "stop"

流式输出

元宝支持块级流式输出。启用后,机器人会在生成过程中分块发送文本。

json5
{
  channels: {
    yuanbao: {
      disableBlockStreaming: false, // 块流式输出启用(默认)
    },
  },
}

设置 disableBlockStreaming: true 可将完整回复一次性发送。

群聊历史上下文

控制群聊中包含多少条历史消息到 AI 上下文中:

json5
{
  channels: {
    yuanbao: {
      historyLimit: 100, // 默认:100,设为 0 禁用
    },
  },
}

回复引用模式

控制机器人在群聊中回复时如何引用消息:

json5
{
  channels: {
    yuanbao: {
      replyToMode: "first", // "off" | "first" | "all"(默认:"first")
    },
  },
}
行为
"off"不引用回复
"first"只引用每个入站消息的第一条回复(默认)
"all"引用所有回复

Markdown 提示注入

默认情况下,机器人会在系统提示中注入指令,防止 AI 模型将整个回复包裹在 markdown 代码块中。

json5
{
  channels: {
    yuanbao: {
      markdownHintEnabled: true, // 默认:true
    },
  },
}

调试模式

为特定的机器人 ID 启用未脱敏的日志输出:

json5
{
  channels: {
    yuanbao: {
      debugBotIds: ["bot_user_id_1", "bot_user_id_2"],
    },
  },
}

多智能体路由

使用 bindings 将元宝的私聊或群聊路由到不同的智能体。

json5
{
  agents: {
    list: [
      { id: "main" },
      { id: "agent-a", workspace: "/home/user/agent-a" },
      { id: "agent-b", workspace: "/home/user/agent-b" },
    ],
  },
  bindings: [
    {
      agentId: "agent-a",
      match: {
        channel: "yuanbao",
        peer: { kind: "direct", id: "user_xxx" },
      },
    },
    {
      agentId: "agent-b",
      match: {
        channel: "yuanbao",
        peer: { kind: "group", id: "group_zzz" },
      },
    },
  ],
}

路由字段:

  • match.channel"yuanbao"
  • match.peer.kind"direct"(私聊)或 "group"(群聊)
  • match.peer.id:用户 ID 或群组代码

配置参考

完整配置:网关配置

设置描述默认值
channels.yuanbao.enabled启用/禁用通道true
channels.yuanbao.defaultAccount出站路由的默认账号default
channels.yuanbao.accounts.&lt;id&gt;.appKeyApp Key(用于签名和票据生成)-
channels.yuanbao.accounts.&lt;id&gt;.appSecretApp Secret(用于签名)-
channels.yuanbao.accounts.&lt;id&gt;.token预签名令牌(跳过自动票据签名)-
channels.yuanbao.accounts.&lt;id&gt;.name账号显示名称-
channels.yuanbao.accounts.&lt;id&gt;.enabled启用/禁用特定账号true
channels.yuanbao.dm.policy私聊策略open
channels.yuanbao.dm.allowFrom私聊白名单(用户 ID 列表)-
channels.yuanbao.requireMention群聊中要求 @ 提及true
channels.yuanbao.overflowPolicy长消息处理(splitstopsplit
channels.yuanbao.replyToMode群聊回复引用策略(offfirstallfirst
channels.yuanbao.outboundQueueStrategy出站策略(merge-textimmediatemerge-text
channels.yuanbao.minChars文本合并:触发发送的最小字符数2800
channels.yuanbao.maxChars文本合并:每条消息的最大字符数3000
channels.yuanbao.idleMs文本合并:自动刷新前的空闲超时(毫秒)5000
channels.yuanbao.mediaMaxMb媒体大小限制(MB)20
channels.yuanbao.historyLimit群聊历史上下文条目数100
channels.yuanbao.disableBlockStreaming禁用块级流式输出false
channels.yuanbao.fallbackReplyAI 无返回内容时的回退回复暂时无法解答,你可以换个问题问问我哦
channels.yuanbao.markdownHintEnabled注入 Markdown 防包裹指令true
channels.yuanbao.debugBotIds调试白名单机器人 ID(未脱敏日志)[]

支持的消息类型

接收

  • ✅ 文本
  • ✅ 图片
  • ✅ 文件
  • ✅ 音频 / 语音
  • ✅ 视频
  • ✅ 贴纸 / 自定义表情
  • ✅ 自定义元素(链接卡片等)

发送

  • ✅ 文本(支持 Markdown)
  • ✅ 图片
  • ✅ 文件
  • ✅ 音频
  • ✅ 视频
  • ✅ 贴纸

线程与回复

  • ✅ 引用回复(通过 replyToMode 配置)
  • ❌ 线程回复(平台不支持)

常见问题

怎么获取元宝机器人的 appKey 和 appSecret?

在腾讯元宝开发者后台创建机器人后,在应用设置中可以找到 App ID(即 appKey)和 App Secret(即 appSecret)。将它们以冒号分隔的形式作为 --token 参数值使用。

机器人在群聊里不回复,也没有报错,为什么?

最常见的原因是群聊默认要求 @ 提及机器人。检查 channels.yuanbao.requireMention 是否设为 true(默认值)。如果不需要 @ 提及,可设为 false。同时确认机器人已添加到群聊中。

OpenClaw 元宝通道支持多长的消息?超长了怎么办?

单消息最大字符数默认为 3000(由 maxChars 控制)。当消息超出限制时,默认行为是自动拆分为多条消息发送(overflowPolicy: "split")。你也可以改为 "stop" 来阻止发送超长消息。媒体文件大小限制为 20MB。