(本文由 Codex 辅助整理,来自我和 Codex 的对话)

前几天公司有一个 AI / Codex 交流会,大家轮流分享自己怎么用 Codex。有同事在会上展示了自己做的 Codex Pet:就是在 Codex 界面里跑来跑去、陪你写代码的小宠物。

我当时一下就被种草了。既然别人可以做一个自己的小宠物,那我为什么不能把我家猫 Nico 也做进去?于是晚上回家折腾了一下,现在 Nico 已经变成我的上班监工,每天在 Codex 里盯着我干活。

Nico Codex Pet 预览

这件事情本身其实没什么生产力意义,但它特别有情绪价值。以前 Codex 是一个很强的工具,现在界面角落里多了一只自己家的猫,就突然变得像「我和猫一起上班」。我每次看到小猫在那里动来动去,心情都会好一点。

第一次尝试:公司电脑生成失败

我一开始是想直接在公司电脑上用公司的 Codex 做完这件事。结果发现公司环境里的 image generation 效果非常一般,不知道是不是因为订阅、权限或者模型版本的原因 (也可能是公司防止我们薅羊毛),生成出来的东西基本属于「看了沉默」的程度,完全不像我家猫,也不太能用。

后来我回家用自己的电脑、自己的 Codex 环境重新生成了一遍,效果就好很多。这里我最大的感受是:生成宠物这种视觉资产,模型能力差一点就是差很多。代码任务有时候旧模型也能凑合,但图像生成不太行,风格、脸、动作一致性都会明显崩。

为什么这次效果很好

我没有只丢一张猫照片给 Codex 然后许愿。我给了几类参考:

  • Nico 的真实照片,用来锁定花色、脸型和整体感觉。
  • 我自己画过的一张 Nico,用来告诉模型我想要的画风。
  • 对风格的文字描述:小型 digital pet、像素感、轮廓清楚、不要太写实。

我自己会画一点东西,所以那张自绘参考图很有用。最后生成出来的 Nico 既保留了我的画风,又被模型优化成更适合 Codex Pet 的小动画素材。它不是照片转头像那种硬转,而是真的变成了一只小小的工作区猫猫。

Nico Codex Pet 动作表

大概流程

我当时用的是 Codex 里的 pet 制作流程。大体上可以理解成四步:

  1. 准备参考图和描述。
  2. 让 Codex 生成基础形象。
  3. 让 Codex 按动画状态生成 spritesheet。
  4. pet.jsonspritesheet.webp 放进本地 Codex 的 pets 目录。

最后得到的包大概长这样:

1
2
3
4
5
6
Nico-Codex-Pet/
  nico/
    pet.json
    spritesheet.webp
  preview/
    contact-sheet.png

其中 contact-sheet.png 是给人看的预览图,真正安装进 Codex 的是 nico/pet.jsonnico/spritesheet.webp

Pet 文件结构

pet.json 很简单,核心是告诉 Codex:这个宠物叫什么、描述是什么、spritesheet 在哪里。

1
2
3
4
5
6
{
  "id": "nico",
  "displayName": "Nico",
  "description": "A compact Codex digital pet based on Nico, a beloved tabby house cat wearing a mint collar and purple necktie.",
  "spritesheetPath": "spritesheet.webp"
}

真正复杂的是 spritesheet.webp。我的这版 Nico 是一个 8 x 9 的 atlas:

  • 每格尺寸:192 x 208
  • 整张图尺寸:1536 x 1872
  • 一共 9 行动画状态
  • 没用到的格子保持透明

每一行对应一个状态:

1
2
3
4
5
6
7
8
9
row 0: idle
row 1: running-right
row 2: running-left
row 3: waving
row 4: jumping
row 5: failed
row 6: waiting
row 7: running
row 8: review

听起来很麻烦,但这部分我基本没有手动处理。Codex 的 pet 制作流程会自己按状态生成动作、切帧、合成 spritesheet、检查透明背景和尺寸。人类主要负责提供参考图,以及在效果不满意的时候说「这不像」「这个动作太怪」「这个风格太写实」。

安装到 Codex

安装也很简单。macOS 下把生成出来的宠物文件夹放到:

1
~/.codex/pets/

最后目录应该是:

1
2
~/.codex/pets/nico/pet.json
~/.codex/pets/nico/spritesheet.webp

命令行可以这样做:

1
2
mkdir -p ~/.codex/pets
cp -R nico ~/.codex/pets/

然后重启 Codex,在 pet / custom pet 设置里选择 Nico。重启这一步不要漏,不然你可能会怀疑自己装错了,其实只是 Codex 还没重新加载本地 pet 列表。

我觉得最重要的经验

第一,参考图很重要,尤其是你想做的是「自家猫」这种有明确身份的角色。只给一张照片很容易生成出一只泛泛的狸花猫;多给几张真实照片,再加一张风格参考,效果会稳定很多。

第二,别太贪细节。Codex Pet 本质是一个小尺寸动画角色,不是高清插画。项圈、领结、花色这种标志性元素可以保留,但毛发纹理、复杂阴影、很细的装饰都不一定适合。小图里最重要的是轮廓和表情能不能认出来。

第三,模型版本真的影响很大。我在公司环境里第一次做出来的版本完全不能用,回家换自己的环境之后就顺了很多。所以如果你生成出来很丑,不一定是你的猫不适合,也可能只是当前 image generation 能力不够。

第四,技术细节反而不是最难的。透明背景、动画行、spritesheet 尺寸、安装路径,这些 Codex 都能按流程处理。真正需要人类参与的是审美判断:这只小猫像不像我家猫?这个动作可不可爱?这个风格是不是我想要的?

最后

做完之后我把截图发了朋友圈,大家反应还挺好,还有人问这个 Codex Pet 到底怎么弄。

我的结论是:如果你已经在用 Codex,而且手头有一个你很想放进工作区的小角色,这件事非常值得试。它不一定提高效率,但会让工具变得更像自己的空间。

而且当你写代码写到一半,旁边有一只小猫在认真 review,你会突然觉得:好吧,继续干活吧,监工都来了。