当前位置:首页>python>我用Python给电脑桌面养了个“AI宠物” 之后续 大版本更新-免费拿去

我用Python给电脑桌面养了个“AI宠物” 之后续 大版本更新-免费拿去

  • 2026-09-04 22:20:09
我用Python给电脑桌面养了个“AI宠物” 之后续 大版本更新-免费拿去
“游戏下载和游玩介绍”

介绍项目

一只住在你电脑桌面上的小猫。它有自己的生活(会饿会困会无聊),也会主动找你互动。你对它做什么,它都会记住,并且慢慢形成自己的性格。

市面上的桌面宠物要么是静态壁纸,要么需要联网调用AI接口。我想做一个不一样的:

  • 完全离线
      0 API 调用,所有AI逻辑在本地运行
  • 有"大脑"
      能自主学习主人的互动习惯,拥有独立的性格和记忆
  • 轻量
       一个普通笔记本就能跑,RNN模型仅28K参数
  • 零图片资源
       宠物完全用代码绘制,不需要任何图片素材

最终成品是一个200×280像素的透明窗口,一只矢量风格的卡通猫会"住"在你的桌面上。

运行的效果

下载游戏

    关注后回复「01桌宠」,我把游戏下载方式和源码链接发你。

🖱️ 基本操作

你做什么
会发生什么
左键单击
 宠物
随机触发摸摸头 / 玩耍 / 打招呼,宠物立刻切换表情并说话
按住左键拖拽
可以把它拖到桌面任意位置
右键单击
 宠物
弹出功能菜单,选择想做的互动
左键单击
 托盘图标
把宠物窗口提到最前面
左键双击
 托盘图标
提到最前面 + 随机互动
右键单击
 托盘图标
弹出功能菜单(跟右键单击一样)

🎮 互动全表:你做什么,宠物有什么反应

打招呼 🙋

项目
效果
属性变化
无
宠物情绪
开心 😊(50%)/ 好奇 🤔(30%)/ 活泼 🐾(20%)
视觉特效
无
宠物会说
"你好呀!小咪在这里~"、"嗨!小咪想你了!" 等问候语

摸摸头 🖐️

项目
效果
属性变化
❤️ 心情 +15
性格变化
亲昵度 ↑,粘人度 ↑
宠物情绪
开心 😊(50%)/ 好奇 🤔(20%)/ 犯困 😴(10%)
视觉特效
❤️ 粉色爱心从头顶飘出
宠物会说
"最喜欢你了!"、"我爱你!" 等亲昵的话
宠物会记住
你摸了它

称赞 👍

项目
效果
属性变化
❤️ 心情 +12
性格变化
亲昵度 ↑
宠物情绪
兴奋 🤩(50%)/ 开心 😊(30%)/ 撒娇 🥺(10%)
视觉特效
✨ 金色星星旋转上升
宠物会说
"最喜欢你了!"、"你好好哦!"
宠物会记住
你称赞了它

喂食 🍽️

项目
效果
属性变化
🍖 饱腹度 ↑20(饥饿降低)
性格变化
亲昵度 ↑
宠物情绪
开心 😊(50%)/ 好奇 🤔(30%)/ 活泼 🐾(10%)
视觉特效
🐟 一条小鱼干从上方掉下
宠物会说
"谢谢你一直陪着我!"、"你对我真好!" 等感谢的话
宠物会记住
你喂了它什么(小鱼干 / 猫粮 / 零食 / 鸡肉 / 布丁)

下次它可能会说:"你上次喂我鸡肉好好吃~"

送礼物 🎁

项目
效果
属性变化
❤️ 心情 +15
性格变化
亲昵度 ↑
宠物情绪
兴奋 🤩(50%)/ 开心 😊(30%)/ 活泼 🐾(10%)
视觉特效
🎁 礼物盒在面前弹跳
宠物会说
"最喜欢你了!"、"你是我最重要的人!"
宠物会记住
你送了它什么(蝴蝶结 / 小铃铛 / 毛线球 / 逗猫棒 / 小毯子)

洗澡 🛁

项目
效果
属性变化
❤️ 心情 +10,💚 健康 +5
宠物情绪
开心 😊(50%)/ 活泼 🐾(30%)/ 好奇 🤔(10%)
视觉特效
🫧 蓝色泡泡飘散
宠物会说
"谢谢你一直陪着我!"、"有你在真好~"

治疗 💊

项目
效果
属性变化
💚 健康 +25
宠物情绪
开心 😊(50%)/ 安静 😌(20%)/ 犯困 😴(10%)
视觉特效
✨ 菱形闪光旋转
宠物会说
"谢谢你一直陪着我!"、"你真是世界上最好的人!"

玩耍 🎾

项目
效果
属性变化
⚡ 精力 -15,❤️ 心情 +20
性格变化
活跃度 ↑,好奇心 ↑
宠物情绪
活泼 🐾(50%)/ 开心 😊(30%)/ 好奇 🤔(20%)
视觉特效
🧶 彩色毛线球左右滚动
宠物会说
"来玩来玩!陪我玩~"、"蹦蹦跳跳!好开心!"

跳舞 💃

项目
效果
属性变化
⚡ 精力 -5,❤️ 心情 +15
宠物情绪
跳舞 💃(50%)/ 兴奋 🤩(30%)/ 开心 😊(10%)
视觉特效
✨ 金色星星旋转上升
宠物会说
"来玩来玩!陪我玩~"、"精力旺盛中!"

讲故事 📖

项目
效果
属性变化
❤️ 心情 +10,⚡ 精力 -5
宠物情绪
好奇 🤔(50%)/ 开心 😊(20%)/ 犯困 😴(20%)
视觉特效
📖 一本小书在面前翻开
宠物会说
"那是什么呀?好在意!"、"好好奇呀~"
宠物会记住
你讲了什么故事(小猫钓鱼 / 三只小猫 / 猫和星星 / 森林冒险)

教本领 🎓

项目
效果
属性变化
❤️ 心情 +8,⚡ 精力 -10
性格变化
好奇心 ↑
宠物情绪
好奇 🤔(40%)/ 活泼 🐾(30%)/ 开心 😊(20%)
视觉特效
✨ 菱形闪光旋转
宠物会说
"好好奇呀~"、"让我看看让我看看!"
宠物会记住
你教了它什么(握手 / 打滚 / 装死 / 转圈)

生气 😠

项目
效果
属性变化
❤️ 心情 -10
性格变化
亲昵度 ↓,固执度 ↑
宠物情绪
难过 😢(50%)/ 犯困 😴(20%)/ 安静 😌(10%)
视觉特效
💢 红色爆炸标记抖动
宠物会说
"呜呜……心情不太好……"、"有点难过……陪陪我……"

⚠️ 生气会让宠物性格变差,不建议常用。

改名字 ✏️

弹出一个输入框,输入新名字后,宠物会说:"以后我就叫XX啦!" 

- 宠物会永远记住它的新名字

查看状态 📊

弹出一个窗口,用进度条显示当前四项属性:


📊 属性详解

四维属性

属性会慢慢变化

即使你什么都不做,属性也会缓慢变化: - 饱腹度 → 慢慢下降(饿了) - 精力值 → 慢慢下降(困了) - 心情值 → 慢慢下降(无聊了) - 健康值 → 在最饿或最累时加速下降

属性决定宠物的情绪

属性影响宠物的自主行为

每隔 15 秒,宠物会自己决定做什么:

宠物觉得
会去做
肚子饿了
找东西吃 🍽️
精力充沛
玩耍 🎾 或 探索 🔍
累了困了
睡觉 😴
心情不好
求抱抱 🥺 或 散步 🚶
身上脏了
整理毛发 🧹

这些行为会影响属性,形成循环。


🧠 性格系统

初始性格

每只宠物出生时有 5 个性格维度:

你的行为会改变性格

性格变化很慢(每天有上限),所以不会今天高冷明天粘人。它真的在被你慢慢影响。

性格影响什么

  • 爱玩的宠物       →   更喜欢"玩耍"这个行为
  • 亲昵的宠物       →   说话更甜,更爱撒娇
  • 好奇心强的宠物 →   更爱探索和学新东西

💬 对话系统

宠物有两种说话方式:

1. 模板对话(80% 概率)

预设的中文句子,保证通顺自然: - 开心时 → "我好开心!你真好~" - 饿的时候 → "我好饿呀……有吃的吗?" - 困的时候 → "好困呀……想睡觉……"

2. RNN 自由生成(20% 概率)

宠物用自己训练的小型神经网络现场造句,偶尔会出现意想不到的句子,带来惊喜感。

宠物会记住你说过的话

如果它记得你喂过它鸡肉,可能会说:"你上次喂我鸡肉好好吃~" 如果它记得你教它握手,可能会说:"上次学的握手我还记得哦!"

记忆按 7 天半衰期 衰减,经常提起的事会一直记住,很久不提的会慢慢忘记。


👀 视觉反馈一览

情绪动画(11 种)

情绪
宠物表现
😊 开心
上下蹦跳,尾巴翘起
😢 难过
低头,耳朵耷拉,半闭眼
🐾 活泼
蹦蹦跳跳,踢腿,举爪子
🤔 好奇
歪着脑袋,眼睛睁得圆圆的
😴 困了
眯着眼睛,脑袋一点一点
😷 生病
毛色变灰,没精打采
🤩 兴奋
疯狂蹦跳,双爪举起
🥺 撒娇
歪头伸爪,脸颊泛红
💃 跳舞
左右摇摆,交替抬爪
🍽️ 饿了
左右张望,嘴巴微张
😐 待机
安静呼吸

互动特效(9 种)

你做什么
会看到什么特效
摸摸头
❤️ 粉色爱心飘出
喂食
🐟 小鱼干掉下来
送礼物
🎁 礼物盒弹跳
玩耍
🧶 毛线球滚动
称赞 / 跳舞
✨ 金色星星旋转
洗澡
🫧 蓝色泡泡飘散
讲故事
📖 书本翻开
生气
💢 红色爆炸标记
治疗 / 教本领
✨ 菱形闪光旋转

所有特效持续约 2~3 秒后自动消失。

运行游戏注意事项

  • - 首次启动会自动训练 Char-RNN(约 30 秒),训练完后弹出宠物窗口

  • - 数据保存在 dist\brain_models\data\,退出时自动保存

  • - weights.npz 和 corpus.txt 内嵌在 exe 中,运行时自动释放;JSON 状态文件是运行时生成的,不会被打包


❓ 新手常见问题

Q: 它怎么不理我?A: 左键单击它就行,或者右键打开菜单选一个互动。

Q: 它一直在睡觉/发呆?A: 检查一下属性面板,可能是精力太低或心情不好。陪它玩一玩或者喂点吃的。

Q: 怎么关掉它?A: 右键菜单 → 退出,数据会自动保存。

Q: 能重置吗?A: 删除 brain_models/data/ 下的所有文件,重启程序就是全新的宠物。

Q: 健康变成 0 会死吗?A: 不会。它只是进入生病状态(毛色变灰),治疗一下就好了。

Q: 它为什么突然自己动?A: 每隔 15 秒它会自己决定做什么(睡觉/找吃的/散步等),这是它在自主学习。

“下面介绍技术和源码”

技术栈选型

游戏循环 / 渲染
pygame-ce
帧动画、矢量渲染、叠加特效
桌面窗口
PyQt5
透明窗口、系统托盘、事件处理
神经网络
numpy
Char-RNN 训练与推理
行为决策
Q-Learning
状态-动作价值学习
窗口管理
ctypes (Windows API)
隐藏任务栏条目

数据持久化

所有数据保存在 brain_models/data/ 目录:

文件
内容
brain_state.json
属性状态 + 名字
q_table.json
Q-Learning 表格 + 探索率
memory.json
记忆数据
personality.json
性格向量
weights.npz
Char-RNN 权重
corpus.txt
RNN 训练语料

项目结构

AI 大脑架构

整体设计

四个子系统

1. 行为引擎(Q-Learning)

基于 Q-Learning 的决策系统,宠物学习在什么状态下应该做什么。

  • 状态空间:
  • 饥饿 × 精力 × 心情 × 健康 × 时间段(5 个维度各 3 级离散)
  • 动作空间:
    sleep, play, explore, cuddle, eat, wander, groom
  • 学习机制:
    每个动作获得 reward,Q 表记录状态-动作价值
  • 探索率:
    20% 随机探索 vs 80% 利用经验
状态随 tick(1 秒)自动衰减,使用δt确保帧率稳定: -饥饿每秒+ 0.02/60 - 精力每秒 -0.015/60 - 心情每秒 -0.01/60 - 健康每秒 -0.005/60(饥饿 > 80 或精力 < 20 时翻倍)

2. 性格系统(5 维向量)

  • 性格影响 Q-Learning 的 reward 权重(活泼型爱玩,亲昵型爱撒娇)
  • 性格影响对话模板选择(亲昵的宠物说话更甜)
  • 性格随互动缓慢变化(+0.001/次,每日总变化限 ±0.1)

3. 记忆系统(时间衰减)

基于键值存储的记忆系统,所有记忆按 7 天半衰期衰减。

  • 权重公式:weight = e^{-days / 7}
  • 权重低于 0.05 且记数 < 3 的记忆自动清理
  • 记忆影响对话内容:"你上次喂我鸡肉好好吃~"

4. 混合对话引擎

微型 Char-RNN

模型规格

参数
值
架构
Embedding → 单层 RNN → Linear
词表大小
70 字符(字母 + 数字 + 标点)
Embedding 维度
16
隐藏层维度
64
参数量
~28K
权重文件
~112KB
依赖
仅 numpy

训练

  • 语料库:中英文混合短句,按情绪标签分组(<happy>, <sad> 等)
  • 训练方式:纯 NumPy 手动实现 RNN 反向传播(BPTT)
  • 每个句子用 <start> / <end> 包裹,标签控制生成风格
  • 首次启动自动训练 200 个 epoch(约 30 秒),学习率线性衰减
  • 训练 loss 从 ~3.1 降至 ~0.59

矢量精灵

宠物以 128×128 的矢量风格卡通形象呈现,使用 Pygame 图元(椭圆、圆、多边形、弧线、抗锯齿线)组合绘制。

情绪动画状态(11 种)

状态
帧数
关键动画
实现方式
idle
2 帧
呼吸起伏
sin 波驱动 body 垂直微动
happy
3 帧
上下弹跳
bounce_y = abs(sin(frame0.5))6
sad
2 帧
垂头丧气
head_tilt 负值 + 半闭眼
playful
3 帧
活泼好动
高弹跳 + 尾巴竖起 + 踢腿
hungry
2 帧
左右张望
head_tilt 正弦摆动 + 张嘴
sleepy
2 帧
打瞌睡
eye_open=0.1 + 缓慢点头
sick
2 帧
生病萎靡
body_color 换为灰白色
curious
2 帧
好奇歪头
head_tilt 摆动 + 睁大眼
excited
3 帧
兴奋蹦跳
高弹跳 + 举双爪 + 快速踢腿
cuddly
2 帧
撒娇求抱
倾斜歪头 + 伸爪 + 腮红
dance
3 帧
左右摇摆
交替抬爪 + 左右 sway

互动视觉特效(9 种)

每个互动操作会触发对应的叠加特效,持续约 2-3 秒:

特效
触发操作
效果
爱心
摸摸头
粉色心形上升飘散
食物
喂食
小鱼干从上方掉下
礼物
送礼物
礼物盒带蝴蝶结弹跳
玩具
玩耍
毛线球滚动
星星
称赞/跳舞
金色星星旋转上升
泡泡
洗澡
蓝色泡泡飘散
书本
讲故事
打开的书本
愤怒
生气
红色爆炸标记抖动
闪光
治疗/教本领
菱形闪光旋转

精灵完全由代码定义(Pygame 图元 + SRCALPHA 合成),无需任何外部图片资源。


桌面集成

窗口特性

  • 透明背景
    (WA_TranslucentBackground)
  • 置顶显示
    (WindowStaysOnTopHint)
  • 无边框无标题栏
    (FramelessWindowHint)
  • 无任务栏条目
    (Windows API WS_EX_TOOLWINDOW)
  • 不窃取焦点
    (WA_ShowWithoutActivating)

系统托盘

  • 像素猫图标(代码绘制)
  • 右键菜单包含所有互动功能
  • 启动时弹出通知气泡

配置文件

config.py 中包含所有可调参数:

  • 初始属性值(饥饿/精力/心情/健康)
  • 属性衰减速率
  • Q-Learning 超参数(学习率 / 折扣因子 / 探索率)
  • RNN 架构参数(词表 / 维度 / 温度)
  • 对话模板库
  • 记忆半衰期
  • 性格更新速率
  • 互动效果参数

最新文章

随机文章