wechat-bot指南:3步搭建支持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
wechat-bot 是一个基于 WeChaty 框架的多 AI 自动回复微信机器人。微信扫码登录后,它把白名单内好友和群的消息交给 DeepSeek、Ollama、Claude、Pi 等服务处理并自动回发,同时提供聊天记录本地统计分析和本地微信数据访问。适合需要 7×24 小时群问答、客服响应或个人助手的开发者与运营人员。
📦 项目能力一览
- 微信扫码登录:基于 WeChaty 框架,扫码后接收微信消息,回复沿原通道发回,私聊群聊都支持
- 多服务 AI 自动回复:
--serve提供 12 个选项(ChatGPT、Claude、Kimi、豆包、通义、讯飞、DeepSeek、Ollama、Pi、dify、302AI、deepseek-free),启动时随意切换 - 回复范围控制:好友备注与群名双白名单、@触发、前缀匹配三层规则,避免群内消息全部触发回复
- 本地数据存储与分析:消息落盘为本地 JSONL,可做群聊统计、好友互动分析和 AI 深度分析,技术社群可用来归档高频问题,客服可用来复盘咨询数据
- 本地微信数据访问:通过 OpenCLI 的 wx-cli 读取最近会话、群成员、朋友圈缓存(
wb wx系列命令) - 飞书 IM 通道:CLI 方式登录、读消息、搜消息、发消息(实时自动回复尚未接入)
🚀 第一次运行
1. 克隆安装
git clone https://gitcode.com/GitHub_Trending/we/wechat-bot cd wechat-bot npm i npm link要求 Node.js ≥ 18,npm link把wb注册为全局命令;不想注册时,后文所有wb命令都可换成npm run start --。
2. 最小配置
cp .env.example .envBOT_NAME='@你的微信昵称' ALIAS_WHITELIST='好友备注1,好友备注2' ROOM_WHITELIST='群名1,群名2' SERVICE_TYPE='deepseek' WECHAT_STORE_MESSAGES='true'BOT_NAME用于群聊 @ 匹配,@要保留;两个白名单变量决定哪些私聊和群能触发 AI 自动回复;SERVICE_TYPE是默认回复服务,该服务的 API Key(如DEEPSEEK_API_KEY)也在同一文件填写。所有变量统一由 src/config/env.js 加载。
3. 启动并扫码
wb start --serve deepseek终端出现二维码,用微信扫码即完成登录,机器人开始监听白名单内的好友与群,消息逐条追加到.data/wechat/messages.jsonl,可以用cat直接查看。若要改用 Pi agent 回复,执行wb agent --im wechat --agent pi,与npm run agent等价。
🔍 按场景走查核心功能
白名单与@触发配置
消息链路是:微信扫码登录 → WeChaty 收消息 → 本地 JSONL 存储 → AI 服务处理 → 微信发回。触发条件有明确规则:
- 私聊:发送者的备注或昵称必须在
ALIAS_WHITELIST中 - 群聊:群名必须在
ROOM_WHITELIST中,且消息里 @ 了BOT_NAME AUTO_REPLY_PREFIX:文本匹配到指定前缀才触发回复,留空则规则不生效,适合用主账号但不想每次被 @ 都打扰的场景- 非文本消息不进入回复链路
聊天内还有两个内置命令,默认仅对白名单联系人生效:
/统计 群 XX群1 /分析 好友 好友备注/统计只读本地 JSONL、不调用 AI,/分析会把最近消息样本交给当前 serve 服务。触发与路由逻辑在 src/platforms/wechat/commandRouter.js 和 src/wechaty/sendMessage.js。
DeepSeek 与 Ollama 服务配置
--serve决定回复服务,不传时回落到.env里的SERVICE_TYPE。12 个可选服务及所需配置:
| 服务 | 定位 | 必填配置 |
|---|---|---|
| deepseek | 云端 API,成本低、上手快 | DEEPSEEK_API_KEY |
| ollama | 本地模型,无需联网,数据不出机器 | OLLAMA_URL、OLLAMA_MODEL |
| ChatGPT / Claude / Kimi / 豆包 / 通义 / 讯飞 / dify / 302AI / deepseek-free | 云端 API 类,各自独立 Key | 如 OPENAI_API_KEY、CLAUDE_API_KEY |
| pi | 本地 agent 模式,微信作为对外通信渠道 | PI_BIN、PI_AGENT_ARGS |
DeepSeek 是配置成本最低的一条路径:
SERVICE_TYPE='deepseek' DEEPSEEK_API_KEY='你的key'之后wb start --serve deepseek即可启动。该模块用 openai 兼容客户端实现,需要中转地址时加DEEPSEEK_URL,代码在 src/deepseek/。
Ollama 本地部署适合隐私敏感场景:
SERVICE_TYPE='ollama' OLLAMA_URL='http://127.0.0.1:11434/api/chat' OLLAMA_MODEL='qwen2.5:7b'要求本机已安装 Ollama 并拉取对应模型,其 API 与 OpenAI 接近、无需 Key,实现见 src/ollama/。
本地聊天数据分析命令
wb wx init wb wx sessions wb wx history wb wx stats先wb wx init初始化本地微信数据访问,再用sessions/history查最近会话与记录,members/stats查群成员与聊天统计;朋友圈缓存用wb wx sns-feed和wb wx sns-search。这些命令透传到 OpenCLI 的 wx-cli。
深度分析:
wb analyze --room "群名" --stats-only wb analyze --friend "好友备注" --serve ollama第一条只做本地统计、不调用 AI;加--serve则交给指定服务生成深度分析,隐私敏感时建议指向本地模型。统计逻辑在 src/analysis/wechatAnalyzer.js,可用npm run test:analysis单独验证。社群运营可定期跑群活跃度统计,客服可复盘好友互动中的高频问题。
飞书登录与消息发送命令
wb lark login --no-wait wb lark status wb lark send --chat-id oc_xxx --text "你好"login生成 device-flow 授权链接完成授权,status查看授权状态,messages/search按会话读取和检索消息。当前定位需要说清:飞书是 CLI 控制通道,实时事件自动回复尚未接入,飞书消息不会自动推给 AI 回复,实现位于 src/adapters/lark.js。
扩展与二次开发
- 新增 AI 服务:项目用 provider 机制,每个服务一个目录(如 src/deepseek/、src/kimi/),对外导出一个
getXXXReply(prompt)函数。新服务若是 OpenAI 兼容接口,直接复用 openai 客户端、改 baseURL 和 Key 即可;完成后在 src/index.js 的serveList注册并补上 Key 校验。 - 定制回复行为:src/wechaty/sendMessage.js 控制消息怎么发,src/platforms/wechat/commandRouter.js 控制触发路由,想改「只有 @ 才回复」这类规则就从这里入手。
- Pi 常驻 agent:配置
PI_BIN='pi'、PI_AGENT_ARGS='--print --no-session',以wb agent --im wechat --agent pi启动;本机没有全局 pi 时,项目会通过npx --yes @earendil-works/pi-coding-agent自动调起,详见 docs/pi-im-agent.md。 - 外部工具透传:src/adapters/ 统一封装 opencli、pi、lark-cli 三个外部依赖,
wb opencli -- ...可直传底层命令。
🐳 部署与运行建议
本地运行
推荐 LTS 版 Node.js;依赖损坏时删除node_modules和 lock 文件后重装;调用云端服务前确认终端代理可用,OpenAI、Claude 等需要能直连对应服务。
Docker 容器
docker build -t wechat-bot . docker run -d --name wechat-bot -v $(pwd)/.env:/app/.env wechat-bot仓库同时提供Dockerfile和Dockerfile.alpine;.env通过挂载注入容器,Key 不需要打进镜像。
生产环境
- 默认微信 Web 协议存在风控与封号风险,长期运行建议专用账号,必要时切换更稳定的协议
- 配置进程监控与自动重启,做日志轮转,定期备份
.env与.data消息数据 - 定期拉取最新代码并更新依赖
性能要点:隐私敏感内容改用 Ollama 本地模型,消息内容不出机器;云端模型按成本选型,聚合平台与免费渠道可作替代;监控 API 用量与余额,避免高峰时段超额。安全要点:白名单范围保持最小化,不放开全部群;Key 不硬编码进代码,统一走.env;定期更新依赖保持安全补丁。
快速排障
- 扫码无二维码或登录失败→ 检查 Node.js 是否 ≥ 18、依赖是否装全(puppeteer 下载失败可设
PUPPETEER_SKIP_DOWNLOAD=true重试)、终端网络能否访问微信网页版。 - 群里 @ 后不自动回复→ 依次核对:
BOT_NAME是否带@前缀且与账号昵称一致、群名是否在ROOM_WHITELIST、当前--serve服务的 API Key 是否已配置、消息是否为文本。 - 云端服务报错或不回复→ 检查 API Key、余额、模型名,以及终端代理能否访问对应服务。
项目的回复链路是「收消息 → 白名单校验 → provider 处理 → 发回」,逻辑直白,跑通一个服务后换服务或加新服务基本只是改 env 加一个小模块。建议顺序是:先用wb analyze --stats-only跑通本地统计,再接云端服务做自动回复,隐私要求高时切到 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),仅供参考