Hướng dẫn dùng thú cưng để bàn Codex
Nó là gì
Pets là một tính năng trong OpenAI Codex App (bản desktop): trên màn hình có một cửa sổ nhỏ trong suốt luôn nổi lên trên, bên trong có một bạn pixel pet sinh sống. Nó không phải đồ trang trí — trạng thái hoạt ảnh được gắn với trạng thái chạy của Codex:
- Khi Codex đang sinh code, thú cưng vào hoạt ảnh “đang làm việc”, bận đến mức run tại chỗ;
- Khi Codex dừng lại đợi bạn nhập, thú cưng chuyển sang “chờ bạn trả lời”, ngẩng đầu nhìn bạn chằm chằm;
- Tác vụ thành công, nó nhảy lên ăn mừng; tác vụ thất bại, nó xẹp ngay tại chỗ và toát mồ hôi lạnh.
Khỏi cần chuyển cửa sổ, chỉ liếc con thú cưng một cái là biết đã đến lúc quay lại xem terminal hay chưa.
Làm sao để dùng được một bạn
- Xác nhận bạn đang cài Codex App bản desktop (không phải bản CLI thuần), và đã bật Pets trong phần cài đặt;
- Tải file
.pet.zipcủa bất kỳ bạn nào từ bộ sưu tập; - Giải nén vào thư mục pets, mỗi thú cưng một thư mục riêng:
# macOS / Linux
~/.codex/pets/<id thú cưng>/
├── pet.json
└── spritesheet.webp (PNG cũng được)
# Windows
%USERPROFILE%\.codex\pets\<id thú cưng>\
Đặt xong là thấy bạn mới trong phần chọn thú cưng của Codex App. Nếu chưa thấy, khởi động lại Codex App một lần.
Quy cách spritesheet (chính thức)
Toàn bộ hoạt ảnh của thú cưng nằm gọn trong một tấm ảnh: 1536×1872 pixel, PNG hoặc WebP, nền trong suốt, cắt thành 8 cột × 9 hàng, mỗi ô 192×208. Lưu ý: số khung hình thực dùng của mỗi hàng là khác nhau (điều này được quy định rõ trong file hợp đồng chính thức animation-rows.md), những ô không dùng tới trong hàng bắt buộc phải trong suốt hoàn toàn. Từ trên xuống dưới lần lượt là:
| Hàng | ID trạng thái | Tên | Số khung hình dùng | Thời lượng vòng lặp | Thời điểm phát |
|---|---|---|---|---|---|
| 0 | idle | Chờ | 6 | 1100ms | Thở nhẹ, thỉnh thoảng chớp mắt |
| 1 | running-right | Chạy sang phải | 8 | 1060ms | Codex sai nó qua bên phải làm việc |
| 2 | running-left | Chạy sang trái | 8 | 1060ms | Đang trên đường chạy về |
| 3 | waving | Chào hỏi | 4 | 700ms | Vẫy tay với bạn trước khi bắt đầu tác vụ |
| 4 | jumping | Nhảy | 5 | 840ms | Xong việc, nhảy cẫng lên vì vui |
| 5 | failed | Thất bại | 8 | 1220ms | Có lỗi, xẹp tại chỗ và toát mồ hôi lạnh |
| 6 | waiting | Chờ bạn trả lời | 6 | 1010ms | Codex dừng lại đợi bạn nhập, nó cứ nhìn bạn chằm chằm |
| 7 | running | Đang làm việc | 6 | 820ms | Codex đang sinh code, bận đến mức run lên |
| 8 | review | Rà soát | 6 | 1030ms | Nheo mắt quét trái quét phải qua code của bạn |
Vài quy tắc dễ vấp:
- Cả con thú cưng phải nằm trọn trong ô 192×208, kể cả ở đỉnh cú nhảy cũng không được lòi ra ngoài;
- Trong suốt là trong suốt thật: pixel không dùng phải có alpha bằng 0 và không được sót lại giá trị RGB, không được vẽ bóng đổ mờ, bóng nền, vệt tốc độ hay các “hiệu ứng rời” kiểu đó (validate_atlas.py chính thức sẽ kiểm tra từng pixel một);
- Đừng vẽ chữ đọc được hay logo lên người thú cưng;
- Chi tiết phải đủ lớn — kích thước hiển thị cuối cùng rất nhỏ, hoa văn một hai pixel thì nhìn không ra gì cả.
pet.json trông như thế nào
{
"id": "momo",
"displayName": "Momo",
"description": "A round cream-orange cat.",
"spritesheetPath": "spritesheet.webp"
}
Bốn trường là đủ. id dùng chữ thường và số, giữ trùng với tên thư mục; spritesheetPath là đường dẫn tương đối so với pet.json.
Tự làm một bạn
Cách một: để AI vẽ (lộ trình chính thức). OpenAI cung cấp kỹ năng hatch-pet trong openai/skills. Cài vào Codex xong, bạn mô tả nhân vật mình muốn, nó sẽ gọi phần sinh ảnh vẽ ra 9 hàng hoạt ảnh từng hàng một, rồi tự động ghép thành spritesheet đúng quy cách, thành phẩm rơi thẳng vào ~/.codex/pets/. Hợp với người muốn chất vẽ tay tinh xảo.
Cách hai: vẽ từng khung hình bằng code (lộ trình của trang này). Cả 91 thú cưng trên trang này đều được sinh ra bằng chương trình Python + Pillow: vẽ thân bằng các mảng màu trên lưới logic 24×26, rồi theo từng trạng thái mà áp tham số cho mỗi khung hình — chờ là nhịp thở phập phồng cộng chớp mắt, nhảy là đường cong dịch chuyển của thu người, vươn ra, bay lên, tiếp đất, thất bại là bẹp thân xuống cộng mắt chữ X và mồ hôi lạnh. Cuối cùng ghép thành ảnh lớn 1536×1872 theo đúng số khung hình mỗi hàng của quy cách chính thức. Làm tới quy mô mấy chục bạn thì chúng tôi trừu tượng hoá nó thành kiểu “điều khiển bằng cấu hình”: hình dáng thân, phối màu, tai đuôi kính khăn quàng đều là tham số, thêm một bạn mới chỉ cần viết mười dòng cấu hình.
Thành phẩm của hai lộ trình là cùng một thứ: một spritesheet hợp lệ cộng một pet.json. Làm xong quăng thư mục vào pets là chạy.
Câu hỏi thường gặp
Thú cưng không nhúc nhích hoặc không hiện ra? Trước hết kiểm tra cấp thư mục — pet.json phải nằm trực tiếp trong pets/<id>/, không được lồng thêm một lớp thư mục giải nén ra; sau đó kiểm tra kích thước ảnh có đúng chính xác 1536×1872 không.
V1 và V2 khác nhau ở đâu? Cái mà cộng đồng gọi là V2 là bản bổ sung thêm 16 khung hình “nhìn quanh” theo các hướng, ngoài quy cách cơ bản 9 hàng, để thú cưng nhìn được về phía con trỏ chuột. Thú cưng theo quy cách cơ bản 9 hàng (bao gồm cả của trang này) vẫn dùng tốt hoàn toàn trên bản Codex App mới.
Thú cưng của trang này có được đem đi sửa không? Được. Cả 91 bạn đều là tác phẩm pixel gốc (loạt lấy cảm hứng chỉ tham khảo kiểu đề tài, không chứa hình tượng nhân vật có bản quyền), sửa thoải mái, chia sẻ thoải mái, không cần ghi nguồn.