用 wechat-bot 实现 AI 微信机器人:从扫码登录到多引擎自动回复的完整实操指南
【免费下载链接】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
一条"紧急"消息在 2000 条群聊里沉底,这是值班最真实的痛点。wechat-bot 这个基于 Wechaty 的微信机器人,把这一段接走了:扫码登录后,白名单内群与好友的消息会自动转给 AI 引擎处理,答案直接回进群聊。
先看下它的输入输出。
它能做什么:四组输入输出
- 输入:微信扫码登录 → 输出:7×24 值守的自动回复机器人,私聊和群聊各走一套白名单
- 输入:群里 @机器人 加一句话 → 输出:由你选定的 AI 引擎给出的答复(DeepSeek、ChatGPT、Kimi、Ollama、Pi 等 12 个服务可切换)
- 输入:群内发
/统计 群 XX群→ 输出:该群消息数、高频发言人、活跃时段的本地报告,全程不调 AI - 输入:
wb wx history、wb wx sns-search→ 输出:本机微信聊天记录、联系人、群成员、朋友圈缓存的读取与全文搜索
五分钟跑起来:安装 wechat-bot 与配置 .env
前置要求 Node.js ≥ 18(推荐 LTS)。
git clone https://gitcode.com/GitHub_Trending/we/wechat-bot cd wechat-bot npm i && npm link cp .env.example .env.env最小可用键值对:
| 键 | 含义 | 示例 |
|---|---|---|
BOT_NAME | 机器人账号昵称,必须带 @ | @可乐 |
ALIAS_WHITELIST | 允许私聊的备注/昵称,逗号分隔 | 张三,李四 |
ROOM_WHITELIST | 允许接入的群名,逗号分隔 | 技术交流群 |
AUTO_REPLY_PREFIX | 可选,消息以该前缀开头才回复 | 问: |
WECHAT_STORE_MESSAGES | 消息是否落盘本地 JSONL | true |
装完看三条主线。
能力拆解:触发规则、引擎切换、日志链路
消息触发机制
私聊要求发送者在ALIAS_WHITELIST;群聊要求群名在ROOM_WHITELIST且消息里 @ 了机器人;非文本消息一律不进回复链路。这套限制是故意的——避免机器人在大群里逐条抢话。核心判断在 sendMessage.js。
BOT_NAME=@可乐 ROOM_WHITELIST=技术交流群,产品讨论组 AUTO_REPLY_PREFIX=AI 引擎切换策略
回复引擎由启动参数--serve指定,覆盖 ChatGPT、doubao、deepseek、Kimi、Xunfei、deepseek-free、302AI、dify、ollama、tongyi、claude、pi 共 12 个服务,传了不认识的值会回落到 ChatGPT 实现,映射表见 serve.js。
wb start --serve deepseek日志与分析链路
开启落盘后,每条消息追加写入.data/wechat/messages.jsonl(路径可用WECHAT_DATA_DIR改)。群内/统计只读这份本地数据;/分析会取最近 120 条消息样本交给当前引擎出报告,路由逻辑在 commandRouter.js 与 wechatAnalyzer.js。
WECHAT_DATA_DIR=.data/wechat WECHAT_STORE_MESSAGES=true跑通才是开始。
上手三步走:选引擎、定规则、验闭环
① 选引擎:挑一个有 key 的服务,DeepSeek 便宜、ollama 全本地不花钱,把对应 key 写进.env。
wb start --serve deepseek② 定规则:.env里只动三个字段——BOT_NAME(带 @)、两个白名单,填完保存。
vim .env③ 验闭环:在白名单群 @ 它问一个问题,看是否回话;随后发几条消息再跑一次本地统计,确认落盘链路通了。
wb analyze --room "技术交流群" --stats-only能用了,再改。
进阶玩法:自定义触发策略与多引擎路由
自定义触发策略
主号用户不想被每次 @ 打扰时,把AUTO_REPLY_PREFIX填上:群聊消息去掉 @ 主体并 trim 后按前缀匹配,私聊 trim 后直接匹配。命令前缀可用BOT_COMMAND_PREFIX换,ENABLE_REMOTE_OPENCLI=true时还能在微信里远程执行本机 OpenCLI 命令。
AUTO_REPLY_PREFIX=问: BOT_COMMAND_PREFIX=bot多引擎路由
同一条消息链路可挂不同引擎各干各的活:日常问答用 deepseek,隐私敏感的群分析切本地 ollama,复杂任务交给 Pi agent(用法见 docs/pi-im-agent.md),无需改代码,只换参数。
wb start --serve ollama wb analyze --room "技术交流群" --serve pi长期怎么跑。
部署与运维:本地与 Docker
本地跑适合调试和改配置,Docker 适合环境隔离与常驻,二选一:
wb agent --im wechat --agent pi docker build . -t wechat-bot && docker run -d --rm --name wechat-bot -v $(pwd)/.env:/app/.env wechat-bot卡住了查表。
排错速查:症状与解法
| 症状 | 解法 |
|---|---|
| 扫码登录后没有回复 | 核对BOT_NAME是否@昵称格式;群聊是否 @ 了机器人、群名是否在ROOM_WHITELIST;非文本消息不会触发 |
能自动回复,但/统计说没有数据 | WECHAT_STORE_MESSAGES被设为false,或.data/wechat/messages.jsonl还没生成 |
| 云端引擎请求超时 | 终端需走代理,并确认 API Key、余额、模型名;OpenAI/Claude/Kimi 对网络尤其敏感 |
| puppeteer 下载 Chromium 失败 | 设置环境变量PUPPETEER_SKIP_DOWNLOAD=true后重装依赖 |
| 微信弹出外挂/风控警告 | 默认免费 web 协议易触发风控,切换付费协议并控制登录频率 |
| Pi 首次回复特别慢 | PI_BIN='pi'装到本机,避免每次走 npx 冷启动 |
收尾
wechat-bot 的结构可以概括为:白名单决定谁有资格说话,--serve决定谁负责回答,JSONL 是唯一留痕的消息账本,引擎和触发规则都只是可替换的插件。建议你先别碰飞书和 Pi,直接用 deepseek 或 ollama 把群内 @ 自动回复跑通,然后在群里发一次/统计 群 群名,看到本地报告之后再决定下一步往哪扩。
【免费下载链接】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),仅供参考