☰
OpenClaw 从入门到实战 - 开源 AI 智能体部署指南-下:Discord 与微信接入配置
2026/9/30 21:43:17 网站建设 项目流程

1. 为什么 Discord 与微信双通道接入是 OpenClaw 落地的关键一步

OpenClaw 是一个开源的 AI 智能体框架,它能让你把大模型能力接到真实的消息平台上,让智能体在群里、私聊里替你干活。基础部署完成后,很多人会卡在同一个地方:Gateway 起来了,模型也配好了,但消息发出去没人回。问题往往不在模型,而在通道接入这一层。

这篇是「OpenClaw 从入门到实战」的下篇,聚焦 Discord 与微信双通道接入配置。适合已经完成 OpenClaw 基础部署、Node.js 环境正常、Gateway 能本地启动的开发者。读完之后,你应该能拿到一份可直接复制的 config.toml 与 settings.json 骨架,配好 TaoToken 统一 Key,并用消息收发动作验证链路是否真的通了。

Discord 和微信的组合有它的道理。Discord 的 Bot 创建流程清晰,开发者门户里点几下就能拿到 Token,权限模型也直观,适合做社区、团队协作、自动化通知。微信则覆盖了国内最高频的沟通场景,企业微信有官方 API 支持,个人微信可以通过 Wechaty 这类桥接方案接入。两条通道并行,等于让智能体同时出现在你的技术社区和日常办公流里。

我试过只接一条通道的版本,结果是:Discord 里跑得好好的 Agent,到了微信场景要重新搭一遍逻辑。双通道接入的核心价值在于统一入口——消息进来后走同一套 OpenClaw 处理管线,模型调用、提示词、权限控制都复用,只有通道适配层不同。这样你维护的是一套智能体逻辑,而不是两套。

接入前需要确认几件事。Node.js 版本要 >= 22,这是 OpenClaw 的硬性要求。Gateway 默认监听 127.0.0.1:18789,如果你打算让外部回调进来,需要处理好反向代理或内网穿透。模型侧建议用 TaoToken 统一管理 Key,后面会给出具体配置。Discord 侧需要开发者门户账号,微信侧根据你选企业微信还是个人微信,准备对应的凭证。

这一篇的结构是这样:先讲 TaoToken 前置配置,再给 Discord 和微信的可复制配置,然后是连通性验证,接着是常见报错排查,最后是 CTA。每一步都有命令和预期输出,你可以边看边操作。

2. TaoToken 前置配置:统一 Key 管理与模型接入

在接通道之前,先把模型侧的事情理清楚。OpenClaw 支持多模型提供商,但如果你每个通道、每个模型都单独配 Key,配置文件会很快变成一团乱麻。TaoToken 的作用是提供一个统一的 API 入口,你只需要维护一份 Key,就能在 OpenClaw 里调用多个模型。

TaoToken 的官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数,配置时直接用这个。

先拿到你的 API Key。登录后进入控制台,在 API Keys 页面创建一个新 Key。这个 Key 就是你在 OpenClaw 里填的凭证。建议给 Key 起一个能识别用途的名字,比如 openclaw-discord-wechat,方便后面轮换时定位。

OpenClaw 的模型配置有两种方式:命令行和配置文件。命令行适合快速验证,配置文件适合长期维护。先看命令行方式:

# 设置默认模型提供商为 taotoken openclaw config set ai.provider "taotoken" # 设置 TaoToken API Key openclaw config set ai.taotoken.apiKey "sk-your-taotoken-key" # 设置 Base URL openclaw config set ai.taotoken.baseUrl "https://taotoken.net/api" # 设置默认模型,比如 claude-3-5-sonnet openclaw config set ai.taotoken.model "claude-3-5-sonnet-20241022" # 设置默认使用的模型别名 openclaw config set ai.default "taotoken"

如果你更喜欢直接编辑配置文件,OpenClaw 的主配置在 ~/.openclaw/openclaw.json。下面是一个 settings.json 骨架,你可以把这段合并进去:

{ "ai": { "provider": "taotoken", "default": "taotoken", "taotoken": { "apiKey": "sk-your-taotoken-key", "baseUrl": "https://taotoken.net/api", "model": "claude-3-5-sonnet-20241022", "timeout": 30000, "maxRetries": 2 } } }

这里有几个参数值得说明。timeout 是单次请求超时,单位毫秒,默认 30000 够用,如果你的网络到 API 端点延迟高,可以调到 60000。maxRetries 是失败重试次数,设 2 表示最多重试两次,避免偶发网络抖动导致消息丢失。model 字段填你实际要用的模型 ID,TaoToken 支持的模型列表可以在文档里查。

如果你需要多模型切换,可以在 taotoken 下面加 models 数组:

{ "ai": { "provider": "taotoken", "default": "taotoken", "taotoken": { "apiKey": "sk-your-taotoken-key", "baseUrl": "https://taotoken.net/api", "model": "claude-3-5-sonnet-20241022", "models": [ { "id": "claude-3-5-sonnet-20241022", "alias": "claude", "description": "推理能力强,适合复杂任务" }, { "id": "gpt-4", "alias": "gpt4", "description": "综合能力均衡" }, { "id": "qwen-max", "alias": "qwen", "description": "中文场景优化" } ] } } }

配好之后,用一条命令验证模型侧是否通:

openclaw test model --provider taotoken

预期输出类似:

TaoToken connection successful Base URL: https://taotoken.net/api Model: claude-3-5-sonnet-20241022 Response time: 842ms

如果这一步报 401,说明 Key 不对或者没生效,先解决模型侧再往下走。通道接入依赖模型侧正常,否则消息进来了也生成不了回复。

TaoToken 的 Coding Plan 适合长期编码和 Agent 场景,如果你打算让 OpenClaw 持续跑自动化任务,可以了解一下。模型对话入口可以用来快速验证模型是否可用。API Keys 页面是管理 Key 的地方,接入文档里有更详细的参数说明。

3. 可复制配置:Discord 与微信双通道 config.toml 骨架

这一节给出 Discord 和微信的完整配置。OpenClaw 的通道配置可以写在 openclaw.json 里,也可以用 config.toml 管理。下面这份 config.toml 骨架覆盖了 Discord 和微信两个通道,你可以直接复制后替换占位符。

先看 Discord 侧的准备工作。访问 Discord 开发者门户,创建一个 New Application,然后在 Bot 页面点击 Add Bot,Reset Token 后复制 Token。这个 Token 只显示一次,保存好。权限方面,至少勾选 Send Messages、Read Message History、Use Slash Commands、Embed Links、Attach Files。然后用 OAuth2 URL 生成器把 Bot 邀请到你的服务器,URL 格式是:

https://discord.com/api/oauth2/authorize?client_id=YOUR_CLIENT_ID&permissions=2147483648&scope=bot

把 YOUR_CLIENT_ID 替换成 Application ID,在 General Information 里能找到。

微信侧分两种方案。企业微信走官方 API,需要 CorpID、AgentId、Secret、Token、EncodingAESKey,还要配回调 URL。个人微信走 Wechaty,需要跑一个 Node.js 桥接进程,扫码登录后把消息转发给 OpenClaw。下面配置里两种都给了,你按需启用。

# ~/.openclaw/config.toml # OpenClaw 双通道配置骨架 # 替换所有 YOUR_xxx 占位符后再使用 [gateway] bind = "127.0.0.1" port = 18789 verbose = true [ai] provider = "taotoken" default = "taotoken" [ai.taotoken] apiKey = "sk-your-taotoken-key" baseUrl = "https://taotoken.net/api" model = "claude-3-5-sonnet-20241022" timeout = 30000 maxRetries = 2 [channels.discord] enabled = true token = "YOUR_DISCORD_BOT_TOKEN" clientId = "YOUR_DISCORD_CLIENT_ID" groupPolicy = "allowlist" streaming = "off" autoReply = true [channels.wechat] enabled = true mode = "wechaty" # 可选 wechaty 或 wework [channels.wechat.wechaty] endpoint = "http://127.0.0.1:18789/api/message" botName = "openclaw-bot" autoReply = true [channels.wechat.wework] corpId = "YOUR_WEWORK_CORP_ID" agentId = "YOUR_WEWORK_AGENT_ID" secret = "YOUR_WEWORK_SECRET" token = "YOUR_WEWORK_TOKEN" encodingAESKey = "YOUR_WEWORK_AES_KEY" callbackUrl = "https://your-domain.com/wework/callback" [plugins.entries] discord = { enabled = true } wechat = { enabled = true }

如果你用 JSON 格式,对应的 settings.json 片段如下:

{ "channels": { "discord": { "enabled": true, "token": "YOUR_DISCORD_BOT_TOKEN", "clientId": "YOUR_DISCORD_CLIENT_ID", "groupPolicy": "allowlist", "streaming": "off", "autoReply": true }, "wechat": { "enabled": true, "mode": "wechaty", "wechaty": { "endpoint": "http://127.0.0.1:18789/api/message", "botName": "openclaw-bot", "autoReply": true } } }, "plugins": { "entries": { "discord": { "enabled": true }, "wechat": { "enabled": true } } } }

个人微信的 Wechaty 桥接进程需要单独跑。在 ~/.openclaw/wechaty 目录下初始化项目:

mkdir -p ~/.openclaw/wechaty cd ~/.openclaw/wechaty npm init -y npm install wechaty

然后创建 bot.js,核心逻辑是监听微信消息,转发到 OpenClaw 的 /api/message 端点,再把回复发回微信。关键代码结构:

const { WechatyBuilder } = require('wechaty') const OPENCLAW_URL = process.env.OPENCLAW_URL || 'http://127.0.0.1:18789' const OPENCLAW_API = `${OPENCLAW_URL.replace(/\/$/, '')}/api/message` const bot = WechatyBuilder.build({ name: 'openclaw-bot' }) bot.on('scan', (qrcode, status) => { const url = `https://wechaty.js.org/qrcode/${encodeURIComponent(qrcode)}` console.log(`[扫码] 状态: ${status}`) console.log(`[扫码] 请用微信扫描: ${url}`) }) bot.on('login', (user) => { console.log(`[登录] ${user.name()} 已登录`) }) bot.on('message', async (message) => { if (message.self()) return const text = message.text()?.trim() if (!text) return const talker = message.talker() const room = message.room() const from = room ? `群[${room.topic()}]@${talker.name()}` : talker.name() console.log(`[消息] ${from}: ${text}`) try { const response = await fetch(OPENCLAW_API, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ platform: 'wechat', message: text, userId: talker.id, userName: talker.name(), roomId: room?.id, roomTopic: room?.topic(), }), }) if (!response.ok) { throw new Error(`OpenClaw 返回 ${response.status}`) } const result = await response.json() const reply = result?.reply ?? result?.content ?? result?.text if (reply) { await message.say(String(reply)) } } catch (error) { console.error('[错误] 转发失败:', error.message) await message.say(`收到: ${text}\n(OpenClaw 未响应,请检查服务)`) } }) bot.on('error', (error) => { console.error('[Bot 错误]', error) }) bot.start() .then(() => console.log(' Bot 已就绪,等待扫码登录')) .catch((err) => { console.error(' 启动失败:', err) process.exit(1) })

启动桥接进程:

cd ~/.openclaw/wechaty node bot.js

终端会输出二维码链接,用微信扫码登录。登录成功后,微信消息就会转发到 OpenClaw。

企业微信方案需要配置回调 URL。如果你有公网服务器,用 Nginx 反代到 127.0.0.1:18789。如果是本地开发,可以用内网穿透工具把 18789 暴露出去,然后在企业微信后台填回调地址。Nginx 配置片段:

server { listen 443 ssl http2; server_name your-domain.com; ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; location /wework/callback { proxy_pass http://127.0.0.1:18789; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

配置完成后,启动 Gateway:

openclaw gateway start --verbose

预期输出:

🦞 OpenClaw 2026.3.2 — Gateway started Listening on http://127.0.0.1:18789 Discord Bot connected: YourBotName#1234 WeChat bridge connected: openclaw-bot

到这里,双通道配置骨架就完成了。接下来验证消息收发。

4. 验证请求:Discord 与微信消息收发连通性测试

配置写完不代表链路通了。这一节给出具体的验证动作,每一步都有预期结果,你可以对照排查。

先验证 Gateway 本身是否正常。打开浏览器访问 http://127.0.0.1:18789 ,如果能看到 OpenClaw 的界面,说明 Gateway 起来了。或者用 curl:

curl -s http://127.0.0.1:18789/health

预期返回:

{ "status": "ok", "version": "2026.3.2", "channels": { "discord": "connected", "wechat": "connected" } }

如果 channels 里某个通道显示 disconnected,先看 Gateway 日志:

openclaw logs --tail 50

Discord 侧验证。在你的 Discord 服务器里,找到一个 Bot 有权限的频道,@你的 Bot 发一条消息:

@YourBot 你好,测试一下

预期 Bot 会在几秒内回复。如果没回复,检查三件事:Bot 是否在线(在成员列表里看状态)、Token 是否正确、频道权限是否包含 Send Messages。可以用这条命令单独测 Discord 连接:

openclaw test connection --platform discord

预期输出:

Discord connection test passed Bot: YourBotName#1234 Guilds: 1 Latency: 120ms

微信侧验证。如果你用 Wechaty,扫码登录后,用另一个微信号给登录的号发消息:

测试消息

预期桥接进程的终端会打印[消息] xxx: 测试消息,然后 OpenClaw 生成回复,微信里收到回复。如果桥接进程没打印消息,说明 Wechaty 没登录成功,重新扫码。如果打印了消息但没回复,看 OpenClaw 日志里有没有/api/message的请求记录。

企业微信侧验证。在企业微信后台的应用详情页,点击「验证」按钮,OpenClaw 终端应该输出:

WeWork callback verification successful

然后给应用发消息,检查是否收到回复。企业微信的回调验证依赖 Token 和 EncodingAESKey 正确,如果验证失败,先核对这两个值。

模型侧验证。通道通了但回复内容为空,可能是模型调用失败。单独测模型:

openclaw test model --provider taotoken --prompt "你好"

预期输出:

Model response received Provider: taotoken Model: claude-3-5-sonnet-20241022 Response: 你好!有什么可以帮你的? Latency: 920ms

如果这一步报错,回到第 2 节检查 TaoToken 配置。常见错误是 Base URL 写错,注意是 https://taotoken.net/api ,不要多加路径。

端到端验证。Discord 和微信都通了之后,做一次完整链路测试:在 Discord 里 @Bot 问一个问题,然后在微信里问同样的问题,对比两边回复是否一致。如果一致,说明双通道走的是同一套模型逻辑,接入成功。

验证过程中可以用openclaw logs --follow实时看日志,消息进来、模型调用、回复发出,每个环节都有记录。日志里出现reading choices相关报错,通常是模型返回格式解析问题,检查 TaoToken 返回的 JSON 结构是否和 OpenClaw 预期一致。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth

接入过程中有几类报错反复出现。这一节按报错原文整理,给出原因和解决动作。

401 Unauthorized。这个报错出现在模型调用或通道认证环节。如果是模型侧,说明 TaoToken API Key 无效或过期。检查 openclaw.json 里 ai.taotoken.apiKey 的值,确认没有多余空格。重新在控制台生成一个 Key 替换。如果是 Discord 侧,说明 Bot Token 不对,去开发者门户 Reset Token 后重新填入。企业微信侧 401 通常是 Secret 错误,核对 CorpID 和 Secret 是否匹配。

local proxy failed。这个报错说明 OpenClaw 尝试通过本地代理访问外部服务但失败了。检查你的网络环境,确认没有配置冲突的代理设置。如果你在 openclaw.json 里配了 proxy 字段,先注释掉再试。另外确认 Gateway 的 bind 地址是 127.0.0.1,如果写成 0.0.0.0 而防火墙没放行,也会出现类似错误。

reading choices 相关报错。典型报错是Cannot read properties of undefined (reading 'choices')。这说明模型返回的 JSON 里没有 choices 字段,OpenClaw 解析失败。原因通常是 Base URL 配错,请求打到了非预期端点。确认 ai.taotoken.baseUrl 是 https://taotoken.net/api ,不要带多余路径。另一个可能是模型 ID 写错,TaoToken 返回了错误信息而不是正常响应。用openclaw test model单独验证。

OAuth 相关报错。Discord Bot 邀请时如果 scope 不对,会出现 OAuth 错误。确认邀请 URL 里 scope=bot,permissions 值正确。企业微信的回调验证如果报 OAuth 类错误,检查 Token 和 EncodingAESKey 是否和后台一致。Wechaty 扫码登录如果报 OAuth 失败,通常是微信版本兼容问题,尝试用 iPad 协议或换一个 puppet。

端口被占用。报错Port 18789 is already in use。找出占用进程:

lsof -ti:18789 | xargs kill -9

或者换端口启动:

openclaw gateway start --port 18790

Node.js 版本不符。报错OpenClaw requires Node.js >= 22.0.0。用 nvm 升级:

nvm install 22 nvm use 22 node -v

Wechaty is not a constructor。这是 Wechaty v1.x 的 API 变化导致的。不要用new Wechaty(),改用WechatyBuilder.build()。代码里已经给了正确写法。

消息收到但不回复。检查 OpenClaw 日志里/api/message的请求体和响应体。如果请求体里 platform 字段和配置的通道名不一致,OpenClaw 可能路由不到对应处理器。Discord 消息的 platform 是 discord,微信是 wechat,企业微信是 wework。

Discord Bot 在线但不响应 @。检查 Bot 的 intents 设置。在开发者门户的 Bot 页面,确保 Message Content Intent 是开启的。没有这个 intent,Bot 收不到消息内容。

企业微信回调验证失败。按顺序检查:Token 是否和后台一致、EncodingAESKey 是否 43 位、回调 URL 是否公网可达、Nginx 是否把请求正确转发到 18789。可以用 curl 模拟企业微信的验证请求,看 OpenClaw 是否返回正确的 echostr。

排查时善用openclaw diagnose --verbose,它会输出环境检查、配置检查、连接检查的详细结果。日志级别调到 debug 能看到更多细节:

openclaw config set log.level "debug" openclaw gateway restart

6. 从双通道到多通道:OpenClaw 接入的下一步

Discord 和微信跑通之后,你会发现 OpenClaw 的通道接入模式是统一的:拿到平台凭证,填进配置,启动 Gateway,验证消息收发。同样的模式可以复制到飞书、钉钉、Slack、Telegram 等平台。

如果你需要长期跑编码类 Agent,TaoToken 的 Coding Plan 提供了更适合持续任务的方案。模型对话入口可以快速验证不同模型在具体任务上的表现。API Keys 页面管理你的凭证,接入文档里有各平台的详细参数说明。

回到这篇的主题,双通道接入的核心是把 Discord 的社区触达和微信的日常办公场景连到同一套智能体逻辑上。配置骨架已经给了,验证动作也列了,剩下的就是动手跑一遍。遇到报错先看日志,再对照第 5 节的排查清单。链路通了之后,你可以开始给智能体加技能,比如代码审查、日报提醒、服务器监控,这些在 OpenClaw 里都是插件化的,配好通道之后扩展起来很快。

最后提醒一点:通道 Token 和 API Key 都是敏感信息,不要提交到公开仓库。用环境变量或 .env 文件管理,配置文件里只留占位符。定期轮换 Key,尤其是 Discord Bot Token 和企业微信 Secret。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询