1. 摘要
最近 OpenAI Codex 上线的桌面宠物功能火了,一只像素风小宠物住在屏幕角落,实时反映编程状态。我觉得太酷了,但它是 Codex 专属的——于是我用 TRAE SOLO 从零搭建了一个独立的跨平台桌面宠物应用,兼容 Codex Pet 精灵图格式。
2. 背景
我是一名非技术岗位的职场人,平时的工作和写代码没什么关系。前几天刷到 OpenAI Codex 推出的桌面宠物功能,会根据你的编程状态切换动画:运行时跑来跑去、等待时乖巧站立、代码出错时一脸沮丧,让我想起了上古时代的回形针和瑞星小狮子。
现在桌宠的应用非常多,最难的在于素材的生成,好在codex里面已经有了具体的图片生成的SKILL——hatch-runs,以及各种开发者自己在社区上传的各种格式的素材皮肤。
这就让问题变得简单了,基于这些标准的素材文件,能不能做一个独立的桌面宠物,不依赖任何编程工具,任何人的电脑上都能跑?
SOLO 让我觉得这件事也许可行。
3. 实践过程
3.1 第一步:调研——搞清楚 Codex 宠物是怎么实现的 
我没有急着让 SOLO 写代码,而是先让它帮我调研 Codex 桌面宠物的技术原理。这一步非常关键,因为只有理解了底层逻辑,后面才能做出正确的技术决策。
SOLO 帮我梳理出了几个核心发现:
- Codex 宠物本质上是一个「始终置顶的浮动状态面板」,类似 iOS 的 Live Activities
- 动画采用经典的精灵图集(Sprite Sheet)方式,规格为 1536×1872 像素,8 列 × 9 行网格,每格 192×208
- 9 行分别对应 9 种状态:idle、running-right、running-left、waving、jumping、failed、waiting、running、review
- 宠物动画和 Agent 状态通过状态机严格绑定,不是随机播放
- 宠物资产格式有明确的工程规范(Codex Pet Contract),包括透明背景、固定尺寸等
这些信息让我心里有了底:核心就是一个状态机驱动的精灵图动画悬浮窗。技术门槛没有想象中那么高。
3.2 第二步:任务拆解——把大目标拆成可执行的小步骤 
调研完成后,SOLO 自动生成了一个结构化的任务清单:
项目初始化:搭建 Electron 项目结构
精灵图动画引擎:加载图集、状态机驱动动画播放
透明置顶悬浮窗 + 拖拽交互
AI 对话功能:气泡 UI + LLM API 调用
系统托盘 + 设置面板
下载宠物资源并集成
看到这个清单的时候我其实有点惊讶——SOLO 不仅理解了我要做什么,还自动补全了我没想到的细节,比如系统托盘、设置面板这些。
3.3 第三步:技术选型——一个意外的转折 
我最初想用 Tauri V2(Rust + Web 前端),因为打包体积小、性能好。SOLO 也按这个方向开始搭建项目。但很快遇到了第一个坑:当前环境没有安装 Rust 工具链,而 Rust 的安装过程超时了。
这时候 SOLO 展现了很强的适应能力——它立刻评估了替代方案,发现 Node.js 环境可用,于是果断切换到 Electron 方案,并解释了为什么 Electron 同样适合这个场景:生态成熟、跨平台支持完善、开发资料丰富。
这个决策过程让我印象深刻:SOLO 不是死板地执行指令,而是在遇到障碍时主动寻找最优解。
3.4 第四步:核心开发——精灵图动画引擎 
整个项目最核心的部分是精灵图动画引擎。SOLO 生成了一个完整的 PetEngine 类,实现了:
- 精灵图集加载:支持 PNG/WebP 格式,兼容 Codex Pet Contract 规范
- 状态机驱动:9 种状态精确映射到精灵图的不同行
- 帧率控制:每种状态有独立的 FPS 设置(idle 4fps、running 8fps 等)
- Canvas 渲染:使用 HTML5 Canvas 逐帧绘制,支持像素风缩放
- 一次性动画:支持
playOnce()方法播放挥手、跳跃等临时动画后自动回到之前状态
SOLO 还在代码中写入了完整的 Codex Pet 精灵图格式规范注释,方便后续扩展。这种「工程化思维」让我觉得它不只是帮我写了代码,更是在教我怎么做一个合格的项目。

3.5 第五步:交互体验——拖拽 + AI 对话 
动画引擎搞定后,SOLO 继续构建了交互层:
- 拖拽移动:通过 mousedown/mousemove/mouseup 事件链实现,区分拖拽和点击(移动距离 < 2px 视为点击)
- 单击挥手、双击打开对话面板:用计时器区分单击和双击
- 右键菜单:快速切换状态、打开设置
- AI 对话:支持 OpenAI 兼容 API(OpenAI、DeepSeek、通义千问等),带打字动画和气泡提示
AI 对话的 system prompt 也很有趣——SOLO 自动给宠物设定了人设:「你是一只住在纸箱里的桌面宠物,喜欢陪伴主人编程,请用简短可爱的方式回答」。
4. 成果展示 
最终产出了一个完整的跨平台桌面宠物应用,以下是核心功能:
| 功能 | 说明 |
|---|---|
| 9 种动画状态 | idle、running、waving、jumping、failed、waiting、review 等 |
| 透明置顶悬浮窗 | 始终在所有窗口之上,不影响其他操作 |
| 拖拽移动 | 鼠标拖拽宠物到桌面任意位置 |
| AI 对话 | 支持 OpenAI/DeepSeek/通义千问等兼容 API |
| 智能行为调度 | 键盘/鼠标/剪贴板事件自动触发不同动作 |
| 自定义皮肤 | 兼容 Codex Pet 格式,可直接使用 PetDex 上的宠物 |
| 跨平台 | 支持 Windows、macOS、Linux |
| 系统托盘 | 最小化到托盘,右键快速操作 |
项目结构:
desktop-pet/
├── main.js # Electron 主进程
├── preload.js # 安全桥接层
├── src/
│ ├── index.html # 宠物主界面
│ ├── settings.html # 设置页面
│ ├── pet-engine.js # 精灵图动画引擎
│ ├── chat.js # AI 对话模块
│ └── app.js # 主应用逻辑
├── pets/
│ └── boxcat/ # 内置宠物
│ ├── pet.json
│ └── spritesheet.webp
└── assets/
└── tray-icon.png





5. 效果与总结 
效率对比
| 维度 | 传统方式 | 使用 SOLO |
|---|---|---|
| 开发时间 | 3-5 天 | 不到 1 小时 |
| 技术门槛 | 需掌握 Electron + Canvas + 状态机 | 会用自然语言描述需求即可 |
| 代码质量 | 取决于个人水平 | 结构清晰、注释完整、工程化 |
| 跨平台适配 | 需要分别调试 | Electron 一次构建,三端运行 |
SOLO 在这个项目中的角色
回顾整个过程,SOLO 承担的不只是「写代码」的角色,更像是一个全栈搭档:
调研分析师:帮我梳理 Codex 宠物的技术原理和资产规范
架构师:规划项目结构、拆解任务、选择技术方案
工程师:编写精灵图引擎、状态机、拖拽交互、AI 对话等核心模块
问题解决者:遇到 Rust 安装超时,主动切换到 Electron 方案
产品经理:补充了我没想到的功能(系统托盘、设置面板、右键菜单)
个人思考
这个项目让我对「AI + 非技术人」有了新的理解。以前我觉得不会写代码就做不了软件,但 SOLO 改变了这个认知。它不是替我写代码那么简单,而是在整个过程中引导我思考:先调研再动手、遇到问题灵活调整、关注用户体验细节。
最重要的是,它让我体验到了创造的乐趣。从「被种草」到「自己造一个」,这种从消费者到创造者的转变,是 AI 赋能非技术人最打动我的地方。 ![]()
互动 
觉得有帮助的话,点个赞支持一下~
欢迎收藏和分享给感兴趣的朋友!







