【开源项目部署分享】Mac 环境制作微信公众号机器人

Mac 环境制作微信公众号机器人:从 Python 环境到安全模式全流程

一、前言「本文不含任何商业推广」

想要在微信里拥有一个属于自己的 DeepSeek 机器人吗?本文将演示如何通过 Mac 本地部署,并解决 Token 校验、环境冲突、内网穿透等核心难题。


二、环境准备

1. 克隆项目

首先从 GitHub 克隆项目源码:

# 克隆代码git clone https://github.com/Dshuishui/WechatAI cd WechatAI/ 

2. Python 环境管理

在 Mac 上,建议使用 Conda 来隔离环境,避免与系统 Python 或 Homebrew Python 产生冲突。

# 创建并激活 Conda 环境(推荐) conda create -n WechatAI python=3.9 conda activate WechatAI 

3. 安装依赖

# 安装核心依赖 pip install -r requirements.txt # 安装公众号渠道必需依赖 pip install web.py 
⚠️ 避坑提醒:如果运行提示 No module named 'web',通常是因为 pip 把包安装到了系统路径或 Homebrew 路径,而非当前的虚拟环境。关于 Mac 中系统自带 Python、Homebrew Python、Conda Python 的路径纠葛,我后续会专门出一期整理教程。

2. 配置文件初始化

下载源码后,第一步必须从模板复制配置文件:

cp config-template.json config.json 

三、配置变量全解析(基于 config.py 源码)

这是本项目最核心的部分。根据 config.py 中的 available_setting 字典,以下是所有变量的详细解释。

完整配置示例

先给出一个可直接参考的完整 config.json 示例(相比项目中的原始文件内容,新增了一些必要的针对微信公众号的设置字段,例如 wechatmp 开头的):

{"channel_type":"wechatmp","model":"deepseek-chat","open_ai_api_key":"你的DeepSeek API密钥","open_ai_api_base":"https://api.deepseek.com/v1","wechatmp_app_id":"你的公众号AppID","wechatmp_app_secret":"你的公众号AppSecret","wechatmp_token":"你自定义的Token暗号","wechatmp_aes_key":"微信后台随机生成的43位EncodingAESKey","wechatmp_port":8080,"claude_api_key":"YOUR API KEY","text_to_image":"dall-e-2","voice_to_text":"openai","text_to_voice":"openai","proxy":"","hot_reload":false,"single_chat_prefix":["bot","@bot"],"single_chat_reply_prefix":"[bot] ","group_chat_prefix":["@bot"],"group_name_white_list":["ChatGPT测试群","ChatGPT测试群2"],"image_create_prefix":["画"],"speech_recognition":true,"group_speech_recognition":false,"voice_reply_voice":false,"conversation_max_tokens":2500,"expires_in_seconds":3600,"character_desc":"你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。","temperature":0.7,"subscribe_msg":"感谢您的关注!\n这里是AI智能助手,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。","use_linkai":false,"linkai_api_key":"","linkai_app_code":""}

配置项分类详解

1. 模型与 API 配置
配置项说明
channel_type渠道类型,公众号填 wechatmp
open_ai_api_key你的 API 密钥,在 DeepSeek 开放平台获取
open_ai_api_baseAPI 接口地址,DeepSeek 需改为 https://api.deepseek.com/v1
model使用的模型名称,如 deepseek-chat
proxy全局代理地址,国内直连 DeepSeek 可留空
temperature回复随机度(0-2),越高越发散,推荐 0.7
2. 微信公众号专属(wechatmp)配置
配置项说明
wechatmp_token自定义暗号,需与微信后台填写的一致
wechatmp_app_id公众号的 AppID,在微信公众平台获取
wechatmp_app_secret公众号的 AppSecret,在微信公众平台获取
wechatmp_aes_keyEncodingAESKey,选择「安全模式」时必填(43位字符串)
wechatmp_port监听端口,Mac 上建议用 8080
💡 科普:Token 是你和微信服务器之间的「验证暗号」。它并不由微信分配,而是你自己随便取的一个字符串(如 my_bot_123),只要你程序里填的跟微信后台填的一致,微信就认为你的服务器是可信的。
3. 聊天触发与人设配置
配置项说明
single_chat_prefix私聊触发词,设为 [""] 则回复所有消息
single_chat_reply_prefix回复时的前缀,用于区分 AI 与真人
character_desc机器人的「人设」描述(System Prompt)
conversation_max_tokens支持上下文记忆的最大字符数
expires_in_seconds会话过期时间(秒),超时后上下文重置
subscribe_msg用户关注时的欢迎语
4. 语音与多媒体
配置项说明
speech_recognition是否开启语音识别(语音转文字)
voice_to_text / text_to_voice指定语音识别/合成引擎(如 openai, baidu, google 等)
text_to_image画图模型,可选 dall-e-2dall-e-3
image_create_prefix触发画图的关键词,如 ["画"]
voice_reply_voice是否用语音回复语音消息
5. 群聊配置
配置项说明
group_chat_prefix群聊中触发机器人的前缀
group_name_white_list允许机器人响应的群聊白名单
group_speech_recognition群聊中是否开启语音识别

四、内网穿透最佳实践:cpolar(Mac 版)

为什么推荐 cpolar?

在国内网络环境中,相比 ngrok、Cloudflare Tunnel,cpolar 更少出现「浏览器安全提示页」。对于微信公众号 Token 校验(GET + echostr)这种对返回内容严格敏感的场景,cpolar 的成功率更高。

1. 注册与安装

1.1 注册账号(必须)

首先访问 cpolar 官网注册账号并登录后台:

cpolar 属于账号绑定型内网穿透工具,后续的 Authtoken 获取、公网域名分配、隧道管理都需要在控制台完成。

1.2 Mac 上安装 cpolar (官方推荐方式)

官方的 macOS 快速入门教程中,首先推荐安装 Homebrew,再通过 Homebrew 安装 cpolar ,而不是直接执行远程安装脚本。

官方 macOS 安装教程

(1)安装 Homebrew(官方方式)

Homebrew 是 macOS 下最常用的包管理工具,提供了安装、卸载、更新、搜索等一整套标准化能力。

官方给出的 Homebrew 安装命令如下:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

该命令的作用是:

  • 下载 Homebrew 官方维护的安装脚本
  • 自动适配当前系统(macOS / Intel / Apple Silicon)
  • 将 Homebrew 安装到标准路径(Apple Silicon 为 /opt/homebrew

安装完成后,可验证:

brew --version 

(2)通过 Homebrew 安装(推荐)

在 Homebrew 安装完成后,执行:

brew tap probezy/core && brew install cpolar 

安装完成后验证:

cpolar version 

如果能正常输出版本号,说明 cpolar 客户端已成功安装。

📌 工程说明:使用 Homebrew 安装的好处在于,它会自动识别当前系统为 Darwin + arm64(Apple Silicon),并下载适配架构的二进制文件,避免因架构判断错误导致安装失败。

⚠️ 关于 curl | sudo bash 安装方式的说明(避坑)

在网络搜索或部分 AI 生成的教程中,常见如下安装方式:

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh |sudobash

需要特别说明的是:

  • 该方式并非 cpolar 在 macOS 上的官方首推安装流程
  • 在部分 macOS + Apple Silicon(M1 / M2 / M3,arm64)设备上,可能会出现:
error: This operating system is not supported 
  • 这是由于脚本内部对系统架构(x86_64 / arm64)做了限制判断,并非用户环境配置错误
  • 同时,从工程安全角度考虑,也不建议在主力开发机上直接执行 curl | sudo bash 这类远程脚本

因此,推荐始终使用 Homebrew 方式安装 cpolar 。

1.3 绑定账号(Authtoken)

登录 cpolar 控制台,在后台获取你的 Authtoken:

然后在终端中执行:

cpolar authtoken 你的Authtoken字符串 

该步骤用于将本地 cpolar 客户端与你的账号绑定,否则无法创建公网隧道。

1.4 启动 HTTP/HTTPS 穿透

假设你在项目中的配置文件 config.json 中设置了:

"wechatmp_port":8080
⚠️ 说明:这里的 config.json 是项目的配置文件,用于指定公众号服务监听端口,并非 cpolar 的配置文件。

当项目监听在本地 127.0.0.1:8080 后,执行:

cpolar http 8080

你会被分配一个公网 HTTPS 地址,例如:

https://xxxx.cpolar.top 

该地址默认走 HTTPS(443),可直接用于微信公众号服务器回调配置。

✍️ 工程实践小结:在 macOS(尤其是 Apple Silicon)环境中,应严格按照官方推荐流程:先安装 Homebrew,再通过 Homebrew 安装 cpolar。这不仅能避免架构不兼容问题,也符合长期维护与工程安全的最佳实践。

五、微信开发者平台配置

  1. 登录平台:登录 微信开发者平台,进入你的公众号管理页面。
  2. 定位配置:在「基础信息」的最下面找到「域名与消息推送配置」进行配置。
  3. 填写详情
配置项填写内容说明
URLhttps://你的cpolar域名.cpolar.top/wx必须在域名后加 /wx 路径
Token你在 config.json 里设置的暗号两边必须完全一致
加解密模式推荐选择「安全模式」更安全,但需要额外配置 AES Key
⚠️ 为什么 URL 末尾必须加 /wx

这是因为该项目的 Web 服务默认将微信消息处理接口挂载在 /wx 路径下,而非根路径 /。如果你只填写 https://xxx.cpolar.top,微信服务器的请求会打到根目录,程序无法正确接收和处理消息,Token 校验也会失败。
⚠️ 注意:选择了安全模式后,点击「随机生成」EncodingAESKey,并将其立刻复制粘贴到 config.json 里的 wechatmp_aes_key 字段中。

六、启动与测试

完成以上所有配置后,在终端执行启动命令:

python app.py 

当日志显示程序已在 8080 端口就绪时,在微信后台点击「提交」并「启用」。

现在,试着给你的公众号发个消息,DeepSeek 就会立刻回复你!🎉

七、常见问题深度解析

1. 为什么会显示「正在思考中」或回复延迟?

这是由微信个人订阅号的限制以及项目的「被动回复」机制共同导致的。

问题根源:微信公众号(尤其是个人订阅号)有一个硬性规定:服务器必须在 5 秒内做出响应

以下是一个真实的日志分析案例:

[INFO][2026-01-20 19:19:13] - [CHATGPT] query=你是谁 [INFO][2026-01-20 19:19:17] - [wechatmp] Request 2 from xxx [INFO][2026-01-20 19:19:22] - [wechatmp] Request 3 from xxx [INFO][2026-01-20 19:19:35] - [ChatGPT] reply=你好!我是DeepSeek... 

发生了什么?

  1. 延迟原因:DeepSeek 模型生成回复耗时约 22 秒(19:19:13 开始,19:19:35 完成)
  2. 微信重试:因为超过了 5 秒,微信服务器以为你的 Mac 没收到,于是连续重试了 3 次(Request 1, 2, 3)
  3. 缓存机制:为防止微信报错,该项目的 passive_reply(被动回复)逻辑会先给微信返回一个空响应或「正在思考中」提示,并将真正的 AI 回复存入缓存
  4. 获取结果:当你发送下一条消息时,程序发现缓存里已有上一条问题的答案,于是立即回传

2. 为什么发送「你好」没反应,发送「bot你好」才有反应?

如果日志显示:

[chat_channel]receive single chat msg, but checkprefix didn't match 

原因:你的 config.json 中设置了 single_chat_prefix["bot", "@bot"]

结果:直接发送「你好」没有加 bot 前缀,程序认为你不是在对机器人说话,所以直接忽略了。

3. 如何优化响应体验?

方案 A:取消触发前缀(最推荐)

修改 config.json,让机器人直接回复所有消息:

"single_chat_prefix":[""]

这样你直接发「你是谁」它就会响应,不需要加 bot

方案 B:缩短 AI 响应时间
  • 简化人设:在 character_desc 中减少复杂的系统提示词,让模型生成更简短的回答
  • 更换模型:如果 DeepSeek 响应较慢,可以尝试其他更快的国内模型(如 glm-4-flashqwen-turbo
  • 降低 token 数:适当减少 conversation_max_tokens 的值
方案 C:理解订阅号的局限

由于个人订阅号不支持「主动推送」(客服接口),「提问 → 等几秒 → 再发任意消息取回答案」 是目前个人订阅号接入大模型最稳定的方式。

如果你想要真正的实时流式回复,通常需要:

  • 认证的服务号(支持客服消息接口)
  • 企业微信渠道
  • 或使用其他即时通讯平台

附录:常见问题快速排查表

问题可能原因解决方案
Token 校验失败URL 末尾缺少 /wx确保 URL 格式为 https://xxx.cpolar.top/wx
No module named 'web'pip 安装到了错误的 Python 环境确认已激活 Conda 环境后重新安装
cpolar 安装报错 not supported使用了 curl 脚本安装方式改用 Homebrew 方式安装
微信消息无响应cpolar 隧道断开或端口不匹配检查 cpolar 是否运行、端口是否一致
发消息没反应消息未包含触发前缀检查 single_chat_prefix 配置,或设为 [""]
显示「正在思考中」AI 响应超过 5 秒这是正常现象,稍后再发消息即可取回答案
收到重复回复微信 5 秒超时重试机制属于正常现象,可忽略或简化 AI 人设加快响应

作者说明:本文基于实际部署经验整理,如有问题欢迎评论区交流。后续还会更新 Mac 上 Python 多版本管理的专题教程,敬请期待!

Read more

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

《Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这》 Spatial Joy 2025 Rokid乐奇 全球 AR&AI 开发大赛 值不值得参加?不少参加过连续两届 Rokid乐奇 赛事的老兵,纷纷表示非常值得参加。 先说最实在的——奖金。 AR赛道分为应用和游戏两个赛道,金奖各20万人民币,而且是现金!交完税全是你自己的!这还不够,AR赛道总共设了27个奖项,据我打听到的往年数据,能正常跑进初赛的作品大概就60-70个,这意味着获奖比例相当高。 20万就封顶了吗?远远没有!亚马孙科技给使用Kiro并获奖的开发者,在原奖金基础上再加20%现金奖励! AI赛道同样设置了27个奖项,奖金从1万到5万不等,主要以智能体开发为主,支持市面上所有智能体平台的适配。也就是说,你之前做的智能体微调一下就能参赛! 更重要的是,现在正是智能眼镜行业爆发前夜。据我观察,

机器人架构搭建核心准则:先论文论证,后工程落地

机器人架构搭建核心准则:先论文论证,后工程落地

原创声明:本文为原创技术干货,基于真实工程实践总结,未经授权严禁转载与篡改。 本文写给那些正在或将要主导机器人架构的技术决策者与一线工程师——无论你是CTO、架构师,还是嵌入式开发、算法工程师,只要你关心如何让机器人项目不再烂尾,这篇文章值得你读完。 注意:文中反复出现的“论文”,特指“工程论文”(区别于学术论文),是一份写给团队自己的工程蓝图。请务必读完第二部分的定义,再决定是否认同。 核心观点 在机器人架构设计与实施过程中,先完成系统性论文论证,再开展工程化架构落地,是保障项目可行、流程闭环、资源高效利用的核心前提,也是区分专业机器人架构师与无序开发的关键标准。 金句:先论文后落地,本质上是用确定性的逻辑推导,去对抗不确定性的物理世界。 一、行业普遍认知误区 当前机器人领域从业者普遍存在开发误区:直接跳过前期规划与逻辑论证,盲目开展硬件采购、框架搭建、代码开发与接口调试,将功能拼接等同于架构设计。这种模式缺乏顶层逻辑支撑与可行性验证,本质是无方向的盲目实施,也是多数机器人项目停滞、返工、烂尾的核心诱因。 这种开发就像农村自建房,凭感觉垒砖,从不考虑地质勘测和结构力学

无人机避障新思路:手把手教你用APF-RRT*算法实现高效轨迹规划(附Python代码)

无人机避障新思路:手把手教你用APF-RRT*算法实现高效轨迹规划(附Python代码) 去年夏天,我在一个无人机巡检项目里遇到了一个棘手的问题:传统的RRT算法在复杂林地环境中规划路径时,经常“卡”在密集的树木之间,要么采样效率低下导致规划时间过长,要么生成的路径曲折得让无人机像喝醉了一样左右摇摆。团队尝试了各种参数调整,效果都不理想。直到我们把人工势场法的引导机制引入到双向RRT*算法中,情况才发生了根本性转变——不仅规划速度提升了近70%,生成的路径也平滑了许多。 这种结合了APF(人工势场法)和双向RRT的混合算法,如今已经成为许多无人机开发者解决复杂环境路径规划的秘密武器。它巧妙地将APF的方向引导优势与RRT的渐进最优特性结合起来,同时利用双向搜索大幅提升收敛速度。今天,我就从工程实践的角度,带你一步步实现这个算法,分享我在实际项目中积累的参数调优经验,并提供可直接运行的Python代码。 1. 理解APF-RRT*算法的核心思想 在开始写代码之前,我们需要先弄清楚这个混合算法到底解决了什么问题。传统的RRT算法虽然概率完备,但在复杂环境中存在明显的局限性:随机采

项目介绍 MATLAB实现基于LSTM-ACO 长短期记忆网络(LSTM)结合蚁群算法(ACO)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 还请多多点一下关注 加油 谢谢 你的鼓

项目介绍 MATLAB实现基于LSTM-ACO 长短期记忆网络(LSTM)结合蚁群算法(ACO)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 还请多多点一下关注 加油 谢谢 你的鼓

MATLAB实现基于LSTM-ACO 长短期记忆网络(LSTM)结合蚁群算法(ACO)进行无人机三维路径规划的详细项目实例 更多详细内容可直接联系博主本人   或者访问对应标题的完整博客或者文档下载页面(含完整的程序,GUI设计和代码详解) 随着人工智能和自主导航技术的飞速发展,无人机(UAV)在军事侦察、环境监测、物流配送和灾害救援等领域展现出巨大的应用前景。三维空间中的路径规划作为无人机自主飞行的核心技术之一,直接决定着无人机的安全性、效率和智能化水平。在复杂多变的三维环境下,障碍物分布复杂且动态变化,传统的二维路径规划方法无法满足无人机实际作业对灵活性和安全性的高要求。三维路径规划要求不仅能高效地避开多种类型的障碍物,还要在有限的能量和时间约束下完成任务,这对算法的全局搜索能力、收敛速度和路径平滑性提出了更高的挑战。 近年来,深度学习技术与群体智能算法的结合成为智能路径规划的重要研究方向。长短期记忆网络(LSTM)因其优异的时序信息学习能力,在处理复杂轨迹数据、预测无人机运动趋势等任务中表现突出。与此同时,蚁群算法(ACO)以其自适应全局优化能力,能够高效地搜索到最优