30分钟跑通微信群聊AI自动回复机器人:从零配置启动到Docker部署
2026/9/15 18:08:37 网站建设 项目流程

30分钟跑通微信群聊AI自动回复机器人:从零配置启动到Docker部署

【免费下载链接】wechat-bot🤖 Multi-platform IM AI Agent for Telegram, WhatsApp, Lark, and WeChat. Connects ChatGPT / Claude / Kimi / DeepSeek / Ollama / Pi for auto-replies, community analysis, contact management, and inactive-friend detection.项目地址: https://gitcode.com/GitHub_Trending/we/wechat-bot

群里的客户问题凌晨三点还在进,等早上人工回复已经晚了。用 wechat-bot 让机器人对接大模型,自动回复白名单内的群聊消息,30 分钟跑通本地启动。

技术栈与消息链路全景

技术版本职责替代选项与取舍
Wechaty^1.20.2微信机器人框架(微信协议封装,负责扫码登录与收发消息)itchat:老方案,已停止维护
wechaty-puppet-wechat4u^1.14.14Puppet(底层协议驱动,决定机器人通过哪种通道连接微信)padlocal:稳定性更好但需付费购买
commander^12.0.0CLI 命令解析,提供 start、analyze 等入口yargs:能力相当,生态偏小
dotenv^16.4.5加载 .env 环境变量config:功能更全,对小项目偏重
qrcode-terminal^0.12.0在终端直接绘制登录二维码qrcode:输出图片文件,终端场景不便
axios / openai^1.6.8 / ^4.52.0调用各模型服务的 HTTP 客户端原生 fetch:少一个依赖,但各模型协议需自行适配

消息走单条链路:先写入本地 JSONL 消息库(每行一条 JSON 记录,只追加),再经白名单过滤,通过的消息交给选定的模型服务,回复发回原群聊或私聊。本地消息库同时是群聊统计和 AI 深度分析的数据源,形成「捕获 → 过滤 → 回复 → 分析」闭环。

零配置启动步骤:从克隆到扫码登录

# 环境检查(Node 需 >= v18)并克隆代码 node -v git clone https://gitcode.com/GitHub_Trending/we/wechat-bot && cd wechat-bot
# 安装依赖(国内先切镜像),并生成配置文件 npm config set registry https://registry.npmmirror.com && npm i cp .env.example .env
# 启动机器人,终端出现二维码后用微信扫码登录 npm run start -- --serve ollama

⚠️ 两个高频坑:BOT_NAME 必须带 @ 符号(如 @可乐),漏掉则群聊 @ 触发永远不生效;npm i 卡在 puppeteer 下载时,设置 PUPPETEER_SKIP_DOWNLOAD='true' 重装即可。

消息处理链路:白名单过滤到模型回复

输入是微信的每条消息事件,无论是否回复都会先落入本地消息库。处理环节是白名单过滤:群聊要求群名在 ROOM_WHITELIST 且消息 @ 了机器人,私聊要求发送者在 ALIAS_WHITELIST,非文本消息和机器人自己的消息直接丢弃。输出是模型回复:文本交给 --serve 指定的服务生成答案,回发到原会话;以 / 开头的消息则走命令路由,用于群聊统计或分析。

// defaultMessage 判定链简化骨架 if (!isText || isBotSelf) return // 非文本或机器人自己,不处理 if (isRoom && !roomWhiteList.includes(roomName)) return if (!isRoom && !aliasWhiteList.includes(sender)) return await (room || contact).say(await getServe(serve)(question))

完整逻辑见消息处理模块,消息捕获在消息存储。

环境变量配置速查

参数含义示例值不填的默认行为
BOT_NAME机器人的微信昵称,群聊 @ 触发标识@可乐群聊 @ 触发不生效
ROOM_WHITELIST允许自动回复的群名,逗号分隔产品群,内测群群聊只记录不回复
ALIAS_WHITELIST允许私聊回复的好友昵称或备注张三,李四私聊不自动回复
AUTO_REPLY_PREFIX消息需以此前缀开头才回复/问空串,无前缀限制
WECHAT_STORE_MESSAGES是否把消息写入本地消息库truetrue,默认存储
WECHAT_DATA_DIR消息库目录.data/wechat.data/wechat
OLLAMA_URL / OLLAMA_MODEL本地 Ollama 服务地址与模型名http://127.0.0.1:11434/api/chat启动时提示缺配置,直接退出
PI_BINPi agent 可执行命令pi用 npx 自动拉起,冷启动更慢

易错项一行对比:正确写法BOT_NAME=@可乐,错误写法BOT_NAME=可乐(少了 @,群聊消息里 @ 的字符串永远匹配不上)。

自动回复不生效排错速查

问题一:扫码登录后不回复

  • 症状:群里或私聊发消息,机器人完全无响应
  • 原因:BOT_NAME 与实际昵称不一致,或群名、好友备注不在白名单
  • 解法:核对 .env 中 BOT_NAME 为 @+微信昵称,群名与 ROOM_WHITELIST 完全一致,且群聊消息确实 @ 了机器人

问题二:白名单配置正确仍不回复

  • 症状:@ 机器人后依然没有响应
  • 原因:消息不是文本类型,或设置了 AUTO_REPLY_PREFIX 但消息不匹配
  • 解法:改发纯文本消息,临时把 AUTO_REPLY_PREFIX 设为空串再验证

问题三:npm i 安装失败

  • 症状:卡在 puppeteer 或 chromium 下载报错
  • 原因:浏览器二进制下载超时
  • 解法:设置 PUPPETEER_SKIP_DOWNLOAD='true' 后重装依赖

问题四:云端模型不回复

  • 症状:@ 后超时,控制台出现网络错误
  • 原因:API Key 未填或本机访问不了模型服务
  • 解法:核对 .env 中对应服务的 Key,终端设置 https_proxy 后再跑 node ./cli.js --help 验证

问题五:/统计 命令无数据

  • 症状:群里发 /统计 群 群名,显示消息数为 0
  • 原因:该命令只读本地消息库,还没有捕获过该群的消息
  • 解法:先在群里正常发几条消息,再触发统计

进阶路径:统计、深度分析与本地数据

  1. 群聊数据统计与 AI 深度分析:运行wb analyze --room "群名" --serve pi,微信内置 /分析 命令的入口逻辑见命令路由。
  2. 访问本机微信缓存(会话、群成员、朋友圈):运行wb wx init && wb wx stats
  3. 把 Pi 接成单轮非交互 agent:参考Pi Agent 使用说明,等价命令wb agent --im wechat --agent pi

Docker 一行命令上线与云选型

方案配置适合场景
轻量服务器 1C2GUbuntu 20.04+,预装 Docker个人试用,成本最低,推荐
云 ECS 2C4G固定带宽,数据盘可挂载长期 7x24 运行、需备份消息库
本地常开机器现有 PC 或树莓派零成本,但断电断网即停服
# .env 中写入 SERVICE_TYPE=ollama 跳过交互选择,再构建并运行 docker build -t wechat-bot . docker run -d --name wechat-bot -v $(pwd)/.env:/app/.env -v $(pwd)/.data:/app/.data wechat-bot

⚠️ 默认 wechat4u 是微信网页协议,近期风控较严,账号可能收到外挂警告;重要主号不建议使用,请配专用号。

能力边界与下一步

自动回复仅覆盖文本消息和白名单范围,飞书通道只读不实时,网页协议存在风控风险。建议下一步:先对一个群跑wb analyze --stats-only,确认消息捕获正常,再接入云端模型。

【免费下载链接】wechat-bot🤖 Multi-platform IM AI Agent for Telegram, WhatsApp, Lark, and WeChat. Connects ChatGPT / Claude / Kimi / DeepSeek / Ollama / Pi for auto-replies, community analysis, contact management, and inactive-friend detection.项目地址: https://gitcode.com/GitHub_Trending/we/wechat-bot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询