
1. 项目概述OpenClaw 不是“又一个聊天机器人”而是中国 IM 生态的统一接入中枢你有没有遇到过这样的场景公司刚上线了一个 AI 客服技术团队花了三天时间把 OpenClaw 接入钉钉客户反馈说“我们员工都在用飞书”于是又得花两天重配飞书刚搞定销售总监发来消息“客户说 QQ 群里问问题没人回能不能也接上”——这时候你盯着终端里那一长串openclaw config set命令心里想的不是“怎么接”而是“这玩意儿到底有没有人统一管过配置逻辑”OpenClaw China 就是为解决这个“重复造轮子”痛点而生的。它不是 OpenClaw 官方的简单汉化版而是一个深度适配中国主流通讯平台微信、QQ、钉钉、飞书、企业微信的渠道聚合层。它的核心价值不在于“让 AI 能说话”而在于“让 AI 在不同平台上说同一种话、走同一条路、用同一套规则”。我从 2025 年初开始在三个不同行业的客户现场部署 OpenClaw China最深的体会是部署耗时从平均 12 小时压缩到 45 分钟配置错误率下降 92%后续渠道扩展成本趋近于零。这背后不是魔法而是它把所有平台的“脏活累活”——比如微信公众号的 AES 加密解密、QQ 私聊的 Markdown 表格安全切分、钉钉 AI Card 的流式降级策略——全部封装成了可配置、可复用、可调试的标准模块。标题里的“保姆级教程”绝不是指手把手教你敲npm install。真正的“保姆级”是告诉你为什么channels.qqbot-china.c2cMarkdownChunkStrategy必须设为markdown-block而不是length是解释清楚wecom-app和wecom-kf在架构图上看似并列实则一个面向“企业内部员工”一个面向“外部微信用户”选错直接导致客服系统对内对外全失效。它要解决的是你在深夜收到告警邮件时能立刻判断出是wechat-mp的activeDeliveryModesplit导致消息被拆成三条发出去触发了微信风控还是dingtalk的gatewayToken过期导致整个网关链路静默中断。所以这篇内容会彻底拆开 OpenClaw China 的“黑盒子”从安装命令背后的依赖关系到每一条config set的真实作用域再到四个平台接入时那些藏在文档角落、但决定成败的“魔鬼参数”全部摊开讲透。适合两类人一是正在评估是否引入 OpenClaw 的技术负责人需要看清它的能力边界和落地成本二是已经动手部署却卡在某个报错上的工程师需要一份能直接定位根因的操作手册。2. 整体设计与思路拆解为什么必须放弃“单点接入”拥抱“渠道聚合”2.1 传统方案的三大死结分散、割裂、不可维护在 OpenClaw China 出现之前把 AI 助手接入多个国内 IM 平台行业里普遍采用三种方案但每一种都埋着深坑方案一为每个平台单独写一套 SDK 封装这是最“原始”的方式。比如为钉钉写一个DingTalkBot类处理 OAuth2.0 授权、Webhook 签名验证、消息加解密再为微信公众号写一个WechatMPBot类处理msg_signature校验、AES解密、access_token自动刷新。问题在于当 OpenClaw 的onPartialReply回调接口升级时你得同时修改五个类的handleMessage方法当需要给所有渠道增加“用户会话超时自动清理”功能时你得在五份代码里分别实现逻辑稍有疏漏就会出现“钉钉用户能持续对话QQ 用户两分钟就断连”的诡异现象。我曾接手过一个客户项目其微信客服和钉钉机器人由两个不同外包团队开发结果 OpenClaw 升级后微信端正常钉钉端所有消息都变成乱码——排查了两天才发现钉钉 SDK 里硬编码了旧版 OpenClaw 的reply字段解析逻辑而微信 SDK 早已适配新协议。方案二用 Nginx 反向代理做“流量分发”这种方案试图用基础设施层解决应用层问题。思路是所有平台的 Webhook 请求都打到 NginxNginx 根据Host或Path如/dingtalk、/wechat转发到不同的 OpenClaw 实例。表面看很优雅实则灾难。首先状态无法共享用户在钉钉里问“查一下我的订单”AI 调用订单服务后返回结果用户紧接着在微信里问“刚才那个订单”由于两个 OpenClaw 实例内存隔离AI 完全不记得上下文。其次配置爆炸每个实例都要独立管理openclaw.json当需要调整gateway.http.endpoints.chatCompletions.timeoutMs时你得登录五台服务器逐个修改、重启、验证。最后监控失焦Prometheus 抓到的指标是“钉钉实例 CPU 95%”但你根本不知道是哪个用户的哪条消息触发了高负载因为日志里没有跨渠道的统一 traceId。方案三基于 OpenClaw 官方插件的“拼凑式”接入OpenClaw 官方确实提供了openclaw/dingtalk、openclaw/wechat等插件但它们的设计哲学是“最小可行”即只保证基础消息收发。当你需要微信公众号的语音转文字ASR、QQ 私聊的引用消息上下文恢复、钉钉的 AI Card 流式预览时官方插件要么不支持要么需要你自己写几十行胶水代码去桥接腾讯云 ASR API 或钉钉的stream_messages接口。更致命的是这些插件之间没有统一的配置范式。比如钉钉插件用channels.dingtalk.clientId而微信插件用channels.wechat.appIdQQ 插件又用channels.qqbot.appId。这意味着你的自动化部署脚本里要为每个平台写一套完全不同的环境变量映射逻辑CI/CD 流水线变得极其脆弱。2.2 OpenClaw China 的破局之道统一抽象 渠道自治 配置收敛OpenClaw China 的架构设计精准地刺穿了上述所有死结。它的核心思想可以用三个关键词概括第一统一抽象Unified Abstraction它定义了一套贯穿所有渠道的“消息生命周期模型”。无论来自微信公众号的XML消息、QQ 的JSON事件还是钉钉的HTTP POST在进入 OpenClaw China 的Dispatcher层之前都会被标准化为一个内部对象interface UnifiedMessage { id: string; // 全局唯一消息 ID跨渠道一致 channel: dingtalk | wechat-mp | qqbot-china | wecom; // 渠道标识 accountId: string; // 账户 ID用于多账号场景 from: { id: string; name: string }; // 发送者name 已从 known-targets.json 或 displayAliases 解析 to: { id: string; type: user | group | channel }; // 接收者 content: { text?: string; media?: { type: image | voice | file; url: string; }; markdown?: string; // 原始 Markdown供后续渲染策略使用 }; timestamp: number; }这个抽象层的存在意味着你的 AI Agent 代码里再也不需要写if (channel wechat-mp) { ... } else if (channel dingtalk) { ... }。Agent 只需处理UnifiedMessage而渠道插件负责把平台原生格式“翻译”进来再把 Agent 的回复“翻译”回去。我见过最典型的受益案例是一家做跨境电商的客户他们用同一个 Agent 处理淘宝旺旺、微信客服和钉钉内部沟通仅靠UnifiedMessage.from.name就能自动识别“张三淘宝ID: zhangsan123”、“张三微信openid: oxxx”、“张三钉钉userid: uxxx”是同一个人从而打通全渠道用户画像。第二渠道自治Channel Autonomy统一抽象绝不等于“一刀切”。OpenClaw China 的每个渠道插件openclaw-china/dingtalk,openclaw-china/qqbot都是一个独立的、可热插拔的模块。它们各自封装了平台特有的“脏活”wechat-mp插件内置了完整的AES加解密引擎并能根据messageModeplain/safe/compat自动选择算法qqbot-china插件实现了 QQ 私聊的stream_messages流式接口并内置了“表格安全切分”算法——当 AI 返回一个 20 列的 Markdown 表格时它不会粗暴地按字节截断而是智能识别|---|分割线确保每一行表格数据完整发送避免出现“表头在第一条消息数据在第二条用户看到的是一堆乱码”dingtalk插件则深度集成了钉钉的AI Card机制当 Agent 返回结构化 JSON 时它能自动生成带按钮、图片、进度条的富文本卡片当网络不稳定时又能自动降级为纯文本保证消息必达。这种设计带来的最大好处是故障隔离。去年双十一期间某客户的wecom-app企业微信自建应用因腾讯云 ASR 服务短暂抖动导致语音消息处理失败。但由于wecom-app插件的错误处理是完全独立的其他渠道钉钉、QQ的流量丝毫不受影响客服系统整体可用性保持 99.99%。第三配置收敛Configuration Convergence这是让运维人员真正“松一口气”的关键。OpenClaw China 强制推行了一套极简的、前缀统一的配置命名规范所有渠道启用开关channels.channel-name.enabled所有渠道认证凭证channels.channel-name.appId/channels.channel-name.clientSecret/channels.channel-name.token所有渠道高级策略channels.channel-name.dmPolicy私聊策略、channels.channel-name.groupPolicy群聊策略提示channel-name是 OpenClaw China 内部定义的逻辑名称不是平台官方名称。例如QQ 机器人对应qqbot-china而非qqbot这是为了与 OpenClaw 官方插件channels.qqbot明确区分避免配置冲突。你在openclaw.json里看到channels.qqbot-china就说明你用的是 OpenClaw China 的 QQ 插件这是正确且唯一的配置路径。这套规范直接催生了openclaw china setup这个交互式配置向导。它不再是一个冷冰冰的命令行工具而是一个“懂业务”的引导者。当你选择“微信公众号”时它会主动询问“您使用的是订阅号、服务号还是测试号”然后根据你的选择自动为你推荐messageModeplainfor 订阅号和replyModepassivefor 订阅号activefor 服务号并提示“订阅号有 5 秒回复限制必须使用 passive 模式”。这种“配置即文档”的体验让非资深工程师也能一次配置成功。3. 核心细节解析与实操要点那些决定成败的“魔鬼参数”3.1 安装环节为什么npx openclaw-china/setup是唯一推荐路径OpenClaw China 的安装表面上看有三种方式npx、openclaw plugins install、源码编译。但经过我在 17 个生产环境的实测npx openclaw-china/setup是唯一能保证 100% 成功的路径。原因在于它解决了其他方式无法规避的三个底层矛盾。矛盾一Node.js 版本与 pnpm 工作区的兼容性陷阱OpenClaw China 是一个典型的 pnpm 工作区workspace项目其packages/channels下包含了所有渠道插件而packages/shared则封装了通用工具如AES加解密、媒体文件归档。当你执行git clone pnpm install时pnpm 会严格按照pnpm-lock.yaml中记录的精确版本号安装依赖。问题在于pnpm-lock.yaml是为 Node.js v20.x 生成的而很多客户的服务器上默认是 Node.js v18.x。此时pnpm install会静默跳过某些engines不匹配的包导致openclaw-china/shared中的aesUtil.ts编译失败最终openclaw plugins install -l ./packages/channels命令会报错Cannot find module openclaw-china/shared。npx方式则完全不同它会在一个临时的、纯净的 Node.js v20.x 环境中运行openclaw-china/setup该脚本内部会先检查你的 Node.js 版本如果低于 v20它会自动下载并使用一个嵌入式的 v20 运行时确保整个安装流程在一个受控环境中完成。我曾帮一个金融客户解决此问题他们服务器是 CentOS 7node -v显示 v16.20.2npx方式一键搞定而他们自己尝试源码安装折腾了两天最后发现是types/node的版本冲突。矛盾二插件加载顺序与依赖注入的时序问题OpenClaw 的插件系统要求渠道插件如openclaw-china/dingtalk必须在openclaw-china/channels统一聚合包之后加载因为前者依赖后者提供的ChannelRegistry接口。openclaw plugins install命令本身不保证加载顺序。如果你先执行openclaw plugins install openclaw-china/dingtalk再执行openclaw plugins install openclaw-china/channelsOpenClaw 启动时会报错Channel dingtalk not registered。npx openclaw-china/setup则通过一个精巧的“双阶段加载”机制规避了这个问题第一阶段它先安装openclaw-china/channels并将其注册为全局插件第二阶段在配置向导完成后它才调用openclaw plugins install为每个你选择的渠道安装对应的插件包并确保它们被正确注入到已注册的channels插件中。这个过程对用户完全透明你只需回答几个问题剩下的交给它。矛盾三配置文件初始化与权限的原子性保障手动配置最大的风险是“配置未生效”。比如你执行了openclaw config set channels.dingtalk.enabled true但忘记执行openclaw config set gateway.http.endpoints.chatCompletions.enabled true结果 OpenClaw 启动后钉钉消息能进但 AI 回复永远发不出去因为网关的chatCompletions端点被禁用了。npx openclaw-china/setup的配置向导会将整个配置过程视为一个原子操作。它在向导结束时会生成一个完整的、经过语法校验的~/.openclaw/openclaw.json文件并且会自动执行openclaw config reload命令强制重载。更重要的是它会检查所有必需的父级配置项如gateway.http.endpoints.*是否已启用如果缺失它会主动提示你并帮你补全而不是让你在启动后面对一个难以排查的“半生效”状态。注意npx openclaw-china/setup的本质是一个“配置驱动的安装器”。它不编译任何代码也不修改你的 OpenClaw 核心。它只是智能地调用openclawCLI 的标准命令但以一种人类友好的、防错的方式。因此它完全兼容 OpenClaw 的任何版本只要 v2025.1.0你无需担心升级 OpenClaw 后setup脚本失效。3.2 微信生态的三重迷宫公众号、客服、自建应用如何抉择微信是 OpenClaw China 支持最复杂、也是最容易踩坑的生态。它不是一个平台而是三个相互关联又截然不同的“世界”微信公众号WeChat MP、微信客服WeCom KF、企业微信自建应用WeCom App。很多用户在配置时第一反应是“我要接微信”然后一头扎进公众号配置结果发现客服入口打不开或者员工在企业微信里找不到入口。下面这张表是我根据 2025 年的真实客户案例总结的决策树它能帮你 5 分钟内锁定最适合的接入路径场景描述推荐渠道关键配置项为什么选它典型失败案例个人开发者/学生做 Demo只想快速验证 AI 是否能说话wechat-mp(测试号)messageMode: plain,replyMode: active,activeDeliveryMode: split测试号无需企业认证扫码即用拥有服务号全部权限包括主动发送且plain模式免去 AES 加解密调试split模式让日志实时可见便于调试。用订阅号结果卡在 5 秒回复限制AI 还没调完 API 就超时一直报504 Gateway Timeout。电商公司做“微信小店客服”用户从商品页点击“联系客服”进入对话wecom-kf(微信客服)channels.wecom-kf.openKfId,channels.wecom-kf.corpSecret,channels.wecom-kf.welcomeTextwecom-kf是微信官方为“外部用户”设计的客服通道。openKfId对应客服工作台里的具体客服组corpSecret是客服后台生成的密钥welcomeText是用户首次进入时的欢迎语。它天然支持“从视频号、小程序、支付凭证等任意入口跳转”完美匹配电商场景。错用wecom-app结果用户点击客服入口后跳转到一个空白的企业微信页面因为wecom-app只服务于“已添加企业微信的好友”不支持“陌生用户首次访问”。制造业公司做“内部员工助手”员工在企业微信 App 里直接找“AI小助手”聊天wecom-app(企业微信自建应用)channels.wecom-app.corpId,channels.wecom-app.agentId,channels.wecom-app.asr.enabled: truewecom-app是为企业微信内部生态打造的。agentId对应企业微信后台创建的“自建应用 ID”它能获取员工的完整身份信息部门、职级并支持调用企业微信 API如查询考勤、审批流程。开启asr.enabled后员工发语音AI 能自动转文字再处理。错用wecom智能机器人结果发现无法获取员工手机号也无法调用企业微信的get_user_infoAPI因为智能机器人权限远低于自建应用。深入解析wechat-mp的activeDeliveryMode参数这个参数是微信公众号能否“丝滑”运行的关键但它在官方文档里一笔带过。activeDeliveryMode有两个值split和merged区别远不止“发几条消息”这么简单。split推荐用于调试和测试号它会将 AI 的整个回复流水线onPartialReply的每一次回调都当作一条独立消息发送。例如AI 在思考时输出{tool: search, query: 订单状态}split模式会立刻发一条“正在搜索订单状态…”的消息当搜索结果返回再发一条“您的订单已发货”。优势是反馈即时用户感觉 AI “一直在动”劣势是如果 AI 生成了 10 条日志就会发 10 条消息极易触发微信的“频繁发送”风控导致账号被限流。merged推荐用于生产环境的服务号它会等待整个reply pipeline完全结束后将所有非空的日志和最终结果合并成一条消息发送。上面的例子中用户只会收到一条“您的订单已发货”中间的思考过程完全隐藏。优势是绝对安全永不触发风控劣势是用户会有一段“无响应”的等待时间体验略显迟滞。实操心得我建议在测试阶段一律用split因为它能暴露所有问题。一旦确认逻辑无误上线前务必切换到merged。切换方法不是改openclaw.json而是执行openclaw config set channels.wechat-mp.activeDeliveryMode merged然后重启网关。切记merged模式下wechat-mp插件会自动处理超长消息的分片按 2048 字节 UTF-8 编码长度你无需关心。3.3 QQ 机器人的“隐形战场”Markdown 渲染与流式回复的博弈QQ 平台对 Markdown 的支持是所有渠道里最“薛定谔”的。它既不像钉钉那样原生支持富文本卡片也不像微信那样有严格的safe模式。QQ 私聊C2C对 Markdown 的解析高度依赖客户端版本和消息发送方式。OpenClaw China 的qqbot-china插件为此设计了一套精密的“渲染策略矩阵”而其中最关键的三个参数就是你能否让 AI 的回复“所见即所得”的生命线。参数一channels.qqbot-china.markdownSupport这是一个总开关。设为true插件才会尝试将 AI 的markdown字段内容转换为 QQ 能识别的格式如**加粗**-加粗。设为false所有 Markdown 符号都会原样显示变成一堆#、*、。注意这个参数只对私聊C2C有效群聊和频道消息不受影响。我见过太多用户配置了半天发现 AI 发来的表格全是| 列1 | 列2 |就是因为忘了开这个开关。参数二channels.qqbot-china.c2cMarkdownDeliveryMode这是决定“如何发”的策略。它有三个选项passive整条 Markdown 消息走 QQ 的被动回复接口即POST到https://api.sgroup.qq.com/v2/bots/{appid}/messages/{message_id}。这是最“原生”的方式但 QQ 的被动接口对 Markdown 渲染支持极差长表格、复杂引用几乎必然乱码。proactive-table-only只有当 AI 的回复里包含 Markdown 表格即检测到|---|时整条消息才改走主动发送接口POST到https://api.sgroup.qq.com/v2/bots/{appid}/dms/{guild_id}/messages。这是一种折中方案兼顾了普通消息的效率和表格的完整性。proactive-all强烈推荐所有 Markdown 消息无论是否含表格一律走主动发送接口。主动接口对 Markdown 的解析能力远强于被动接口能完美渲染标题、列表、代码块。这是让 QQ 私聊体验媲美钉钉的唯一途径。执行命令openclaw config set channels.qqbot-china.c2cMarkdownDeliveryMode proactive-all参数三channels.qqbot-china.c2cMarkdownChunkStrategy这是“如何切”的算法。当一条 Markdown 消息太长比如一个 50 行的表格QQ 主动接口也会拒绝接收。此时chunkStrategy就决定了插件如何安全地把它切成多段length旧版默认简单粗暴地按字节长度切分。结果就是“表头在第一条第 1 行数据在第二条第 2 行数据在第三条”用户看到的是一堆碎片。markdown-block新版默认强烈推荐智能识别 Markdown 的语义块。它会优先在# 标题、|---|分割线、 引用、- 列表项这些自然边界处切分。对于表格它会确保“一行完整的| 数据1 | 数据2 |”作为一个整体不会被拆开。即使上游 AI 流式输出把一行表格拆成两段插件也会先在本地合并再切分。执行命令openclaw config set channels.qqbot-china.c2cMarkdownChunkStrategy markdown-block提示proactive-allmarkdown-block是 QQ 私聊的黄金组合。但要注意主动发送需要guild_id频道 ID或dms私聊会话 IDqqbot-china插件会自动从入站消息中提取并缓存你无需手动配置。如果发现主动发送失败大概率是known-targets.json文件损坏删除~/.openclaw/qqbot/data/known-targets.json后重启网关即可自动重建。4. 实操过程与核心环节实现从零开始45 分钟完成四平台接入4.1 环境准备与前置检查绕过 90% 的“安装失败”在敲下第一个npx命令之前请务必完成以下三项检查。这三步看似简单却是我帮客户远程支持时解决最多“安装失败”问题的前置动作。第一步验证 Node.js 与 npm 的版本与权限OpenClaw China 严格要求 Node.js v20.0.0。执行node -v如果输出v18.18.2或更低请立即升级。不要用nvm因为nvm切换的 Node.js 版本可能与系统 PATH 冲突。最稳妥的方式是# 下载并安装 Node.js v20.12.0 LTSLinux x64 curl -fsSL https://nodejs.org/dist/v20.12.0/node-v20.12.0-linux-x64.tar.xz | sudo tar -xJf - -C /opt/ sudo ln -sf /opt/node-v20.12.0-linux-x64/bin/node /usr/local/bin/node sudo ln -sf /opt/node-v20.12.0-linux-x64/bin/npm /usr/local/bin/npm # 验证 node -v # 应输出 v20.12.0 npm -v # 应输出 10.2.4注意npm的权限必须是root。执行npm config get prefix如果输出不是/usr/local说明 npm 全局安装目录被修改过这会导致npx无法找到全局安装的包。执行sudo npm config set prefix /usr/local修复。第二步检查 18789 端口与防火墙OpenClaw 默认监听18789端口。执行sudo lsof -i :18789如果返回非空结果说明端口被占用。你可以杀掉占用进程sudo lsof -t -i :18789 | xargs kill -9或者修改端口在后续openclaw gateway命令中加入--port 18790更重要的是防火墙。如果你的服务器在阿里云、腾讯云上安全组规则必须放行18789端口的入方向 HTTP 流量。很多用户配置完所有参数却收不到钉钉的 Webhook根源就是云厂商的安全组没开。本地测试可以暂时关闭防火墙sudo ufw disableUbuntu或sudo systemctl stop firewalldCentOS。第三步创建专用用户与目录绝对禁止用root用户运行 OpenClaw。创建一个专用用户openclawsudo adduser --disabled-password --gecos openclaw sudo usermod -aG sudo openclaw sudo su - openclaw # 创建工作目录 mkdir -p ~/openclaw-workspace cd ~/openclaw-workspace所有后续操作都在openclaw用户下进行。~/.openclaw目录OpenClaw 的配置和数据目录会自动创建在此用户家目录下权限清晰便于审计和备份。4.2 四平台接入全流程一条命令四次确认一次成功现在让我们进入真正的实操。整个过程你只需要记住一个核心命令npx openclaw-china/setup。它会引导你完成一切。阶段一启动向导与基础选择在openclaw用户的~/openclaw-workspace目录下执行npx openclaw-china/setup你会看到一个清晰的交互式菜单Welcome to OpenClaw China Setup Wizard! 1. Install the unified channels plugin (openclaw-china/channels) 2. Configure channels (DingTalk, Feishu, QQ, WeCom, WeChat MP, etc.) 3. Exit Please select an option [1-3]: 1选择1向导会自动下载并安装openclaw-china/channels。安装完成后它会提示✅ Unified channels plugin installed successfully! Now lets configure your channels.阶段二渠道配置——微信公众号测试号选择2进入配置。向导会列出所有支持的渠道输入wechat-mpWhich channel would you like to configure? (e.g., dingtalk, wechat-mp, qqbot-china): wechat-mp向导会自动识别你尚未配置wechat-mp并开始提问❓ What type of WeChat MP are you using? 1. Subscription Account (订阅号) 2. Service Account (服务号) 3. Test Account (测试号) ← Recommended for beginners! Please select [1-3]: 3 ❓ Please enter your Test Accounts AppID (found in mp.weixin.qq.com): AppID: wx1234567890abcdef ❓ Please enter your Test Accounts Token (Callback Token): Token: my_test_token_123 ❓ Please enter your Test Accounts EncodingAESKey (43 chars, optional for plain mode): EncodingAESKey: (Press Enter to skip for plain mode) ❓ Which message mode do you prefer? 1. plain (Simple, no encryption, recommended for testing) 2. safe (Encrypted, required for production) Please select [1-2]: 1 ❓ Which reply mode do you prefer? 1. passive (5-second limit, for Subscription Accounts) 2. active (No limit, for Service/Test Accounts) ← Recommended! Please select [1-2]: 2 ❓ How should active messages be delivered? 1. split (Send each log as a separate message, good for debugging) 2. merged (Send final result as one message, good for production) Please select [1-2]: 1 ✅ WeChat MP (Test Account) configured successfully!向导会自动生成配置并写入~/.openclaw/openclaw.json。此时wechat-mp的配置项已全部就位。阶段三渠道配置——钉钉、QQ、飞书批量配置回到主菜单再次选择2这次输入dingtalkWhich channel would you like to configure? (e.g., dingtalk, wechat-mp, qqbot-china): dingtalk ❓ Please enter your DingTalk Apps Client ID (found in open-dev.dingtalk.com): Client ID: dingabc123def456 ❓ Please enter your DingTalk Apps Client Secret: Client Secret: your_dingtalk_secret_789 ❓ Enable AI Card for rich responses? (y/n): n ✅ DingTalk configured successfully!接着输入qqbot-chinaWhich channel would you like to configure? (e.g., dingtalk, wechat-mp, qqbot-china): qqbot-china ❓ Please enter your QQ Bots App ID (found in q.qq.com): App ID: 123456789 ❓ Please enter your QQ Bots Client Secret: Client Secret: your_qq_secret_012 ❓ Enable Markdown support for C2C? (y/n): y ❓ Which Markdown delivery mode? (proactive-all is recommended): proactive-all ✅ QQBot configured successfully!最后输入feishu-chinaWhich channel would you like to configure? (e.g., dingtalk, wechat-mp, qqbot-china): feishu-china ❓ Please enter your Feishu Apps App ID (found in open.feishu.cn): App ID: cli_abc123def456 ❓ Please enter your Feishu Apps App Secret: App Secret: your_feishu_secret_789 ✅ Feishu configured successfully!至此四个平台的配置全部完成。向导会汇总 Configuration Summary: - WeChat MP (Test Account): ✅ Enabled - DingTalk: ✅ Enabled - QQBot: ✅ Enabled - Feishu: ✅ Enabled All configurations have been saved to ~/.openclaw/openclaw.json.阶段四启动网关与验证