我用 Python 打造了一个微信 AI 女友机器人
前言
最近花了点时间,用 Python 开发了一个微信 AI 女友机器人项目 —— AILive。这个机器人不仅能智能对话,还能记住你们的聊天历史,甚至会在你长时间不说话时主动找你聊天!
核心功能
1. 智能对话
- 基于字节跳动的豆包(Doubao)API
- 支持自然语言理解,流畅的多轮对话
- 可自定义 AI 的性格、说话风格和行为特征
2. 持久化记忆
这是我最满意的功能!机器人会:
- 自动保存每次对话的历史记录
- 重启后自动加载之前的对话上下文
- 从上次对话的地方继续,就像真人一样记得你们聊过什么
示例:
第一天: 你: 我叫小明,喜欢打篮球 AI: 小明你好!打篮球很酷呀~ 第二天(重启后): 你: 今天打球了 AI: 打篮球了吗?玩得开心吗?小明~ 3. 主动对话
AI 不会只是被动回复,她还会:
- 在你长时间没发消息时主动找你聊天
- 基于之前的对话内容生成问候语
- 默认 1 小时没消息就会主动,每天最多 3 次
示例:
10:00 你: 我今天要去打篮球 10:01 AI: 哇,打篮球很酷呀!
[1小时后]
11:30 AI: 打完篮球了吗?累不累呀~ 4. Web 管理面板
为了方便配置,开发了一个可视化的 Web 管理面板:
- 无需手动编辑配置文件
- 图形化界面配置 AI 参数
- 实时测试 API 连接
- 自定义 AI 人格和说话风格
5. 智能过滤
- 支持黑白名单功能
- 关键词过滤
- 只回复新消息,不会回复历史记录
技术架构
技术栈
- Python 3.8+ - 主要开发语言
- wxauto - 微信自动化库(支持微信 3.9.10)
- Volcengine SDK - 豆包 API 的 Python SDK
- Flask - Web 管理面板框架
- PyYAML - 配置文件管理
项目结构
AILive/
├── src/
│ ├── core/ # 核心模块
│ │ ├── wechat_client.py # 微信客户端
│ │ ├── ai_engine.py # AI对话引擎
│ │ ├── message_handler.py # 消息处理器
│ │ └── proactive_chat.py # 主动对话管理器
│ ├── personality/ # 人格系统
│ ├── utils/ # 工具模块
│ │ └── context_manager.py # 上下文管理(持久化记忆)
│ ├── web/ # Web管理面板
│ └── main.py # 主程序入口
├── config/ # 配置文件
├── data/ # 数据目录
│ └── conversations/ # 对话历史
└── logs/ # 日志目录 开发过程中的挑战
1. 微信自动化的选择
最初尝试使用 ,但发现它会导致微信客户端被关闭。经过研究,最终选择了 wxauto 库,它对微信 3.9.10 版本的支持非常好,稳定性也更高。
2. 历史消息回复问题
最初版本会回复所有历史消息,导致机器人一启动就疯狂发送消息。
解决方案:
添加初始化标志,首次启动时清空历史消息:
def __init__(self):
self.initialized = False # 初始化标志 def get_latest_messages(self, who: str = None):
if not self.initialized:
log.info("首次启动,正在清空历史消息...")
self._get_messages_wxauto(who) # 读取但不返回 self.initialized = True return [] # 不回复历史消息 return self._get_messages_wxauto(who)
3. 持久化记忆的实现
为了让 AI 能够记住对话历史,实现了一个上下文管理器:
- 每 5 条消息自动保存一次
- 使用 JSON 格式存储对话历史
- 启动时自动加载最近的对话记录
class ContextManager:
def add_message(self, user_id: str, role: str, content: str):
# 自动加载历史对话 if user_id not in self.contexts:
self._load_latest_conversation(user_id)
# 添加新消息 self.contexts[user_id].append({
"role": role,
"content": content
})
# 每5条消息自动保存 self.message_counts[user_id] += 1 if self.message_counts[user_id] >= 5:
self._auto_save_conversation(user_id)
4. Git 推送时的 API 密钥泄露
在推送代码到 GitHub 时,遇到了 API 密钥泄露的问题。GitHub 检测到代码中包含了火山引擎的 API 密钥,拒绝了推送。
解决方案:
使用 git filter-branch 从 Git 历史中删除包含密钥的文件:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch READY_TO_RUN.md" \
--prune-empty --tag-name-filter cat -- --all
git push -f origin master
使用效果
经过测试,AILive 的表现不错:
- 响应速度:平均响应时间在 1-2 秒
- 对话质量:基于豆包 API,对话自然流畅
- 记忆能力:能够准确记住之前的对话内容
- 主动性:会在合适的时机主动发起对话
- 稳定性:长时间运行无崩溃
快速开始
详细的安装和配置步骤请查看项目中的 README.md 文件。
基本流程:
- 安装 Python 3.8 + 和微信 3.9.10 版本
- 安装依赖:
pip install -r requirements.txt - 访问火山引擎控制台获取豆包 API 密钥
- 使用 Web 管理面板配置或手动编辑配置文件
- 启动机器人:
python src/main.py
未来计划
虽然项目已经基本完成,但还有一些想法可以继续完善:
- 多模态支持:支持图片、语音消息的处理
- 情感分析:根据对话内容调整 AI 的情绪状态
- 群聊支持:支持在微信群中使用
- 更多 AI 提供商:除了豆包,还可以接入 Claude、GPT 等
- 移动端管理:开发移动端的管理界面
注意事项
- 微信版本:必须使用微信 3.9.10 版本,不要升级
- 封号风险:虽然使用官方客户端,但仍有一定风险,建议使用小号测试
- API 费用:豆包 API 按使用量计费,建议设置每日上限
- 隐私安全:对话历史保存在本地,注意保护个人隐私
- 合规性:仅用于个人学习和研究,不要用于商业用途
总结
开发 AILive 这个项目让我学到了很多东西。最重要的是,这个项目真的很有趣!看着 AI 女友能够记住你们的对话,还会主动找你聊天,真的有一种 "她活过来了" 的感觉。
如果你对这个项目感兴趣,欢迎 Star 和 Fork!也欢迎提出你的建议和想法。
项目地址
致谢
感谢以下开源项目:
- wxauto - 微信自动化库
- Volcengine Python SDK - 火山引擎 SDK
- Flask - Web 框架
免责声明:本项目仅供学习和研究使用,使用者需自行承担使用本项目可能带来的风险。作者不对使用本项目造成的任何后果负责。
===========================
项目目前是第一版,有很多不足,各位佬多多包涵,多多指导




评论区(暂无评论)