把 Codex 寵物換成我家真貓,讓小豆陪我上班
懶得看完整文章?直接跳到 懶人包:用 /goal 讓 Codex 做到完成,上傳照片後照著貼就可以。
最近在 ChatGPT 桌面版的 Codex 工作時,右下角多了一隻會跟著任務狀態變換動作的 Pet。我原本只把它當成裝飾,後來發現可以用自己的圖片做一隻,就拿家裡的虎斑貓來試。
最後,我把小豆變成了一隻 16-bit 像素風格的 Codex Pet。先來看看小豆本人,再看看變成像素寵物後的樣子。

![]()
這篇想記錄的重點不是怎麼手動畫每一格,而是我怎麼跟 Codex 5.6 Sol 對話,讓它先產生小豆的像素造型,再把各組動畫整理成可安裝的雪碧圖。後半段也會補上官方上傳規格和桌面版 hatch-pet 的本機格式,這兩條路徑的尺寸不同,不能混著用。
本文依 2026 年 7 月 13 日的官方文件與實際產生結果整理。Pets 還在快速調整,如果介面或尺寸規則有變,請以文章末尾的官方 Pets 文件為準。
Codex Pet 到底在做什麼
Pet 是跟著工作狀態變換動作的桌面夥伴。換 Pet 只會改變外觀,不會改變模型能力、回答品質或任務執行方式。
目前官方列出的狀態有四種:
| 狀態 | 代表的情況 |
|---|---|
| Running | 任務正在執行 |
| Needs input | 等待批准、回答或其他決定 |
| Ready | 任務完成,還有未讀結果 |
| Blocked | 任務失敗或遇到系統錯誤 |
Pet 醒著時會浮在其他視窗上方。點牠可以回到 ChatGPT,遇到多個任務同時有動靜時,也可以從活動選單切換任務。
雪碧圖是什麼
雪碧圖(sprite sheet)是把許多動畫影格排在同一張圖片裡。程式知道每格的寬高和排列順序,播放時依序裁出每一格,看起來就像翻頁動畫。以小豆的基本表為例,一張圖分成 8 欄、9 列,每格是 192 × 208;每一列負責待機、跑步或等待等不同動作。

它和「角色概念圖」不太一樣。概念圖是給人確認造型與姿勢,角色大小和位置不一定精準;雪碧圖會被 App 直接切格播放,所以畫布尺寸、透明背景、角色位置和列順序都要符合規格。只把幾張可愛姿勢拼在一起,還不能算是可用的 Pet。
先從正確入口開新任務
桌面 App 已經把製作流程包進 hatch-pet skill。先從這個入口開始,Codex 才會知道目標是完整的 Pet 套件,而不只是畫一張像素貓:
- 打開 ChatGPT 桌面 App,進入 Settings > Pets。
- 選擇 Create your own pet。
- App 會安裝內建的
hatch-petskill,重新載入 skills,並開一個新任務。 - 在新任務上傳參考照片,再送出第一段需求。
我當時在模型選單使用的是 Codex 5.6 Sol。這是本次實作的環境,不代表官方規定只能用這個模型;模型名稱和選項可能會改。流程能否順利開始,主要看新任務能不能讀到 hatch-pet,以及是否可以呼叫圖片產生工具。
我怎麼跟 Codex 5.6 Sol 對話
我一開始沒有準備一大段專業提示詞。照片上傳後,我只說自己想做什麼;碰到格式或動畫規格,就讓 Codex 先說明再問我,我再照著回答。我把當時的來回縮短後放在下面,v2、pet.json 和動畫列這些名詞,都是 Codex 在過程中帶出來的。
第一輪:先確認小豆長什麼樣
我把照片拖進對話後,只送出這句:
幫我把我的貓咪變成像素風的寵物,寵物名為小豆,然後建議我幾個動畫。
Codex 先問我:
Codex: 小豆有哪些一定要保留的特徵?照片背景要留下嗎?有沒有不能加入的配件?
我就照照片回答:
保留牠黃綠色的大眼睛、額頭中間的橘色毛、深色虎斑和白色鬍鬚。
背景不用,也不要幫牠加項圈或衣服。先做一張給我看看。
收到這些答案後,Codex 才呼叫圖片產生工具做小豆的基準造型。它會自己把中文需求整理成圖像描述,我不需要先學會怎麼寫英文圖片提示詞。
第二輪:把交付物改成可安裝的 Pet
確認造型後,我接著問:
可以幫我整理成 ChatGPT Pet 的格式讓我使用嗎?
Codex 這時才把專業選項告訴我:
Codex: 可以。我會讀取
hatch-petskill,把小豆整理成包含雪碧圖和pet.json的 Pet 套件。這裡可以做基本表,也可以做影格較多、包含 16 個觀看方向的 v2。你想用哪一種?
我不需要自己解釋那些檔案,只要選一個:
那就用 v2。尺寸、排列和需要的檔案都照 hatch-pet 的規格處理。
到這裡,我才第一次看到 hatch-pet、雪碧圖和 pet.json 這些名詞。規格讓 Codex 自己處理就好。
第三輪:讓它分批產生動畫列
準備產生動畫前,Codex 又問了一次:
Codex: v2 會保留 9 列標準動畫,再補上 16 個觀看方向,影格比基本表多。我建議先固定角色基準圖,再分批產生動畫;每批完成後檢查角色比例、格子邊界和循環。要照這個方式進行嗎?
我回得很簡單:
好,就做 v2。先把小豆的樣子固定好,再分批做動畫。
每批完成都先幫我檢查,不要讓牠越畫越不像。
這時我才知道,v2 的總影格數比基本表多,角色轉向時有更多影格可以切換,整體看起來會更流暢;這不代表單一動畫的 FPS 變高。兩種版本的尺寸和排列差異,可以往下看 Sprite sheet 的 v2 規格說明。
接下來 Codex 會再次呼叫圖片產生工具,先做基準角色,再處理一列列動作。它也可能先用純色背景產圖,組合完才一次轉成透明背景,這比每張圖各自去背更不容易留下彩色邊緣。
我只要確認畫面裡還是小豆,切格、排列與輸出尺寸交給 hatch-pet 處理。
第四輪:用預覽圖指出哪一列有問題
雪碧圖完成後,Codex 問我要不要先看預覽:
Codex: 我可以輸出 contact sheet 和 GIF。contact sheet 能一次檢查所有格子,GIF 則比較容易看出動畫有沒有跳動。要先產生預覽嗎?
好,先做預覽。有問題的地方直接告訴我,先不要整張重畫。
這次預覽時,向左跑的最後兩格出現殘影,角色比例也突然變大。我沒有要求全部重做,只回覆:
向左跑最後兩格有重影,而且角色比例跳動。
只重做有問題的那一排,其他先不要動。
Codex 會把「那一排」對應到 running-left 動畫列,重做後再檢查透明背景和格子邊界。若角色的臉開始跑掉,我只要指出眼睛、額頭橘毛或臉型哪裡不像,不必自己說出影格編號。
第五輪:安裝並確認檔案
預覽都通過後,Codex 問我要不要安裝套件。我回答:
好,請幫我安裝成小豆,並確認檔案可以正常讀取。
Codex 會把套件寫進本機資料夾,並檢查 pet.json 和 spritesheet.webp。它不能替你在 Pets 選單裡選取,任務完成後仍要自己回到 Settings > Pets 按 Refresh,再手動選擇小豆。
懶人包:用 /goal 讓 Codex 做到完成
不想一輪輪貼指令的話,先從 Settings > Pets > Create your own pet 開新任務,上傳寵物照片,再把下面整段貼給 Codex。貼之前只要改掉方括號裡的名字、外觀和禁用項目。
/goal 適合終點清楚、但中間需要反覆生成和驗證的工作。官方文件記載,Goals 從 Codex 0.128.0 起提供;如果輸入 /goal 沒有出現指令,可以先更新 Codex。沒有 Goal 模式時也能把同一段當成普通提示詞使用,只是任務不會保留持續執行的 Goal。
/goal 把我上傳的寵物照片做成可安裝並通過驗證的 Codex Pet
寵物名稱:[填寫名字]
風格:精緻的 16-bit 像素藝術,適合在桌面小尺寸顯示
必須保留:[填寫眼睛、毛色、花紋、耳朵或其他辨識特徵]
不要加入:[填寫項圈、衣服或原照沒有的配件;沒有可寫「無」]
請讀取目前安裝的 hatch-pet skill,依它的最新規格製作,不要自行猜測尺寸或列順序。
直接呼叫圖片產生工具,不要只回覆製作計畫、動畫建議或角色概念圖。
執行方式:
1. 只參考照片中的寵物,不保留原始背景。先建立一張角色基準圖,鎖定臉型、毛色、花紋和身體比例。
2. 沿用同一張基準圖,分批產生 hatch-pet 要求的完整動畫。至少包含待機、左右跑步、揮手、跳躍、失敗、等待、工作中與完成。
3. 組成透明背景的完整雪碧圖,輸出 pet.json、spritesheet.webp、contact sheet,以及待機、工作中、揮手的 GIF 預覽。
4. 檢查畫布與格子尺寸、透明背景殘色、角色一致性、格子邊界、左右方向和動畫循環。某一列失敗時,只重做那一整列,不要改動已通過的部分。
5. 驗證全部通過後,安裝這隻 Pet,並確認 pet.json 和 spritesheet.webp 已寫入正確位置。Pet 的選取由我手動完成,不要把「已選取」列為完成條件。
只有同時符合以下條件才算完成:
- 角色仍看得出是參考照片裡的同一隻寵物。
- 完整雪碧圖與 manifest 符合 hatch-pet 的目前規格。
- contact sheet 和 GIF 預覽沒有裁切、殘影、跳位或透明背景殘色。
- Pet 套件已安裝到正確位置,pet.json 和 spritesheet.webp 都能正常讀取。
完成時請回報套件位置、實際規格和驗證結果。
這段把前面的五輪對話合在一起,也補了 Goal 的停止條件。Codex 遇到單一動畫列出錯時會繼續修,不需要讀者每一輪都再提醒「請繼續」。Goal 完成後,還是要回到 Settings > Pets 按 Refresh,再手動選取新 Pet。
怎麼知道它真的開始產生圖片
正常流程不會只回一段動畫建議。執行過程中應該看得到圖片產生動作,接著出現基準圖、動畫列或中間預覽;完成後還會有雪碧圖與套件檔案。如果 Codex 一直停在文字規劃,可以回覆:
請現在直接呼叫圖片產生工具,不要只描述製作步驟。
先依參考照片生成小豆的像素角色基準圖,確認後再分批製作動畫列並組成雪碧圖。
若它仍找不到 Pet 的格式,先確認這個任務是不是從 Settings > Pets > Create your own pet 開出來的,也可以明確要求它讀取 hatch-pet skill。一般聊天任務未必已經載入這套流程。
小豆有哪些動畫
這次做了九種主要狀態,再加上環視方向:
| 動畫 | 用途 |
|---|---|
| idle | 平常待機,呼吸、眨眼和輕微擺尾 |
| running-right | 被往右拖曳或向右移動 |
| running-left | 被往左拖曳或向左移動 |
| waving | 打招呼或吸引注意 |
| jumping | 跳躍、懸停或比較活潑的反應 |
| failed | 任務失敗、被取消或卡住 |
| waiting | 等待批准、補充資料或使用者回答 |
| running | 任務正在運作 |
| review | 任務完成,提醒查看結果 |
實際播放時會像這樣:
| 待機 | 工作中 | 揮手 |
|---|---|---|
![]() | ![]() | ![]() |
失敗狀態最容易做得太戲劇化。我最後選擇垂下耳朵、低頭和趴下,畫面在小尺寸仍然讀得出來,也沒有加入文字或驚嘆號。等待狀態則用歪頭和抬起前腳區分,不讓它看起來像同一組待機動畫換順序。
Sprite sheet 規格:先分清楚兩條路徑
我第一次整理檔案時就卡在兩種尺寸不同,先把它們分開看會比較清楚。
Web 手動上傳
官方文件目前要求:
- 透明背景 PNG 或 WebP
- 尺寸必須是
1536 × 1872 - 檔案不可超過
20 MiB
這是 Upload pet 的上傳規格。準備一張普通的正方形角色圖,再把畫布放大成這個尺寸,並不會自動變成可播放的 Pet;檔案本身仍然要符合 sprite sheet 的格子和動畫排列。
桌面版 hatch-pet 產生的本機套件
小豆的產生流程同時輸出了兩種 atlas:
| 版本 | 尺寸 | 主要用途 | 功能差異 |
|---|---|---|---|
| 基本表 | 1536 × 1872 | Web 手動上傳 | 8 欄 × 9 列,放待機、跑步、揮手、等待和工作中等標準動畫 |
| v2 延伸表 | 1536 × 2288 | 桌面版本機套件 | 保留基本表的 9 列,再向下增加 2 列,放入 16 個觀看方向 |
兩個版本的差別不在畫質,也不是 v2 的原有動畫比較流暢。基本表只有 9 組標準動畫;小豆這次產生的 v2 會保留這 9 列,再多出 16 個觀看方向,讓 Pet 有更多朝向變化。
App 會讀取 pet.json 裡的 spriteVersionNumber,決定要用哪種排列方式解析雪碧圖。小豆最後安裝的是版本 2,所以使用 11 列的延伸表。這是桌面 App 的本機套件,不能為了符合 Web 上傳尺寸就直接裁成 1872 高;裁掉最後兩列後,manifest 和圖片內容就對不上了。
PNG 或 WebP 只是容器格式。Pet 能不能正常播放,取決於畫布尺寸、透明背景、每格位置、列順序和 manifest 版本。Web 上傳規格與桌面版產生的 v2 套件也不是同一個檔案隨便改尺寸就能互換。
本機套件長什麼樣
桌面版產生的 Pet 會放在 Codex 的本機資料目錄。小豆實際使用的資料夾只有兩個檔案:
~/.codex/pets/xiaodou/
├── pet.json
└── spritesheet.webp
pet.json 的內容如下:
{
"id": "xiaodou",
"displayName": "小豆",
"description": "一隻有著黃綠大眼睛、額頭暖橘色毛與深色虎斑的小豆像素貓。",
"spriteVersionNumber": 2,
"spritesheetPath": "spritesheet.webp"
}
id 建議只用小寫英數和連字號,顯示名稱才放中文。spritesheetPath 要和實際檔名完全一致。
macOS、Linux 預設會在 ~/.codex/pets/;Windows 如果沒有另外設定 CODEX_HOME,通常是 %USERPROFILE%\.codex\pets\。
換電腦後為什麼看不到
官方文件寫得很直接:桌面 App 建立的自訂 Pet 存在本機,不會自動同步到 ChatGPT Web。
要搬到另一台電腦,只需要複製:
~/.codex/pets/xiaodou/
產生過程留下的 xiaodou-run、提示詞、分格圖片、QA 報告和預覽 GIF 都不需要。那些是製作與驗證資料,不是執行 Pet 的必要檔案。
複製到另一台電腦後,重新整理 Settings > Pets 並選取一次。公司電腦如果有管理政策,也要先確認是否允許安裝自訂 skills 或寫入使用者的 Codex 設定目錄。
Android Remote 的氣泡不會變成小豆
我測試 Remote 時也遇到一個容易誤會的地方:Android 畫面右側中間會有一顆浮動氣泡,但它仍然顯示預設圖示,沒有換成小豆。
那顆氣泡是 Remote 的控制入口,Pet 另外顯示在支援的桌面介面。手機負責送出提示、批准操作與查看結果;專案檔案、skills、工具和桌面環境仍由連線的 Mac 或 Windows 主機提供。自訂 Pet 不會取代 Android Remote 的控制圖示。
所以看到預設氣泡不是安裝失敗,也不需要重做 sprite sheet。
常見問題排查
QSettings 裡完全看不到新 Pet
先確認資料夾層級。正確位置是 pets/xiaodou/pet.json,不是多包一層 pets/xiaodou/xiaodou/pet.json。接著檢查 JSON 格式、檔名和 spritesheetPath,再按 Refresh 或重啟 App。
QPet 只顯示靜態圖片
先檢查作業系統是否開啟「減少動態效果」。官方說明中提到,Pets 會遵守系統的 reduced motion 設定;啟用後會使用靜態 frame。
Q圖片尺寸正確,還是無法上傳
確認背景真的有 alpha,不是白底或棋盤格被畫進圖片。檔案也必須小於 20 MiB。若拿的是桌面版 v2 的 1536 × 2288 套件,不能直接丟到要求 1536 × 1872 的 Web 上傳入口。
Q動畫播放時角色會跳位置
這通常不是播放速度問題,而是每格角色的基準點不同。頭部中心、腳底高度和身體重心要盡量固定;跑步可以前後伸展,但待機、等待和 review 不應該每格左右漂移。
Q換電腦後只有內建 Pet
自訂 Pet 沒有自動同步。複製整個 Pet 資料夾、重新整理設定頁並再選一次。只複製 spritesheet.webp 不夠,pet.json 也要一起帶過去。
實作後的心得
這次大部分時間花在維持角色一致性,讓九組動作看起來仍然是同一隻貓。眼睛大小、額頭橘毛和虎斑位置只要漂掉一點,逐格看可能沒事,連續播放就會很明顯。
如果只是想快速做一隻 Pet,直接走 Create your own pet 已經夠用。想保留寵物的真實特徵,就先把辨識點寫進提示詞,再花時間看完整動畫表。不要只看第一張待機圖。
小豆現在會在任務執行時忙著工作、等我批准時歪頭,失敗時垂下耳朵。牠不會幫我寫程式,但我這個奴才工程師上班時,至少能看著主子在畫面裡陪我一起奮鬥。



留言