AI 桌宠:从一张图片到有性格的桌面伙伴

本文结论

想做的是:用户上传自己的图片,经过 AI 转化,得到一个可以放在 macOS 或 Windows 桌面上、能互动和聊天、记住偏好的小伙伴。

第一版选择 Electron + 2D 角色图片 + 本地情绪状态机 + 可配置的 AI 图片编辑与对话服务。先验证「这是我的宠物,它认识我、会回应我」的体验,再升级多表情资产与骨骼动画。

本文配套的 Softspot Demo 位于仓库 demos/desktop-pet/。文末区分已验证功能、接口模拟测试和待验收事项。

1. 产品到底要提供什么

桌宠的核心价值不是把聊天框换成一只猫,而是把用户已经喜欢的形象变成一个持续陪伴、行为一致的角色。

可以从三种场景切入:

用户场景用户希望得到什么最先要做好的体验
上传自家猫狗的照片工作时也能看到熟悉的小家伙花纹、轮廓和配饰能认出来;桌面上不挡操作
上传自己的画或原创角色让创造的角色有自己的性格形象保留、性格设定、动作与话语一致
工作时想要轻度陪伴被回应、被记住,又不会不断被打断轻互动、低频反馈、可睡眠、可隐藏

首个闭环是:上传 → 看到角色 → 摸一下有回应 → 聊两句 → 留在桌面 → 下次打开仍记得。

这里的「有感情」是产品体验:持续状态、合适的表达、关系记忆与行为反馈。它不是模型真的拥有情绪或意识。

1.1 第一版的取舍

做单只宠物、文字聊天、三项养成数值、五种情绪、显式偏好记忆和桌面陪伴。用户可以随时隐藏或让它睡眠。

暂不做屏幕读取、麦克风常开、自动操作电脑、多人社交、宠物商城或复杂任务代理。它们会引入独立的交互与权限问题,也不帮助验证「一张自己的图能不能让人产生陪伴感」。

2. 相关产品调研

调研日期为 2026 年 9 月 19 日。以下产品信息来自官网、开发者文档与公开源码,没有安装并实测这些竞品的双端客户端。页面声明不能直接当作质量或稳定性证明。

产品/项目公开资料体现的能力与本需求的关系跟进价值与边界
VPet投喂、摸头、丰富状态动画、创意工坊、插件;核心为 WPF养成与动作反馈很贴近桌宠场景适合学习状态和动画组织;直接复用无法满足原生 Mac 客户端要求。代码与动画素材授权须分别查看
PetPal Studio上传照片,生成动画包,导入 Mac/Windows 客户端最接近「自己的照片变桌宠」值得学习照片到资产包的产品闭环;公开教程列出一次性 US$10,付款后解锁预览,实际质量未实测
PetPal DesktopTauri + Rust + JavaScript,透明窗口、托盘、资产包导入证明照片资产和桌面播放器可以解耦开发者页面明确说明仍是早期版本,未完成所有系统和架构的重新测试,Mac 公证未确认
Desktop AI CompanionWindows 桌面覆盖、聊天、记忆、语音、Live2D/VRM 导入接近「有性格、能对话的角色」可参考角色设定与记忆体验;导入模型和上传普通图片的门槛不同,公开页面提供的是 Windows 版本

机会在两条能力的交汇处:照片生成产品降低形象制作门槛,AI 角色产品提供持续对话和关系感。本项目要把这两条路径合在一起,同时让第一次使用足够简单。

但不宜宣称市场上没有同类产品。尤其 PetPal 已公开提供相似的照片到桌宠路径,真正需要验证的是:形象一致性、情绪可信度、使用负担与长期留存。

3. 一张图片怎样变成能互动的角色

需要把「形象生成」与「运行时动作」分开:AI 可以离线生成资产,点击反馈则应立即由本地程序响应。

路线优点主要难点本项目判断
原图/去底图 + 程序动画快、便宜、图像身份不易漂移,任意主体均可尝试整张图缩放和转动,肢体、眼睛不能独立动作为即时预览与失败回退
AI 图片编辑 + 少量情绪差分图风格统一;开心、困倦等状态更直观;适配范围较广多图的花纹、服饰和比例可能不一致,需要筛选与对齐首选迭代路线;Demo 先实现单张 AI 编辑
自动生成 Sprite Sheet部署简单,播放器只需切帧格子数量、基线、角色大小和动作连贯性不一定稳定后续在自动校验后引入,不假设一次生成就可切片上线
Live2D/Spine/2D 骨骼连续动作、局部变形、表情控制更自然需要拆图、补遮挡、网格与参数,任意上传图很难直接通用适合经过美术加工的精品角色或受约束模板
图生视频后抽帧容易获得较丰富的连续动作循环首尾、透明背景、闪烁、身份漂移和动作切换要处理适合预生成待机动画,不适合每次互动临时生成
单图转 3D/VRM可转向、换动作,空间表现更强几何质量、骨骼绑定、毛发和动作重定向都增加复杂度暂不作为第一版核心路线

Live2D 官方教程 的工作流包含 PSD 素材、网格、表情和变形器;自动变形器文档 还明确将非人类动物列为不适合的模型。它说明「已有 Live2D 模型可以驱动」不等于「任意宠物照片都能一键变成 Live2D」。

3.1 推荐的资产流水线

用户上传一张图片 本机校验、缩放、预览 立即使用原图或纯色去底图 用户点击 AI 转化 参考图编辑:保留花纹与配饰 透明 PNG 与尺寸校验 确认角色形象 后续:基于同一参考图生成情绪差分 裁边、统一基线与比例 角色资产包 本地动画与互动

Demo 实现到单张角色 PNG,并由本地动画驱动。上图中的情绪差分、统一基线与资产包质检属于下一步,没有包装成已经完成的能力。

输入建议:单一主体、轮廓清晰、耳朵和尾巴尽量完整。照片、绘画都允许导入,但复杂遮挡或多主体图的结果需要用户选择和检查。

3.2 图片模型怎么选

Demo 使用 兼容 OpenAI Images Edits 的适配器,默认模型 ID 为 gpt-image-1.5,可在设置中改为账号实际可用的模型。

选择它作为接入起点,是因为公开文档覆盖参考图编辑、透明背景、PNG 输出和 Base64 结果;这使角色资产管线容易实现与校验。OpenAI 图片生成指南 与 Azure 图片模型说明 可用于核对接口和参数支持。

这不是经过模型效果对打后得出的画质冠军结论。不同模型、部署区域和账号权限会影响可用性,最新模型名也不一定支持同一组参数。国内产品上线可比较 Seedream 等参考图编辑服务,但应新增对应协议适配器,不能只替换 URL 就视为兼容。

正式选定服务商前,建议用同一组 20 张参考图测试:猫、狗、兔子、手绘角色、白色主体、复杂背景、饰品以及遮挡样例。记录每次请求的模型版本、参数、结果、耗时与真实计费。

验收重点为可辨识花纹、无多肢、透明边缘、完整轮廓,以及不同表情仍像同一个角色。供应商宣传图无法代替这组测试。

4. 为什么选 Electron

方案适用点对本项目的代价
ElectronMac/Windows 共用 Chromium 和 JavaScript;透明窗口、置顶、托盘、拖动与穿透有明确 API包体和基线内存较大,必须控制常驻窗口数量与动画
Tauri 2包体通常更小,Rust 后端适合严格控制本地能力系统 WebView 存在差异;Mac 透明窗口涉及 macOSPrivateApi 配置,需评估分发方式与系统兼容
Qt/PySide原生窗口能力成熟,可结合 Python 图像处理UI 和 Python 依赖打包增加维护面;当前仓库以 JavaScript 为主
Unity/Godot复杂 2D/3D 动画、物理和角色行为更方便对轻量常驻桌宠偏重,透明与桌面交互仍需处理平台差异
Swift + Windows 原生技术可深度适配各自系统两套桌面实现,首轮验证成本最高

Electron 官方的 窗口交互文档 明确介绍拖动区域与鼠标穿透,并支持在 Mac/Windows 穿透时转发鼠标移动事件。Tauri 配置文档 列出了 Mac 透明背景相关开关。

本阶段优先级是:双端桌面行为可实现 > 快速验证完整闭环 > 渲染一致性 > 安装包最小化。因此选 Electron。这个结论针对当前技术栈和 Demo 阶段,并不意味着 Tauri 不适合桌宠。

如果后续主要问题变成常驻内存与分发大小,可以保留情绪逻辑和资产格式,再重新评估 Tauri。不要仅凭框架宣传的基础包体做迁移决定。

5. 怎样产生持续的情绪感

将系统拆成四层,而不是每次让 LLM 随机决定所有动作:

层保存什么谁决定
性格名字、温柔/活泼/傲娇用户设定;云端聊天使用
状态精力、饱腹、亲密、是否睡眠本地确定性规则
表达安心、开心、好奇、困倦、低落互动事件或经过校验的模型输出
记忆用户显式填写的偏好、最近对话本地存储,下次聊天重新提供

例如点击「一起玩」:精力减少 8,饱腹减少 5,亲密增加 5,切换为好奇状态并摇摆。点击「摸摸」:亲密增加 3,切换开心状态。睡眠优先级高于其他表达,睡着后不会因为一次摸摸立刻开始蹦跳。

是 否或请求失败 摸摸/投喂/玩耍/睡眠 本地规则更新数值 决定动作和即时回应 用户发消息 组装性格、状态、记忆、近期对话 LLM 返回 reply 与 emotion 格式与情绪枚举有效? 睡眠优先级与表达约束 标记本地回退 更新小窝与桌宠窗口 保存本机状态

运行时动画不调用大模型。这样拖动、摸头和投喂不会等待网络,云端费用也集中在图片创建和主动聊天。

Demo 的记忆边界

最多保存 8 条用户明确填写的偏好,聊天时直接注入,不做自动抽取、向量数据库或复杂 RAG。最近 24 条消息持久化,最多取最近 16 条发给模型。

这种小规模记忆已足够验证「它下次还记得我」。规模变大后再引入检索,可参考 Agent 长期记忆笔记。

本地无密钥模式使用固定规则话术,不能理解任意上下文;性格选项主要作用于云端对话提示词。它的作用是演示状态和动作闭环,界面明确标记「本地互动」。

6. Softspot Demo 的实现

6.1 代码与运行方式

文档放在 content/,程序放在独立的 demos/desktop-pet/,避免将桌面应用源码作为 Quartz 文章或静态附件发布。它拥有独立依赖与锁文件,不改博客构建流程。

从博客仓库根目录执行:

npm --prefix demos/desktop-pet ci
npm --prefix demos/desktop-pet start

在「换个模样」导入图片,在「连接 AI」中配置服务,再点击「AI 转化为绒毛伙伴」。没有密钥也能先使用内置角色或上传图。点击「放到桌面」后,桌宠进入透明置顶窗口。

6.2 双窗口结构

受限 IPC 受限 IPC 小窝:图片、聊天、记忆 Electron 主进程 桌宠:透明、置顶、拖动 本机状态与角色图片 AI 服务适配器 聊天 JSON 参考图编辑 PNG

主进程管理唯一状态、API 请求与文件持久化。两个窗口只处理展示和交互。密钥留在主进程内存,渲染进程启用隔离与沙箱,不开放通用文件系统接口。

正常情况下只存在两个窗口,关闭小窝会隐藏它,菜单栏/托盘可重新打开;退出菜单用于彻底结束进程。桌宠可手动拖动,透明空白区域可穿透,托盘可开启整个窗口完全穿透。

当前穿透以 UI 元素矩形为粒度:图片内部的透明洞仍可能拦截点击。多显示器移除时会将窗口限制回可用工作区域;跨不同缩放比例屏幕拖动仍需双端实机专项验证。

6.3 已实现能力

能力Demo 实现限制
图片导入PNG/JPG/WebP,限制大小和像素,最长边缩小至 1024尚无裁剪编辑器
本地去底从图像边缘移除近似纯色区域非 AI 分割;白色主体可能误删,可关闭
AI 转化真实 Images Edits 调用、透明 PNG 参数、结果落盘需要用户账号与模型权限;真实质量未验收
动画呼吸、开心弹跳、好奇摇摆、睡眠、低落上传图使用整图变换,尚无独立眨眼、嘴型或肢体骨骼
内置角色本地 Canvas 小猫,情绪改变时切换眼睛形态内置角色是程序绘制,不是照片生成效果样例
聊天云端 JSON 回应及情绪、无密钥本地模式兼容服务需支持约定;云端失败明确回退
情绪状态精力、饱腹、亲密及睡眠优先级是 Demo 规则,尚未经过长期数值平衡
记忆可添加、删除偏好,保存近期消息不自动抽取长期记忆
桌面透明置顶、拖动、托盘、隐藏、穿透开关尚未在 Windows 实机及全部 Mac 架构上验证

6.4 错误与数据处理

聊天 30 秒超时,接口失败或 JSON 不合法时使用本地回应并显示回退标识。图片 150 秒超时,失败保留旧形象;超时不代表服务商取消任务,不自动重试以避免重复费用。

图片和状态保存在 Electron userData 目录。原始上传文件不会被修改;保存的 source.png 是本机缩放和可选去底后的导入版本。API 密钥不写入状态文件。

删除某条记忆后,后续请求不再注入该条显式记忆;如果聊天历史仍包含同样内容,需要同时清空历史。开启云端聊天意味着相关历史与记忆会发送给所选服务,不宣称云端模式完全离线。

7. 成本、性能和验收

7.1 成本按创建和陪伴分别计算

每只宠物创建成本
  = 参考图编辑次数 × 实际单次费用
  + 情绪差分图次数 × 实际单次费用
  + 失败重试费用
 
每日聊天成本
  = 各轮输入 Token 费用之和
  + 各轮输出 Token 费用之和

不写死一个「每只几分钱」的数字:模型、尺寸、质量、输入图和重试都影响费用。当前 Demo 每次生成只请求一个图片结果,所有动作在本地运行,没有持续逐帧调用 AI。

商业化可尝试「一次性角色创建 + 聊天自带密钥」,等真实数据证明长期陪伴价值后再考虑订阅。创建付费前最好给用户足够的形象预览与失败补救,不把生成漂移留给用户承担。

7.2 建议的后续验收门槛

以下是目标,不是已测指标:

  • 摸摸、投喂等本地操作到画面反馈,P95 小于 100 ms。
  • 静置 30 分钟后 CPU、内存与耗电稳定,没有持续增长;分别测只有桌宠和同时打开小窝两种情况。
  • 图片测试集中,至少 90% 的结果能让用户辨识原角色;不合格结果可重新选择,不直接覆盖。
  • 8 小时陪伴过程中,不抢输入焦点,睡眠和隐藏后降低动画开销。
  • Mac Apple Silicon、Mac Intel、Windows 11 x64 分别检查托盘、透明、置顶、穿透、缩放、多显示器、休眠恢复与重启恢复。
  • 正式分发前补齐 Mac 签名/公证与 Windows 签名,验证干净机器的首次启动。

7.3 本次实际验证记录

在 macOS 15.7.3 / Apple Silicon 上执行 Electron 原生窗口 E2E。使用隔离数据目录,图片上传样例来自内置角色的 Canvas 输出,AI 服务使用本机模拟响应,因此不产生云端费用,也不能用来证明真实图片模型的生成效果。

已通过的检查包括:

  • 启动原生窗口、内置角色渲染、摸摸/投喂/玩耍/睡眠/唤醒。
  • PNG 上传、名字与性格修改、显式记忆添加。
  • 图片编辑 Multipart 参数、图片失败保留旧资产。
  • 聊天携带记忆、响应 JSON 校验、非法格式与 HTTP 错误回退。
  • 桌宠置顶、截图透明像素、窗口间状态同步、隐藏。
  • 更换 AI 服务地址时,阻止静默复用旧密钥。
  • 重启恢复角色、消息和记忆;密钥不落盘;删除显式记忆。
  • 渲染进程没有捕获到运行时异常。

复跑命令:

npm --prefix demos/desktop-pet run test:e2e

报告为 demos/desktop-pet/test-results/smoke.json,截图为同目录的 studio.png 与 desktop-pet.png。

打包命令:

npm --prefix demos/desktop-pet run pack:mac
npm --prefix demos/desktop-pet run pack:win

Mac Apple Silicon .app 已完成打包后的实际启动、桌宠窗口与投喂验证;Windows x64 ZIP 已通过完整性校验。Windows 仅完成打包,未完成实机运行验收;Mac Intel 尚未构建和实测。 开发包未签名、公证。

真实图片模型生成、真实大模型对话、长时间性能与竞品双端体验尚未完成实测。下一轮最有价值的工作,是拿一组真实用户图片跑完生成质量验收,再补 Windows 实机验证。

8. 下一步如何推进

先找 5 位用户,各上传自己真正喜欢的一张图。观察第一次生成是否满意、是否愿意把桌宠留在桌面、第二天是否还打开,以及聊天和轻互动哪个更有价值。

如果「像我的宠物」比聊天更重要,就优先提升参考图一致性和动作质量;如果用户在意「它记得我」,就加强明确可管理的记忆与性格;如果用户频繁隐藏它,则先解决位置、遮挡和打扰频率。

技术上建议按以下顺序推进:

  1. 真实生成验收:统一参考图和成本记录,比较实际可用的图片编辑服务。
  2. 三种情绪差分:基于同一参考图生成安心、开心、睡眠,加入比例、基线、透明边缘检查。
  3. 跨平台稳定性:Windows 实机、多屏缩放、拖动与穿透、签名分发。
  4. 长期陪伴体验:限制通知频率、安静模式、适度记忆和可解释状态。
  5. 更细动作:达到留存目标后再投资分层、骨骼、Live2D 或视频抽帧流水线。

先证明用户愿意留下这只宠物,再增加动作和模型复杂度。