AI桌宠制作:从一张静态图片到一个动态桌宠

朋友给我看了他的 Codex 桌宠,我回家复刻了一个

起因很朴素:朋友给我秀了他的 Codex 桌宠------一只小东西蹲在屏幕角落,Codex 思考它就托腮,跑工具它就工作,任务完成它就比个耶。我当时就一句:"这个我也要。"

我为什么敢动手

先说我的底子:有一点 AI 编程基础,但绝对算不上大佬。能做出这个桌宠,靠的不是什么高深武功,而是"拆步骤 + 让 AI 干重活"。

如果你也心动过、但觉得自己不行,这篇文章就是写给你的------因为它真的没那么难。整个流程我拆成了四步,每一步都能独立验收:

  1. 找一张图 → 用 AI 生成一段动态视频
  2. 从视频里抽帧 → 变成透明背景的"精灵表"
  3. 用一个桌面框架把精灵表"装"起来 → 桌宠诞生
  4. 接上 Cursor / Claude Code 的"事件" → 它会随你干活而变化

下面一步步说。

第一步:让一张静态图"动"起来

桌宠最核心的是"它得有动作"。我没有逐帧手画的能力,所以走了捷径:AI 视频生成

我拿的是朋友的图,丢进 AI 视频生成工具,让它生成角色"托腮思考""举手比耶""敲键盘"这类动作视频。

我用的工具是豆包和即梦,选它的原因是免费额度多+动作自然+出图稳定。

这一步有几个真实的坑,我先替你排掉:

  • 白底图:AI 生成的视频往往是白底,而且可能带水印。白底图不能直接拿来当精灵,后面抠图要处理。
  • 镜头漂移:AI 视频偶尔会有缓慢的"推近 / 拉远",角色忽大忽小。抽帧前最好把镜头不稳定的片段裁掉。
  • 水印是半透明的:这点最阴险------白底上它几乎隐形,抠完背景后反而变成一块白斑。

第二步:抽帧 + 抠图,把它变成"精灵表"

这一步是把视频变成程序能播放的素材。几个词我尽量用大白话解释:

  • 抽帧:视频是一秒几十张连续图片(每张叫一帧)。我们不用全要,隔一点距离抽一张,动作就够连贯了。
  • 抠图 / 去背景:把白底去掉,只留下角色,背景变透明(有条件的可以用ps或者wps的抠图,效果还不错)。
  • 精灵表(sprite sheet):把一长串透明图片拼到一张大图里,程序按顺序"切"着播放,就是动画。
  • 循环段:找出动作里能首尾衔接的一段,让桌宠能无限循环"托腮",而不是播完就停。

这步我写了个小脚本(Python,OpenCV 抽帧 + Pillow 抠图),流程是:抽帧 → 逐帧去白底 → 只保留最大的那个"连通区域"(防止水印和杂点混进来)→ 统一裁剪到同一个框 → 缩放 → 自动找循环段 → 拼成精灵表。

小经验:把调色板量化一下(比如压到 256 色),对这种平涂卡通风格几乎无损,但体积能小约 85%。一个 14MB 的序列帧,压完才 1.6MB。

到这一步,你已经有一堆能播的"素材"了,离桌宠只差一个"壳"。

第三步:装个"壳",让它蹲在桌面角落

壳我用的是 Tauri 2 + Svelte 5,两个词解释下:

  • Tauri:一个做桌面应用(就是 Windows 上那种 .exe)的框架。它比老牌的 Electron 轻得多------我的桌宠常驻内存才约 37MB,Electron 动辄 150MB 起步。
  • Svelte :一个写界面的框架,配合 Canvas(HTML 里画图的那块"画布")来播放精灵表、做呼吸 / 摇晃 / 弹跳这些动画。

这个壳要干几件事:一个透明、无边框、置顶、不占任务栏的小窗口;能拖拽、记住位置;右键有个菜单能换皮肤;有个系统托盘能显示 / 隐藏 / 退出。

这些 Tauri 基本都有现成能力,AI 帮我搭起来后,桌宠第一次"蹲"在了我的屏幕右下角。

第四步:让它"活"过来------接上 Agent 的事件

静态的桌宠没意思,真正让它"看心情"的是事件驱动

原理是这样:Cursor / Claude Code / Codex 这些编程 Agent 都支持一种叫 hooks 的东西,你可以理解成"钩子"------Agent 在某个时刻(开始思考、开始执行工具、任务完成)会触发一下这个钩子,去调用你指定的命令。

我的做法:写一个极小的桥接脚本挂在 hooks 上。Agent 一有动作,脚本就把一条统一格式的消息 POST 到本机的 127.0.0.1:4271 端口,桌宠里的服务收到后转发给前端,前端再根据状态决定播哪段动画、显示哪句气泡。

于是就有了这套联动:

  • Agent 在思考 → 桌宠托腮
  • Agent 在跑工具 → 桌宠转齿轮
  • Agent 在等你点确认 → 桌宠等待
  • 任务完成 → 桌宠比个耶,还提示"点击消散"
  • 出错了 → 桌宠冒感叹号和汗滴

这里我死守一条原则:桥接脚本永远快速退出、绝不阻塞 Agent。桌宠只是旁观者,不能反过来卡住你干活。

现在的状态 & 我踩过的坑

现在桌宠已经稳定跑起来了,支持 Claude Code / Codex / Cursor 三种,能换肤、能缩放、能锁定监听某一个会话、还能开机自启和自动更新。

踩过的几个坑:

  1. 别的桌宠会"抢"你的 hooks :我本机之前装过另一款桌宠,它会重写 ~/.claude/settings.json,把我挂的钩子顶掉,表现就是"桌宠突然收不到事件了"。
  2. 透明窗有阴影边框:Windows 下透明窗口要关掉阴影,否则有一圈细细的边框,很丑。一行配置的事。
  3. 别被"没反应"骗了:有段时间我以为完成态没显示,排查半天,其实是"完成"动画只播了零点几秒就回闲置,肉眼根本看不清。状态保持时间得调长。

我卡住的地方,求大佬指点

写到这里,桌宠已经是个合格的"心情显示器"了。但我更想要的下一步是:让它从"看"变成"能聊"------用语音或文本跟它对话,让它帮我控制电脑。

理想形态是:我说"帮我打开浏览器搜个东西或者说打开某个程序",它能听懂、能执行、还能用桌宠的表情和气泡给我反馈。

我卡在哪?卡在"怎么让桌宠成为一个真正的执行入口"------是直接在桌宠里内置一个对话 / 语音回路,还是复用现有 Agent(让它去调 Claude Code / Codex 的能力)?语音这块用哪套(本地 ASR 还是云端接口)?桌面控制的权限边界和安全怎么做?

这块我现在是"有一点想法、但拿不准技术路线"的状态。如果你做过类似的"桌宠 + 语音助手 / 桌面控制",或者有推荐的方案,评论区指个路,感激不尽。

最后

整个过程我最大的感受是:"看起来很难"和"真的很难"是两回事。 拆开之后,每一步都有现成的工具和 AI 帮你扛,你只需要当好那个"把步骤串起来"的人。

你有没有也心动过做桌宠?或者做过什么"别人觉得没用、但自己做得特开心"的小项目?来评论区聊聊------说不定我们下一篇文章就是你的故事。

相关推荐
大草原的小灰灰3 小时前
Cursor极速上手指南
ai编程·cursor
Hello_Damon_Nikola3 小时前
Ollama 终极使用指南
ai·ai编程
小的博客3 小时前
理解MCP
ai编程
程序员老刘3 小时前
跨平台开发地图 | 2026年8月
flutter·ai编程·客户端
渔夫正在掘金4 小时前
Cordis 中文教程:渐进式构建插件化应用
前端·node.js·ai编程
阿文和她的Key4 小时前
把 800+ 文件的真实项目交给 XunOPC,它到底能不能真的修 Bug?
agent·ai编程
宋哥转AI4 小时前
深入理解 AI Agent · MEMORY #02:记忆的工程机制
人工智能·agent·ai编程
打呵欠的猫4 小时前
前端团队 3 个月 AI 实践复盘:哪些场景 ROI 最高,哪些是伪需求
前端·ai编程
AI编程实验室4 小时前
Agent Plugins 1.0实战:plugin.json、skills、mcp.json目录结构与迁移
ai编程