Skip to content

Yuanbao

Tencent Yuanbao is Tencent’s AI assistant platform. The OpenClaw channel plugin connects Yuanbao bots to OpenClaw over WebSocket so they can interact with users through direct messages and group chats.

Status: production-ready for bot DMs + group chats. WebSocket is the only supported connection mode.


Requires OpenClaw 2026.4.10 or above. Run openclaw --version to check. Upgrade with openclaw update.

  1. Add the Yuanbao channel with your credentials

    Terminal window
    openclaw channels add --channel yuanbao --token "appKey:appSecret"

    The --token value uses colon-separated appKey:appSecret format. You can obtain these from the Yuanbao app by creating a robot in your application settings.

  2. After setup completes, restart the gateway to apply the changes

    Terminal window
    openclaw gateway restart

You can also use the interactive wizard:

Terminal window
openclaw channels login --channel yuanbao

Follow the prompts to enter your App ID and App Secret.


Configure dmPolicy to control who can DM the bot:

  • "pairing" - unknown users receive a pairing code; approve via CLI
  • "allowlist" - only users listed in allowFrom can chat
  • "open" - allow all users (default)
  • "disabled" - disable all DMs

Approve a pairing request:

Terminal window
openclaw pairing list yuanbao
openclaw pairing approve yuanbao <CODE>

Mention requirement (channels.yuanbao.requireMention):

  • true - require @mention (default)
  • false - respond without @mention

Replying to the bot’s message in a group chat is treated as an implicit mention.


{
channels: {
yuanbao: {
appKey: "your_app_key",
appSecret: "your_app_secret",
dm: {
policy: "open",
},
},
},
}
{
channels: {
yuanbao: {
appKey: "your_app_key",
appSecret: "your_app_secret",
dm: {
policy: "allowlist",
allowFrom: ["user_id_1", "user_id_2"],
},
},
},
}
{
channels: {
yuanbao: {
requireMention: false,
},
},
}
{
channels: {
yuanbao: {
// Send each chunk immediately without buffering
outboundQueueStrategy: "immediate",
},
},
}
{
channels: {
yuanbao: {
outboundQueueStrategy: "merge-text",
minChars: 2800, // buffer until this many chars
maxChars: 3000, // force split above this limit
idleMs: 5000, // auto-flush after idle timeout (ms)
},
},
}

CommandDescription
/helpShow available commands
/statusShow bot status
/newStart a new session
/stopStop the current run
/restartRestart OpenClaw
/compactCompact the session context

Yuanbao supports native slash-command menus. Commands are synced to the platform automatically when the gateway starts.


  1. Ensure the bot is added to the group
  2. Ensure you @mention the bot (required by default)
  3. Check logs: openclaw logs --follow
  1. Ensure the bot is created and approved in the Yuanbao app
  2. Ensure appKey and appSecret are correctly configured
  3. Ensure the gateway is running: openclaw gateway status
  4. Check logs: openclaw logs --follow
  1. Check if the AI model is returning valid content
  2. The default fallback reply is: “暂时无法解答,你可以换个问题问问我哦”
  3. Customize it via channels.yuanbao.fallbackReply
  1. Reset the App Secret in YuanBao APP
  2. Update the value in your config
  3. Restart the gateway: openclaw gateway restart

{
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 controls which account is used when outbound APIs do not specify an accountId.

  • maxChars - single message max character count (default: 3000 chars)
  • mediaMaxMb - media upload/download limit (default: 20 MB)
  • overflowPolicy - behavior when message exceeds limit: "split" (default) or "stop"

Yuanbao supports block-level streaming output. When enabled, the bot sends text in chunks as it generates.

{
channels: {
yuanbao: {
disableBlockStreaming: false, // block streaming enabled (default)
},
},
}

Set disableBlockStreaming: true to send the complete reply in one message.

Control how many historical messages are included in the AI context for group chats:

{
channels: {
yuanbao: {
historyLimit: 100, // default: 100, set 0 to disable
},
},
}

Control how the bot quotes messages when replying in group chats:

{
channels: {
yuanbao: {
replyToMode: "first", // "off" | "first" | "all" (default: "first")
},
},
}
ValueBehavior
"off"No quote reply
"first"Quote only the first reply per inbound message (default)
"all"Quote every reply

By default, the bot injects instructions in the system prompt to prevent the AI model from wrapping the entire reply in markdown code blocks.

{
channels: {
yuanbao: {
markdownHintEnabled: true, // default: true
},
},
}

Enable unsanitized log output for specific bot IDs:

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

Use bindings to route Yuanbao DMs or groups to different agents.

{
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" },
},
},
],
}

Routing fields:

  • match.channel: "yuanbao"
  • match.peer.kind: "direct" (DM) or "group" (group chat)
  • match.peer.id: user ID or group code

Full configuration: Gateway configuration

SettingDescriptionDefault
channels.yuanbao.enabledEnable/disable the channeltrue
channels.yuanbao.defaultAccountDefault account for outbound routingdefault
channels.yuanbao.accounts.<id>.appKeyApp Key (used for signing and ticket generation)-
channels.yuanbao.accounts.<id>.appSecretApp Secret (used for signing)-
channels.yuanbao.accounts.<id>.tokenPre-signed token (skips automatic ticket signing)-
channels.yuanbao.accounts.<id>.nameAccount display name-
channels.yuanbao.accounts.<id>.enabledEnable/disable a specific accounttrue
channels.yuanbao.dm.policyDM policyopen
channels.yuanbao.dm.allowFromDM allowlist (user ID list)-
channels.yuanbao.requireMentionRequire @mention in groupstrue
channels.yuanbao.overflowPolicyLong message handling (split or stop)split
channels.yuanbao.replyToModeGroup reply-to strategy (off, first, all)first
channels.yuanbao.outboundQueueStrategyOutbound strategy (merge-text or immediate)merge-text
channels.yuanbao.minCharsMerge-text: min chars to trigger send2800
channels.yuanbao.maxCharsMerge-text: max chars per message3000
channels.yuanbao.idleMsMerge-text: idle timeout before auto-flush (ms)5000
channels.yuanbao.mediaMaxMbMedia size limit (MB)20
channels.yuanbao.historyLimitGroup chat history context entries100
channels.yuanbao.disableBlockStreamingDisable block-level streaming outputfalse
channels.yuanbao.fallbackReplyFallback reply when AI returns no content暂时无法解答,你可以换个问题问问我哦
channels.yuanbao.markdownHintEnabledInject markdown anti-wrapping instructionstrue
channels.yuanbao.debugBotIdsDebug whitelist bot IDs (unsanitized logs)[]

  • ✅ Text
  • ✅ Images
  • ✅ Files
  • ✅ Audio / Voice
  • ✅ Video
  • ✅ Stickers / Custom emoji
  • ✅ Custom elements (link cards, etc.)
  • ✅ Text (with markdown support)
  • ✅ Images
  • ✅ Files
  • ✅ Audio
  • ✅ Video
  • ✅ Stickers
  • ✅ Quote replies (configurable via replyToMode)
  • ❌ Thread replies (not supported by platform)