⭐️ 如果这个项目对你有帮助,欢迎点个Star支持一下! ⭐️
wxChatBot 是一个基于Dify和Gewechat开发的智能聊天机器人项目。它通过集成 Dify AI 平台,提供高效、智能的消息处理和自动回复服务。支持ChatFlow自定义编排AI任务,原生支持永久记忆功能,支持GPT-SoVITS自定义音色,能够发送原生微信语音气泡
微信聊天演示 | ChatFlow功能配置界面 | 语音设置界面
哈喽! 这个项目最初是受到 dify-on-wechat 的启发
在部署过程中,我发现了几个需要改进的地方:
- ChatFlow 功能支持有限
- 本地部署时微信回调地址连接不稳定(尤其是没有公网IP的情况)
- 语音模型只能调用一些大厂预制API,定制音色麻烦
于是我集成了 GPT-SoVITS,实现了自定义语音音色的功能。这样用户可以根据自己的需求定制专属音色
其次是为什么选择Gewechat? 当然是稳定且功能强大了!相较于itchat和wxauto,Gewechat实现微信个人号通道,使用ipad协议登录,相比itchat协议更稳定。 wxauto不支持发送语音气泡,虽然稳定性强,但是很多可个性化的地方支持的不够完善。
未来计划添加更多功能:
- 📄 文档上传与智能问答
- 🎬 视频图片识别处理
- 🎨 多媒体内容生成
理论上,Dify支持的功能都可以整合进来。这个项目可以变成:
- 📚 专属知识库助手
- 📝 个人生活管理工具
- 📊 股票分析(仅作参考)
这主要归功于Dify,它负责复杂的AI处理,而本项目专注于接收和发送结果
我希望这个项目对新手也比较友好,但目前确实需要一定的技术基础。如果你成功部署了,希望你能从中学到有用的知识
废话不多说,玩的开心~
- 支持Dify的ChatFlow功能,提供Agent构建、AI工作流编排、RAG检索、模型管理等能力
- 简化生成式AI应用的构建和运营,大部分Dify功能都可集成
- 内置永久记忆和本地知识库检索功能
- 支持插件和自定义函数扩展
- 无缝对接个人微信,轻松接入微信生态
- 支持文本和语音回复(原生语音泡,非文件形式)
- 通过简单指令(如
#设置)获取管理界面 - 支持管理chatflow(新增)
- 支持管理chat记录(新增)
chatflow管理页(新建) | chatflow管理页(删除) | chat管理页(新建) | chat管理页(删除)
- 基于GPT-SoVITS技术,支持自定义语音模型
- 少量语音样本即可高度还原声音特征
- 支持语音与文本互转功能
- 可配置多种语音参数,实现个性化语音体验
- 基于Gradio开发的Web管理界面,配置简单直观
- 支持Gradio的share=True模式,无需公网IP即可远程访问
- 项目结构清晰,便于自定义和二次开发
- 完整的日志记录与监控系统
wxChatBot/
├── Core/ # 核心功能模块
│ ├── bridge/ # 通信桥接层
│ ├── commands/ # 命令系统
│ ├── difyAI/ # Dify AI集成
│ ├── factory/ # 服务工厂
│ ├── voice/ # 语音处理模块
│ └── web/ # Web管理界面
├── gewechat/ # 微信API集成
│ ├── api/ # API接口封装
│ ├── util/ # 工具接口层
│ └── data/ # 数据存储
├── voice_model/ # 语音模型文件
├── logs/ # 日志文件
├── tmp/ # 临时文件目录
├── config.py # 配置管理
├── main.py # 主程序入口
├── config.example.json # 配置文件示例
└── requirements.txt # 项目依赖
- Python 3.11+
- 一个实名认证的微信账号(建议开通钱包功能并充值少量金额,使用独立设备运行更稳定)
- Dify的Docker环境
- Gewechat的Docker环境
git clone https://github.com/yourusername/wxChatBot.git
cd wxChatBotpip install -r requirements.txt3. 通过Docker构建Dify (可参考: Dify)
git clone https://github.com/langgenius/dify.git
cd dify
cd docker
cp .env.example .env
docker compose up -d4. 通过Docker构建GeweChat (可参考: Gewechat)
docker pull registry.cn-hangzhou.aliyuncs.com/gewe/gewe:latest
docker tag registry.cn-hangzhou.aliyuncs.com/gewe/gewe gewemkdir -p /root/temp
docker update --restart=always gewe
docker run -itd -v /root/temp:/root/temp -p 2531:2531 -p 2532:2532 --privileged=true --name=gewe gewe /usr/sbin/initdocker update --restart=always gewe# 编辑config.json填入必要信息
config.jsonpython main.py启动成功后控制台输出如下:
初次运行,需要修改config.json文件,主要配置项包括:
{
"master_name": "", # 你的微信账号名称(注意是账号名称不是备注,建议使用不易重名的名称)
"dify_api_base": "http://localhost/v1", # dify的地址,一般不用修改
"gewechat_base_url": "http://your_local_ip:2531/v2/api", # 将your_local_ip替换为你的电脑IP地址
"gewechat_token": "", # 初次创建应用,留空,这里自动填写
"gewechat_app_id": "", # 初次创建应用,留空,这里自动填写
"gewechat_callback_url": "http://your_local_ip:1145/v2/api/callback/collect", # 一般不需要改
"server_host": "localhost", # 应该也不需要修改
"settings_url": "", # 自动生成
"GPT-SoVITS_url": "http://127.0.0.1:9880", # GPT-SoVITS的url,一般默认即可
"text_language": "ja", # 模型发送的语音语言(如果为中文之外的语言,需要在Dify端修改提示词)常用的:中文(zh),英文(en),日文(ja)
"call_back_success_falg": false, # 推荐设置为false,这样会少很多莫名其妙的bug
"is_remote_server": false, # 是否为远程服务器,本地部署的就填false
"debug_mode": true, # 可以不改
"log_level": "DEBUG", # 可以不该
"start_time": 1742287344.8490422 # 自动生成
}💡 提示:参考项目中的
config.example.json获取完整配置示例
- 首次运行时,系统会自动配置Gewechat的回调地址
- 新设备在次日凌晨可能会自动掉线(微信安全机制)
- 有时候隔了一天也有可能发消息后没反应
- 解决方案:
- 将
config.json中的call_back_success_falg设为false - 重新扫码登录
- 登录成功后将自动
call_back_success_falg改回true
- 将
- 新版本增加了回调设置的自动判断,省去了这一步
- 为减少回调设置误判的可能性,请在小号扫码登录后,在小号上点击进入与大号的聊天界面以触发状态同步消息
- 一般来说,在扫码登录过后,回调设置都会成功
根据您的操作系统选择合适的安装方式(鼠标单击环境打开折叠):
Windows 系统
# 方式1:使用Anaconda
conda install -c conda-forge ffmpeg
# 方式2:手动安装,前往https://github.com/BtbN/FFmpeg-Builds/releases
# 然后下载ffmpeg-master-latest-win64-gpl.zip
# 解压到某个文件夹内(我这里解压到了本项目的voice_model文件夹中,然后重命名其为ffmpeg)
# 然后需要添加环境变量,将ffmpeg中的名为bin的文件夹添加到系统环境变量中即可
# 验证方法:
ffmpeg -version
# 方式3:使用Chocolatey
choco install ffmpeg.venv 虚拟环境/pip安装
# 1. 打开cmd, 进入项目文件夹
# 2. 激活虚拟环境
.venv\Scripts\activate
# 3. 使用pip安装ffmpeg
pip install ffmpeg-python
# 4. 同上方Windows安装一样,需要设置环境变量
set PATH=你的ffmpeg安装的绝对路径\bin;%PATH%Linux 系统
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# CentOS/RHEL
sudo yum install ffmpegmacOS 系统
# 使用Homebrew
brew install ffmpeg
⚠️ 重要提示:
- 推荐使用Anaconda环境,实测这样安装更加简单
- 安装完成后请确保FFmpeg已添加到系统环境变量
- 如遇到"路径不存在"错误,请检查环境变量配置
- Windows用户可在系统变量Path中添加FFmpeg所在目录
- 原因:Gradio缺少依赖项,一般这个都会有问题,初次启动程序的时候控制台有如下类似内容:
Could not create share link. Missing file: xxx/Lib/site-packages/gradio/frpc_windows_amd64_v0.3
Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps:
1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_windows_amd64.exe
2. Rename the downloaded file to: frpc_windows_amd64_v0.3
3. Move the file to this location: xxx/Lib/site-packages/gradio- 解决方案:
- 下载frpc_windows_amd64
- 重命名该文件为:
frpc_windows_amd64_v0.3(注意是完全改成这个名字,没有后缀.exe) - 移动该文件到:
xxx/Lib/site-packages/gradio, 其中xxx可以在控制台看到,就是你的python环境的位置
如果遇到gewechat创建设备失败,unexpected EOF错误,请排查网络是否是以下情况:
1️. 代理:请关闭代理后尝试;
2️. 国外服务器;
3️. 回调地址为外网;
4️. 异地服务器- Dify环境:必须确保Dify正确部署,这是使用大模型能力的基础
- GPT-SoVITS:如需语音功能,请先完成部署
- Windows用户推荐使用GPT-SoVITS整合包
- 其他系统请参考官方文档部署
- 本地模型:支持使用LM Studio或Ollama部署本地模型
- 在Dify模型配置界面中选择对应选项
- 可根据需求进行深度定制
| 依赖包 | 版本 | 用途 |
|---|---|---|
gradio |
5.21.0 | Web界面框架,用于构建设置页面 |
web.py |
0.62 | Web服务框架,处理回调和API请求 |
requests |
2.32.3 | HTTP请求库,用于与各服务通信 |
ffmpeg-python |
0.2.0 | 音频格式转换,处理语音消息 |
pilk |
0.2.4 | 微信语音编码处理 |
pysilk |
0.0.1 | SILK格式音频处理 |
qrcode |
7.4.2 | 二维码生成,用于微信登录 |
💡 安装提示:
- 建议使用Anaconda环境安装依赖:
conda create -n wxchatbot python=3.11 conda activate wxchatbot # 确保当前在项目路径下 pip install -r requirements.txt- 某些依赖(如 gradio)会自动安装其他必要的包
- 确保系统已安装 FFmpeg(参考上方安装指南)
- 完善ChatFlow相关功能
- 优化Web设置界面
- 微信发送语音开关
- 正式发布V1.0.0版本
- 一键部署的整合包(自带环境)
- 视频/教程
- 可设置的主动发送消息功能
- 用户可设置(自定义)在一定时间段内多次发送消息,Dify那边能够一次性处理
- 批处理操作(针对需要多次执行的指令)
- 增加web端的功能(支持新建对话、删除对话、修改提示词等等)
- 表情包发送
- 支持群聊
- 支持文档上传及处理
- 支持视频、图片识别等
- 用户可以发送语音
- QQ移植
- 长文本网页markdown渲染
你的支持是持续改进这个项目的动力!感谢!!
微信 | 支付宝
| 🎯 基础服务 | 🌟 进阶服务 | 💎 专属服务 |
|---|---|---|
|
📱 私有化部署方案
🔧 远程指导安装与配置 💻 问题解决与故障排查 |
🤖 AI模型私有化部署与调优
🎨 定制对话流程与场景 📊 专属知识库构建 |
📘 源码深度解析
🛠️ 项目二次开发技术咨询 💡 方案应用定制 |
💼 商务合作/赞助咨询:微信 Norcoo (备注:wxChatBot)
| 群类型 | 群号 | 状态 |
|---|---|---|
| ✨ 交流群 | 953715009 | ✅ 已开放 |
| 🎁 赞助群 | 1040728529 | ✅ 已开放 |
感谢你对项目的关注!欢迎各种形式的贡献
-
🐛 问题反馈
- 详细描述遇到的问题
- 提供复现步骤和相关日志
- 说明运行环境和相关配置
-
💡 功能建议
- 描述新功能的用途和应用场景
- 提供设计思路或参考实现
- 分享使用过程中的想法
-
📝 文档改进
- 修正文档中的错误
- 补充安装和配置说明
- 添加使用示例和最佳实践
- 翻译文档到其他语言
-
💻 代码贡献
- 修复已知bug
- 开发新功能
- 优化性能
- 重构代码结构
- 项目代码完善后将提供详细的开发指南(施工中~)
2025-03-25
- 完善网页部分的更新处理机制,实现热更改配置,自动刷新
- 新增:可通过网页配置chatflow以及chat记录的增加和删除
2025-03-19
- 完善README文档内容和排版
2025-03-17
- 优化图片排版,添加英文文档支持
- 增加配置文件示例
- 添加项目介绍和示例图片
- GPT-SoVITS连接成功,实现自定义语音生成
- 实现微信语音消息发送功能
2025-03-12
- 初始项目框架搭建
- 基础功能测试
本项目使用 MIT 许可证。详情请参阅 LICENSE 文件
感谢以下开源项目的支持:
- Dify - 提供强大的AI能力支持
- dify-on-wechat - 项目灵感来源
- KouriChat - 提供了很多创新、有趣的思路
- Gewechat - 微信接口实现
- GPT-SoVITS - 语音合成技术支持
- 本项目仅供技术研究与学习交流
- 禁止用于任何违法或不道德的场景
- 生成内容不代表开发者立场和观点
- 使用者需对自身行为负责
- 开发者不对因使用本项目产生的问题承担责任
如果这个项目对你有帮助,欢迎Star支持!⭐️












