基于 PySide6 的桌面宠物应用。无边框透明置顶窗口,使用 PNG 精灵图展示女仆/猫娘角色,通过状态机驱动交互和动画。
当前版本:v1.2.0 · 2026-07-06
- 新增:会话管理系统,自动保存每段对话历史到
memory.json - 新增:会话列表 UI,支持选择历史对话继续聊天
- 新增:后台记忆总结机制,关闭聊天后自动提炼对话内容到长期记忆
- 重构:移除客户端关键词记忆检测和 AI 记忆工具调用,统一经由后台总结写入 memory.md
- 修复:
_on_api_reply方法误删导致的聊天实时回复失效
完整的版本演进记录见 upgrade_log.md
Desktop pet/
├── src/ # 源代码
│ ├── cyber-maid.py # 核心 + 状态机 + 事件 + 绘制
│ ├── chat.py # AI 聊天 + 配置管理 + OpenAI SDK 集成
│ ├── dance.py # 跳舞功能(3 种模式)
│ ├── game.py # 石头剪刀布游戏
│ ├── memory.py # 长期记忆 + 会话存储管理
│ ├── memory.json # 会话记录(自动生成)
│ ├── config.json # 非敏感配置(身份 / 舞蹈数据,可上传)
│ ├── env # 敏感配置(API Key / Model / URL,不上传)
│ └── images/ # 精灵图(maid + catgirl 各 18 张)
├── dist/ # Nuitka 打包输出
├── .venv/ # Python 虚拟环境
├── .gitignore
├── CLAUDE.md # Claude Code 项目指引
└── requirements.txt # Python 依赖
- 左键点击触发随机状态反应(卖萌/惊吓/道歉)
- 拖拽移动窗口
- 右键弹出功能菜单(游戏/跳舞/聊天/换装)
- 基于 OpenAI SDK(兼容 DeepSeek API)
- 自定义 API Key / Base URL / Model
- 24 页内置 DeepSeek 配置引导教程
- 每次聊天自动保存完整对话到
memory.json,支持历史回顾 - 关闭聊天后后台自动总结对话内容,提炼长期记忆到
memory.md - 长期记忆在每次 AI 聊天时注入上下文,实现跨会话连贯体验
- 宠物随机出拳并展示对应表情,持续游戏直到退出
- 随机模式:随机 3
6 个动作,24 次循环 - 已保存模式:翻页浏览已保存的编排
- 自定义模式:选择动作 + 循环次数,每个动作支持实时预览
- 女仆 / 猫娘 两种身份一键切换
- 配套主题色自动切换(粉 / 灰)
- 身份持久化到配置文件
| 操作 | 功能 |
|---|---|
| 左键点击 | 卖萌 / 惊吓 / 道歉 |
| 拖拽移动 | 任意位置自由放置 |
| 右键菜单 | 游戏 / 跳舞 / 聊天 / 换装 / 退出 |
| 石头剪刀布 | 宠物随机出拳决胜负 |
| 跳舞 | 随机 / 已保存 / 自编 |
| AI 聊天 | DeepSeek 智能对话 |
| 长期记忆 | 跨会话记住主人偏好 |
| 换装 | 女仆 ⇄ 猫娘 一键切换 |
日常陪伴 — 女仆酱在桌面待命,点击互动触发随机表情,拖拽到不碍事的位置,工作间隙的小确幸。
AI 闲聊 — 右键→聊天,女仆酱会记住你的习惯和偏好。今天聊养猫,明天再聊它会记得小黑喜欢吃冻干。
自定义舞蹈 — 从 6 个动作中挑选,编排专属舞蹈,保存后随时回放。
猜拳消遣 — 石头剪刀布,宠物随机出拳,输了会露出委屈的表情。
换装切换 — 女仆看腻了?一键切换猫娘,主题色同步变化。
从 Releases 页面 下载 cyber-maid-installer.exe,双击运行,按提示完成安装。
安装后可在 Windows 开始菜单或应用列表中找到“赛博女仆”。
从 Releases 页面 下载 cyber-maid.zip,解压后双击 cyber-maid.exe 即可运行,无需安装。
- 启动程序后,右键点击女仆打开功能菜单。
- 进入 “设置” → “聊天配置”,填入你的 API Key 和 Base URL(内置 DeepSeek 配置引导)。
- 保存后即可开始聊天,女仆会记住你的偏好和习惯。
提示:如果不使用 AI 聊天功能,女仆的基础交互(换装、跳舞、猜拳、拖拽、点击反应)均可离线使用。
- PySide6 >= 6.11 — GUI 框架
- openai >= 2.41.0 — AI 聊天 SDK
- Nuitka(可选)— exe 打包
项目采用 Mixin 多继承模式分离功能模块:
DesktopPet(QWidget, DanceMixin, GameMixin, ChatMixin)
├── DanceMixin → dance.py(跳舞)
├── GameMixin → game.py(游戏)
├── ChatMixin → chat.py(聊天 + 配置 + 记忆)
└── MemoryStore → memory.py(记忆存储)
如果你希望从源码运行或自行打包:
- 创建虚拟环境:
python -m venv .venv - 安装依赖:
.venv/Scripts/python -m pip install -r requirements.txt - 运行:
.venv/Scripts/python src/cyber-maid.py - 打包(需要 Nuitka):参考
CLAUDE.md中的打包命令
- Claude Code:我的赛博工友。代码编写、架构设计、Bug 修复……它是这个项目中从不喊累的那一半。
- Hermes Agent (Nous Research):长期记忆系统的设计从 Hermes 的记忆架构中获得了关键启发,特此致谢。
- GPT-image-2:项目中的角色精灵图由 GPT-image-2 生成。
- ifThink404:你赠予我的那颗 star,是这个项目收到的第一份来自陌生人的认可。它让我相信,赛博女仆值得被继续做下去。
