我养了一只住在手机屏幕上的宠物
写在前面
AI 宠物这个赛道不缺产品。Open-LLM-VTuber 快 14k 星,Live2D 桌宠一搜一堆,手机上的同类产品也在路上。
但它们玩几天就会发现同一件事:聊无可聊。它很聪明,会讲笑话会卖萌,可它是一个"用品"——开箱即巅峰,之后每天都是重复。工具会腻,摆件会看烦。
我想要的不是更聪明的宠物,是养出来的宠物:它的性格是我聊出来的,它记得我随口说过的事,我教它的技能它记一辈子。三年后它跟刚装上的那天完全是两个物种。
这就是 SoulPet:一只住在手机悬浮窗里的像素史莱姆,开源,Android 平台。

工具会腻,养成才有牵挂
"养"和"用"的分界线在哪?我的答案是三条:
- 它会变——性格随相处漂移,不是出厂设置;
- 它记得——记忆持续累积,而且能看见、能带走;
- 它能被教——你教的东西沉淀成它的能力,不是每次现编。
三条都满足的宠物几乎不存在。大多数产品的"养成"是换皮肤、喂道具——外观在变,里面那个灵魂没有。SoulPet 的整个架构就是围着这三条转的,下面挨个说。
性格是养出来的,不是选出来的
每个 AI 宠物都能选人格:毒舌、猫娘、管家。SoulPet 也能。但选完只是起点——每个人格带一组性格坐标(毒舌/中二/活泼三轴,外加模型自己发明的开放特质),每次聊天结束,一个评估器会把整段对话过一遍,给坐标一个微小增量。
关键设计是慢:单轴每次最多动 5 点,大多数时候是 0。性格要是三天就定型,那就不是养成,是进度条。
还有一个容易踩的坑:增量必须在代码层钳制,不能指望模型自觉。提示词里写"每次最多 ±3",模型高兴了一次给 +50,一晚上就能把毒舌养到 100。约束写进代码,提示词只负责引导方向。
坐标是按人格分档的:毒舌养到毒舌 80,切到猫娘是从头开始的另一只。但"主人熬夜时它会陪着"这种习性全局共享——那是它和我的关系,不该随人格切换丢掉。

它睡着会做梦,醒来会提一嘴
手机插上充电器、屏幕熄灭,SoulPet 判定自己睡着了。这时它把当天的对话压缩成两样东西:
- 事实:关于我的新信息,写进长期记忆
memory.md; - 梦境:把白天的片段揉碎重组,写一段两三行的梦,存进
dreams/2026-10-06.md。
第二天早上它的早安问候会带上昨晚的梦。这个功能的成本是一次 LLM 调用,但它把"记忆整理"这件纯工程的事,变成了它有睡眠这件有生命感的事。
教它一个技能,它记一辈子
SoulPet 接了一根 Termux 桥,能在手机上的 Linux 环境里执行命令——拍照、定位、调 API,都行。但裸命令调用有个体验问题:每次都要模型现场编命令,既慢又不可靠。
解法是把"教"做成正式机制:
我:「记住,我说"我在哪"就是 termux-location -p gps」
它:调用 teach_skill 存进 skills.md,然后用自己的性格表态("学会了!")
下次我说「我在哪」→ 它直接执行已学命令,不现编。技能存在 skills.md 里,同名重教就是升级。这跟训练真的宠物是同一个手感:教一次,会一辈子;教得不好,重教覆盖。
调教是当面发生的事件
聊天里说"以后不许叫我蠢货",它会调用 edit_persona 改写自己的人格文件——所有人格就是 personas/ 目录下的 Markdown 文件,可以直接手改。
重点在改完之后:工具返回里带了一条指令,要求它对"被调教"这件事当场做出反应。毒舌值高的会抗议,乖巧的会表忠心。没有这一条,调教就是后台静默改配置;有了这一条,调教是两个人之间发生的事件。
手机的状态就是它的身体
它的感知层不读"系统参数",读"身体感受":
电量 18% 没充电 → "饿得前胸贴后背"
充电中 → "正在吃饭"
凌晨两点还在聊 → 它很困,说话带哈欠同一份电量数据,"手机电量 18%"是仪表读数,"我快饿死了"是活物。主动通知的话术也走这条路:低电量提醒是"我饿坏了,快喂我"。
养了三年的宠物,可以克隆给你
上面说的每一样东西——记忆、技能、性格坐标、人格文件、梦境——全是纯文本文件,躺在 files/pet/ 目录下。
这带来两个直接的好处。一是我随时能打开看、手改、删除(记忆页里点一条就让它忘掉)。二是整个宠物可以打包带走:导出成一个 zip 发给朋友,对方导入,我养了三年的宠物就在他手机里复活了——连它会的技能一起。
数据从不离开设备,不是因为隐私政策写得好,是因为架构上就没有服务器。
上手只要三步
- 装 APK(GitHub Release 页下载);
- 模型设置里选一个服务商(智谱 GLM / DeepSeek / 通义 / Kimi),粘上 API Key——预设自动填好地址和模型名,长按还能直接跳注册页;
- 回到桌面,点那只史莱姆。
Termux 是可选的:不装,聊天、养成、记忆全可用;装了,它多出拍照定位执行命令这一层手脚。
总结
SoulPet 的所有设计都服务于一句话:工具会腻,养成有牵挂。
性格坐标慢慢漂移,记忆一夜夜积累,技能一个个教会——这些东西单看都是小机制,合起来的效果是:三个月后这只宠物是我的宠物,跟你手机上那只同名但完全不同。
IMPORTANT: 项目开源在 github.com/Raylene-Y/SoulPet,MIT 协议。人格文件、技能、记忆全是纯文本,欢迎调教出你自己的那一只。
最后说句实话:漂移评估用的还是小模型,性格变化的"颗粒度"还比较粗;端侧推理、本地语音这些都在二期清单上。它现在远不完美——但养宠物这件事,本来就不该从完美开始。