把 Codex 寵物換成我家真貓,讓小豆陪我上班

懶得看完整文章?直接跳到 懶人包:用 /goal 讓 Codex 做到完成,上傳照片後照著貼就可以。

最近在 ChatGPT 桌面版的 Codex 工作時,右下角多了一隻會跟著任務狀態變換動作的 Pet。我原本只把它當成裝飾,後來發現可以用自己的圖片做一隻,就拿家裡的虎斑貓來試。

最後,我把小豆變成了一隻 16-bit 像素風格的 Codex Pet。先來看看小豆本人,再看看變成像素寵物後的樣子。

小豆的原始照片

轉成像素風格後的小豆

這篇想記錄的重點不是怎麼手動畫每一格,而是我怎麼跟 Codex 5.6 Sol 對話,讓它先產生小豆的像素造型,再把各組動畫整理成可安裝的雪碧圖。後半段也會補上官方上傳規格和桌面版 hatch-pet 的本機格式,這兩條路徑的尺寸不同,不能混著用。

NOTE — 本文記錄時間

本文依 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 套件,而不只是畫一張像素貓:

  1. 打開 ChatGPT 桌面 App,進入 Settings > Pets
  2. 選擇 Create your own pet
  3. App 會安裝內建的 hatch-pet skill,重新載入 skills,並開一個新任務。
  4. 在新任務上傳參考照片,再送出第一段需求。

我當時在模型選單使用的是 Codex 5.6 Sol。這是本次實作的環境,不代表官方規定只能用這個模型;模型名稱和選項可能會改。流程能否順利開始,主要看新任務能不能讀到 hatch-pet,以及是否可以呼叫圖片產生工具。

我怎麼跟 Codex 5.6 Sol 對話

我一開始沒有準備一大段專業提示詞。照片上傳後,我只說自己想做什麼;碰到格式或動畫規格,就讓 Codex 先說明再問我,我再照著回答。我把當時的來回縮短後放在下面,v2pet.json 和動畫列這些名詞,都是 Codex 在過程中帶出來的。

第一輪:先確認小豆長什麼樣

我把照片拖進對話後,只送出這句:

幫我把我的貓咪變成像素風的寵物,寵物名為小豆,然後建議我幾個動畫。

Codex 先問我:

Codex: 小豆有哪些一定要保留的特徵?照片背景要留下嗎?有沒有不能加入的配件?

我就照照片回答:

保留牠黃綠色的大眼睛、額頭中間的橘色毛、深色虎斑和白色鬍鬚。
背景不用,也不要幫牠加項圈或衣服。先做一張給我看看。

收到這些答案後,Codex 才呼叫圖片產生工具做小豆的基準造型。它會自己把中文需求整理成圖像描述,我不需要先學會怎麼寫英文圖片提示詞。

第二輪:把交付物改成可安裝的 Pet

確認造型後,我接著問:

可以幫我整理成 ChatGPT Pet 的格式讓我使用嗎?

Codex 這時才把專業選項告訴我:

Codex: 可以。我會讀取 hatch-pet skill,把小豆整理成包含雪碧圖和 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.jsonspritesheet.webp。它不能替你在 Pets 選單裡選取,任務完成後仍要自己回到 Settings > PetsRefresh,再手動選擇小豆。

懶人包:用 /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 > PetsRefresh,再手動選取新 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 × 1872Web 手動上傳8 欄 × 9 列,放待機、跑步、揮手、等待和工作中等標準動畫
v2 延伸表1536 × 2288桌面版本機套件保留基本表的 9 列,再向下增加 2 列,放入 16 個觀看方向

兩個版本的差別不在畫質,也不是 v2 的原有動畫比較流暢。基本表只有 9 組標準動畫;小豆這次產生的 v2 會保留這 9 列,再多出 16 個觀看方向,讓 Pet 有更多朝向變化。

App 會讀取 pet.json 裡的 spriteVersionNumber,決定要用哪種排列方式解析雪碧圖。小豆最後安裝的是版本 2,所以使用 11 列的延伸表。這是桌面 App 的本機套件,不能為了符合 Web 上傳尺寸就直接裁成 1872 高;裁掉最後兩列後,manifest 和圖片內容就對不上了。

WARNING — 不要只看副檔名

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
A

先確認資料夾層級。正確位置是 pets/xiaodou/pet.json,不是多包一層 pets/xiaodou/xiaodou/pet.json。接著檢查 JSON 格式、檔名和 spritesheetPath,再按 Refresh 或重啟 App。

QPet 只顯示靜態圖片
A

先檢查作業系統是否開啟「減少動態效果」。官方說明中提到,Pets 會遵守系統的 reduced motion 設定;啟用後會使用靜態 frame。

Q圖片尺寸正確,還是無法上傳
A

確認背景真的有 alpha,不是白底或棋盤格被畫進圖片。檔案也必須小於 20 MiB。若拿的是桌面版 v2 的 1536 × 2288 套件,不能直接丟到要求 1536 × 1872 的 Web 上傳入口。

Q動畫播放時角色會跳位置
A

這通常不是播放速度問題,而是每格角色的基準點不同。頭部中心、腳底高度和身體重心要盡量固定;跑步可以前後伸展,但待機、等待和 review 不應該每格左右漂移。

Q換電腦後只有內建 Pet
A

自訂 Pet 沒有自動同步。複製整個 Pet 資料夾、重新整理設定頁並再選一次。只複製 spritesheet.webp 不夠,pet.json 也要一起帶過去。

實作後的心得

這次大部分時間花在維持角色一致性,讓九組動作看起來仍然是同一隻貓。眼睛大小、額頭橘毛和虎斑位置只要漂掉一點,逐格看可能沒事,連續播放就會很明顯。

如果只是想快速做一隻 Pet,直接走 Create your own pet 已經夠用。想保留寵物的真實特徵,就先把辨識點寫進提示詞,再花時間看完整動畫表。不要只看第一張待機圖。

小豆現在會在任務執行時忙著工作、等我批准時歪頭,失敗時垂下耳朵。牠不會幫我寫程式,但我這個奴才工程師上班時,至少能看著主子在畫面裡陪我一起奮鬥。

資料來源

留言