docs/channels/yuanbao.md
Tencent Yuanbao is Tencent's AI assistant platform. The community-maintained openclaw-plugin-yuanbao plugin connects Yuanbao bots to OpenClaw over WebSocket for direct messages and group chats.
Status: production-ready for bot DMs and group chats. WebSocket is the only supported connection mode. This plugin is maintained by the Tencent Yuanbao team as an external catalog entry, not by core OpenClaw; the config/behavior details below (beyond install and the generic CLI surface) come from the plugin's own docs and are not verified against OpenClaw core source.
Requires OpenClaw 2026.4.10 or above. Check with openclaw --version; upgrade with openclaw update.
openclaw channels login --channel yuanbao
Follow the prompts to enter your App ID and App Secret.
channels.yuanbao.dm.policy:
| Value | Behavior |
|---|---|
open (default) | Allow all users |
pairing | Unknown users get a pairing code; approve via CLI |
allowlist | Only users in allowFrom can chat |
disabled | Disable all DMs |
Approve a pairing request:
openclaw pairing list yuanbao
openclaw pairing approve yuanbao <CODE>
channels.yuanbao.requireMention (default true): require an @mention before the bot responds in a group. Replying to the bot's own message is treated as an implicit mention.
Basic setup, open DM policy:
{
channels: {
yuanbao: {
appKey: "your_app_key",
appSecret: "your_app_secret",
dm: {
policy: "open",
},
},
},
}
Restrict DMs to specific users:
{
channels: {
yuanbao: {
appKey: "your_app_key",
appSecret: "your_app_secret",
dm: {
policy: "allowlist",
allowFrom: ["user_id_1", "user_id_2"],
},
},
},
}
Disable the @mention requirement in groups:
{
channels: {
yuanbao: {
requireMention: false,
},
},
}
Outbound delivery tuning:
{
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)
},
},
}
Set outboundQueueStrategy: "immediate" to send each chunk without buffering.
| Command | Description |
|---|---|
/help | Show available commands |
/status | Show bot status |
/new | Start a new session |
/stop | Stop the current run |
/restart | Restart OpenClaw |
/compact | Compact the session context |
Yuanbao supports native slash-command menus; commands sync to the platform automatically when the gateway starts.
Bot does not respond in group chats:
openclaw logs --followBot does not receive messages:
appKey and appSecret are correctly configuredopenclaw gateway statusopenclaw logs --followBot sends empty or fallback replies:
channels.yuanbao.fallbackReplyApp Secret leaked:
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)mediaMaxMb: media upload/download limit (default 20 MB)overflowPolicy: behavior when a message exceeds the limit, "split" (default) or "stop"Yuanbao supports block-level streaming output; 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.
{
channels: {
yuanbao: {
historyLimit: 100, // default: 100, set 0 to disable
},
},
}
Controls how many historical messages are included in the AI context for group chats.
{
channels: {
yuanbao: {
replyToMode: "first", // "off" | "first" | "all" (default: "first")
},
},
}
| Value | Behavior |
|---|---|
off | No quote reply |
first | Quote only the first reply per inbound message (default) |
all | Quote every reply |
By default, the bot injects a system-prompt instruction to prevent the model from wrapping the entire reply in a markdown code block.
{
channels: {
yuanbao: {
markdownHintEnabled: true, // default: true
},
},
}
{
channels: {
yuanbao: {
debugBotIds: ["bot_user_id_1", "bot_user_id_2"],
},
},
}
Enables unsanitized log output for the listed bot IDs.
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" },
},
},
],
}
match.channel: "yuanbao"match.peer.kind: "direct" (DM) or "group" (group chat)match.peer.id: user ID or group codeFull configuration: Gateway configuration
| Setting | Description | Default |
|---|---|---|
channels.yuanbao.enabled | Enable/disable the channel | true |
channels.yuanbao.defaultAccount | Default account for outbound routing | default |
channels.yuanbao.accounts.<id>.appKey | App Key (signing + ticket generation) | - |
channels.yuanbao.accounts.<id>.appSecret | App Secret (signing) | - |
channels.yuanbao.accounts.<id>.token | Pre-signed token (skips automatic ticket signing) | - |
channels.yuanbao.accounts.<id>.name | Account display name | - |
channels.yuanbao.accounts.<id>.enabled | Enable/disable a specific account | true |
channels.yuanbao.dm.policy | DM policy | open |
channels.yuanbao.dm.allowFrom | DM allowlist (user ID list) | - |
channels.yuanbao.requireMention | Require @mention in groups | true |
channels.yuanbao.overflowPolicy | Long message handling (split or stop) | split |
channels.yuanbao.replyToMode | Group reply-to strategy (off, first, all) | first |
channels.yuanbao.outboundQueueStrategy | Outbound strategy (merge-text or immediate) | merge-text |
channels.yuanbao.minChars | Merge-text: min chars to trigger send | 2800 |
channels.yuanbao.maxChars | Merge-text: max chars per message | 3000 |
channels.yuanbao.idleMs | Merge-text: idle timeout before auto-flush (ms) | 5000 |
channels.yuanbao.mediaMaxMb | Media size limit (MB) | 20 |
channels.yuanbao.historyLimit | Group chat history context entries | 100 |
channels.yuanbao.disableBlockStreaming | Disable block-level streaming output | false |
channels.yuanbao.fallbackReply | Fallback reply when the model returns no content | 暂时无法解答,你可以换个问题问问我哦 |
channels.yuanbao.markdownHintEnabled | Inject markdown anti-wrapping instructions | true |
channels.yuanbao.debugBotIds | Debug allowlist bot IDs (unsanitized logs) | [] |
Receive: text, images, files, audio/voice, video, stickers/custom emoji, custom elements (link cards).
Send: text (markdown), images, files, audio, video, stickers.
Threads and replies: quote replies (configurable via replyToMode); thread replies are not supported by the platform.