为 OpenClaw 提供可生产使用的 QQ 渠道接入:先快速跑通,再按需启用高级能力。
[在线文档] [3 分钟快速开始] [配置参考] [NapCat 部署] [高级能力]
[!IMPORTANT] 官方交流论坛(唯一): https://aiya.de5.net/c/25-category/25
问题反馈、配置经验、更新公告统一在论坛沉淀,便于检索和追踪。
<attachments> 元数据,不再自动展开 TXT 正文污染模型上下文。name、url、local_path、file_id、size、mime 等元数据;需要读正文时再按 local_path 显式读取。sendMedia 会按媒体类型自动分流到 OneBot image / record / video / 文件上传接口。sendPayload 支持 mediaUrl、mediaUrls、files,可处理文本 + 多附件同发。upload_group_file / upload_private_file,rich media 失败时会尝试文件上传 fallback。.zip 压缩包。interruptOnNewMessage,且仅在显式设为 true 时才会用“新消息打断旧回复”。blockStreaming=true + blockStreamingBreak=message_end,让 commentary / final 按完整 assistant message 落地,减少 QQ 侧碎片化输出。forwardLongReplyThreshold=300,长 final_answer 超过阈值时自动改用 QQ 合并转发;commentary 仍按普通消息发送。forwardNodeCharLimit=0,转发时不按长度拆节点,尽量把同一轮长回复合并成一个转发。allowBareGroupCommands=false,群聊里裸 /model 不再直接触发;推荐使用 椰子 /model 这类“唤醒词 + 指令”形式。enableDynamicModelCatalog=false,本地 /model 不主动探测 provider /models 全量目录,保持更保守的默认行为。MediaPaths / MediaUrls。cacheInboundImagesToLocal,默认把当前消息及引用链里的图片缓存到本地,便于 ACP 与多模态 agent 读图。qq:user:<id>;旧本机会话会在启动时自动规范化。keywordOnlyTrigger:群聊可切换为“仅关键词触发”,忽略 @ / 回复触发,适合与其他机器人共用同一 QQ 账号。showReplySessionSource:回复前可标注来源会话,方便区分主会话与 /临时 会话。/临时 会话槽说明,便于快速理解“同群分话题”的实际用法。ConversationLabel 现会优先使用真实群名,减少模型只看到群号时的歧义。MessageSid;开启 injectGatewayMeta 时,隐藏 <qq_context> 也会透传 senderRole。set_input_status;不支持时才回退到群名片后缀。docs/advanced.md 与 docs/config-reference.md。channel restart / health-monitor 重启循环,避免通道被误判退出后反复拉起。isConnected() 防止同账号重复启动。openclaw.json 的 fallbacks)。很多 QQ 插件只做“基础渠道层”;openclaw_qq 的目标是:
如果你只需要极简能力,请直接用最小配置;如果你需要高并发和低漏回,再启用高级选项。
maxRetries / retryDelayMs)fastFailErrors)injectGatewayMeta)MessageSid / senderRole/临时 / /退出临时 / /临时列表 等)showReplySessionSource)queueDebounceMs)interruptOnNewMessage)forwardLongReplyThreshold)admins / adminOnlyChat)建议按下面顺序阅读:
/临时 会话槽是什么/临时 是 openclaw_qq 里已经落地的会话隔离工作流,主要解决“同一个 QQ 群里同时跑多个话题,但又不想把主会话上下文搅乱”这个问题。
::tmp:<名称>)。/临时 <名称> 进入或创建一个临时会话,把后续消息写进这个槽,不占用主会话上下文。/临时状态、/临时列表、/临时重命名、/退出临时、/临时结束,适合把“查日志、修配置、写方案”这类任务拆开管理。showReplySessionSource=true 时,回复前会自动加 (from 会话xxx) 或 (from 主会话),这样即使群里同时有多个临时任务,也能快速看出当前回复属于哪个槽。docs/advanced.md。message_post_format = arraycd openclaw/extensions
git clone https://github.com/constansino/openclaw_qq.git qq
cd ../..
pnpm install && pnpm build
在 OpenClaw WebUI 中直接配置 channels.qq,比手写 JSON 更直观,也更不容易出现格式错误。

建议先填以下核心项:
wsUrlaccessTokenrequireMentionadmins(可选)allowedGroups(可选)编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"qq": {
"wsUrl": "ws://127.0.0.1:3001",
"accessToken": "your_token",
"requireMention": true
}
},
"plugins": {
"entries": {
"qq": { "enabled": true }
}
}
}
openclaw gateway restart
验证:
docs/index.mdREADME.mdMIT
$ claude mcp add openclaw_qq \
-- python -m otcore.mcp_server <graph>