Guide des mascottes Codex

Mis à jour le 2026-07-16

De quoi s'agit-il

Pets est une fonction de Codex App d'OpenAI (version bureau) : une petite fenêtre transparente reste au premier plan de l'écran, et une mascotte pixel vit dedans. Ce n'est pas de la décoration — ses animations sont liées à l'état d'exécution de Codex :

  • quand Codex génère du code, la mascotte passe en « au travail » et tremble d'activité sur place ;
  • quand Codex s'arrête et attend votre saisie, elle bascule sur « attend votre réponse » et lève la tête pour vous fixer ;
  • tâche réussie : elle saute pour célébrer. Tâche échouée : elle s'affaisse aussitôt, goutte de sueur à l'appui.

Plus besoin de changer de fenêtre : un coup d'œil à la mascotte suffit pour savoir s'il faut retourner voir le terminal.

Comment installer une mascotte

  1. Assurez-vous d'avoir la version bureau de Codex App (pas seulement le CLI) et activez Pets dans les réglages ;
  2. téléchargez le .pet.zip de la mascotte de votre choix depuis le catalogue ;
  3. décompressez-le dans le dossier pets, un dossier par mascotte :
# macOS / Linux
~/.codex/pets/<id-de-la-mascotte>/
├── pet.json
└── spritesheet.webp   (PNG accepté aussi)

# Windows
%USERPROFILE%\.codex\pets\<id-de-la-mascotte>\

Une fois en place, la nouvelle mascotte apparaît dans le sélecteur de Codex App. Si elle ne s'affiche pas, redémarrez Codex App.

Les specs du spritesheet (officielles)

Toutes les animations d'une mascotte tiennent dans une seule image : 1536×1872 pixels, en PNG ou WebP, fond transparent, découpée en 8 colonnes × 9 lignes de 192×208 chacune. Attention : le nombre d'images utilisées varie d'une ligne à l'autre (c'est le contrat officiel animation-rows.md qui le fixe), et les cases inutilisées d'une ligne doivent rester entièrement transparentes. De haut en bas :

LigneID d'étatNomImages utiliséesDurée de boucleDéclencheur
0idleRepos61100msRespire tranquillement, cligne des yeux de temps en temps
1running-rightCourt à droite81060msCodex l'envoie bosser à droite
2running-leftCourt à gauche81060msSur le chemin du retour
3wavingSalut4700msUn petit signe de la main avant de démarrer la tâche
4jumpingSaut5840msTâche terminée, saut de joie
5failedÉchec81220msÇa a planté : elle s'affaisse sur place, goutte de sueur à l'appui
6waitingAttend votre réponse61010msCodex s'arrête et attend une entrée : elle vous fixe
7runningAu travail6820msCodex génère du code, elle en tremble d'activité
8reviewRelecture61030msLes yeux plissés, elle balaie votre code de gauche à droite

Quelques règles sur lesquelles on se casse facilement les dents :

  • la mascotte doit tenir entièrement dans la case de 192×208, y compris au sommet d'un saut ;
  • transparent veut dire vraiment transparent : l'alpha des pixels inutilisés doit être à 0 sans valeur RVB résiduelle, et pas question de dessiner d'« effets détachés » comme une ombre semi-transparente, une ombre portée au sol ou des lignes de vitesse (le script officiel validate_atlas.py vérifie pixel par pixel) ;
  • pas de texte lisible ni de logo sur la mascotte ;
  • voyez grand pour les détails : la taille d'affichage finale est minuscule, un motif d'un ou deux pixels est tout simplement invisible.

À quoi ressemble pet.json

{
  "id": "momo",
  "displayName": "Momo",
  "description": "A round cream-orange cat.",
  "spritesheetPath": "spritesheet.webp"
}

Quatre champs suffisent. id s'écrit en minuscules et chiffres, et doit correspondre au nom du dossier ; spritesheetPath est un chemin relatif à pet.json.

Fabriquer la sienne

Méthode 1 : laisser l'IA dessiner (la voie officielle). OpenAI propose la compétence hatch-pet dans openai/skills. Une fois installée dans Codex, décrivez le personnage voulu : elle fait appel à la génération d'images pour dessiner les 9 lignes d'animation une par une, les assemble automatiquement au bon format, et dépose le résultat directement dans ~/.codex/pets/. Idéal si vous cherchez un rendu dessiné à la main et soigné.

Méthode 2 : dessiner image par image en code (notre voie). Les 91 mascottes de ce site sont générées par programme avec Python + Pillow : le corps est composé d'aplats de couleur sur une grille logique de 24×26, puis chaque image reçoit ses paramètres selon l'état — le repos, c'est la respiration plus le clignement ; le saut, une courbe de déplacement accroupi/étiré/en l'air/atterrissage ; l'échec, un corps aplati avec des yeux en croix et une goutte de sueur. Le tout est enfin assemblé en une grande image de 1536×1872 selon le nombre d'images officiel de chaque ligne. Passé la barre des quelques dizaines de mascottes, nous avons tout abstrait en « piloté par configuration » : forme du corps, palette, oreilles, queue, lunettes, écharpe sont des paramètres, et ajouter une mascotte tient en dix lignes de config.

Les deux voies produisent la même chose : un spritesheet conforme et un pet.json. Il ne reste qu'à déposer le dossier dans pets et c'est parti.

Questions fréquentes

La mascotte ne bouge pas ou n'apparaît pas ? Vérifiez d'abord la hiérarchie des dossiers : pet.json doit se trouver directement dans pets/<id>/, sans dossier intermédiaire issu de la décompression. Vérifiez ensuite que l'image fait exactement 1536×1872.

Quelle différence entre V1 et V2 ? Ce que la communauté appelle V2 ajoute, en plus des 9 lignes de base, 16 images de « regard alentour » selon l'orientation, pour que la mascotte puisse suivre la souris. Les mascottes au format 9 lignes (dont les nôtres) restent parfaitement utilisables dans les versions récentes de Codex App.

Peut-on modifier les mascottes du site ? Oui. Les 91 sont des créations pixel originales (la série inspirations ne reprend que des genres, aucun personnage protégé par le droit d'auteur) : modifiez-les et rediffusez-les librement, sans obligation de mention.

En panne d'idées pour l'image de référence ? Sur PixPix, une seule phrase suffit pour générer une image « personnage en pied, fond uni », parfaite à donner à hatch-pet ou à reproduire image par image.