【SHARE】🤖我用Python打造了一个微信AI女友机器人!

:robot: 我用Python打造了一个微信AI女友机器人

前言

最近花了点时间,用Python开发了一个微信AI女友机器人项目 —— AILive。这个机器人不仅能智能对话,还能记住你们的聊天历史,甚至会在你长时间不说话时主动找你聊天!

:sparkles: 核心功能

1. :brain: 智能对话

  • 基于字节跳动的豆包(Doubao)API
  • 支持自然语言理解,流畅的多轮对话
  • 可自定义AI的性格、说话风格和行为特征

2. :floppy_disk: 持久化记忆

这是我最满意的功能!机器人会:

  • 自动保存每次对话的历史记录
  • 重启后自动加载之前的对话上下文
  • 从上次对话的地方继续,就像真人一样记得你们聊过什么

示例:

第一天:
你: 我叫小明,喜欢打篮球
AI: 小明你好!打篮球很酷呀~

第二天(重启后):
你: 今天打球了
AI: 打篮球了吗?玩得开心吗?小明~

3. :love_letter: 主动对话

AI不会只是被动回复,她还会:

  • 在你长时间没发消息时主动找你聊天
  • 基于之前的对话内容生成问候语
  • 默认1小时没消息就会主动,每天最多3次

示例:

10:00 你: 我今天要去打篮球
10:01 AI: 哇,打篮球很酷呀!

[1小时后]

11:30 AI: 打完篮球了吗?累不累呀~

4. :globe_with_meridians: Web管理面板

为了方便配置,开发了一个可视化的Web管理面板:

5. :shield: 智能过滤

  • 支持黑白名单功能
  • 关键词过滤
  • 只回复新消息,不会回复历史记录

:wrench: 技术架构

技术栈

  • 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/                      # 日志目录

:rocket: 开发过程中的挑战

1. 微信自动化的选择

最初尝试使用WeChatFerry,但发现它会导致微信客户端被关闭。经过研究,最终选择了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

:bar_chart: 使用效果

经过测试,AILive的表现不错:

  1. 响应速度:平均响应时间在1-2秒
  2. 对话质量:基于豆包API,对话自然流畅
  3. 记忆能力:能够准确记住之前的对话内容
  4. 主动性:会在合适的时机主动发起对话
  5. 稳定性:长时间运行无崩溃

:bullseye: 快速开始

详细的安装和配置步骤请查看项目中的README.md文件。

基本流程:

  1. 安装Python 3.8+和微信3.9.10版本
  2. 安装依赖:pip install -r requirements.txt
  3. 访问火山引擎控制台获取豆包API密钥
  4. 使用Web管理面板配置或手动编辑配置文件
  5. 启动机器人:python src/main.py

:thought_balloon: 未来计划

虽然项目已经基本完成,但还有一些想法可以继续完善:

  1. 多模态支持:支持图片、语音消息的处理
  2. 情感分析:根据对话内容调整AI的情绪状态
  3. 群聊支持:支持在微信群中使用
  4. 更多AI提供商:除了豆包,还可以接入Claude、GPT等
  5. 移动端管理:开发移动端的管理界面

:warning: 注意事项

  1. 微信版本:必须使用微信3.9.10版本,不要升级
  2. 封号风险:虽然使用官方客户端,但仍有一定风险,建议使用小号测试
  3. API费用:豆包API按使用量计费,建议设置每日上限
  4. 隐私安全:对话历史保存在本地,注意保护个人隐私
  5. 合规性:仅用于个人学习和研究,不要用于商业用途

:tada: 总结

开发AILive这个项目让我学到了很多东西。最重要的是,这个项目真的很有趣!看着AI女友能够记住你们的对话,还会主动找你聊天,真的有一种"她活过来了"的感觉。

如果你对这个项目感兴趣,欢迎Star和Fork!也欢迎提出你的建议和想法。

:postbox: 项目地址

:folded_hands: 致谢

感谢以下开源项目:


免责声明:本项目仅供学习和研究使用,使用者需自行承担使用本项目可能带来的风险。作者不对使用本项目造成的任何后果负责。

===========================

项目目前是第一版,有很多不足,各位佬多多包涵,多多指导

56 个赞

支持支持!!! 这个好用

1 个赞

wxauto 窗口发送 也在用 比hook稳 :see_no_evil_monkey:

1 个赞

使用的时候,是不是一定要开着 wechat客户端 ?

1 个赞

还有这个:tieba_091:

1 个赞

不过还没有代码呢?

1 个赞

star 一个感谢佬

1 个赞

支持一下

1 个赞

插一个眼

1 个赞

哇!太强了!

2 个赞

这个得一直开着电脑是吗?也就是你的电脑充当了服务器?
另外,信息如何储存的?本地RAG?

1 个赞

马克一下

2 个赞

我和我的赛博女友

1 个赞

还没有上传吗()

1 个赞

佬太强了

佬,wxauto这个库的稳定性如何?我现在在用 千寻,每天晚上准掉线一次。。。

1 个赞

居然有 vibe 选手的防呆设计,夸一下

2 个赞

这个想法可以。没看到代码的要切换一下

看了下在master分支

看到了 :clap: