Guia dos pets de desktop do Codex
O que é isso
Pets é um recurso do OpenAI Codex App (versão desktop): uma janelinha transparente fica sempre no topo da tela, e dentro dela mora um pet em pixel art. Não é enfeite — as animações estão amarradas ao estado de execução do Codex:
- enquanto o Codex gera código, o pet entra na animação "trabalhando" e treme de tão ocupado;
- quando o Codex para à espera do seu input, o pet muda para "esperando você" e levanta a cabeça para te encarar;
- tarefa concluída, ele pula para comemorar; tarefa falhou, ele murcha na hora e solta suor frio.
Sem trocar de janela: uma olhadela no pet já diz se está na hora de voltar ao terminal.
Como colocar um pet para rodar
- Confirme que você tem o Codex App (versão desktop), e não só a CLI, e ative Pets nas configurações;
- baixe o
.pet.zipde qualquer pet no catálogo; - extraia na pasta pets, uma pasta por pet:
# macOS / Linux
~/.codex/pets/<id-do-pet>/
├── pet.json
└── spritesheet.webp (PNG também serve)
# Windows
%USERPROFILE%\.codex\pets\<id-do-pet>\
Feito isso, o novo pet aparece na seleção de pets do Codex App. Se não aparecer, reinicie o Codex App.
Especificação do spritesheet (oficial)
Todas as animações do pet cabem em uma única imagem: 1536×1872 pixels, PNG ou WebP, fundo transparente, dividida em 8 colunas × 9 linhas de 192×208 cada. Atenção: a quantidade de quadros usados varia por linha (é o que o contrato oficial animation-rows.md determina), e as células não usadas de cada linha precisam ficar totalmente transparentes. De cima para baixo, na ordem:
| Linha | ID do estado | Nome | Quadros usados | Duração do ciclo | Quando toca |
|---|---|---|---|---|---|
| 0 | idle | Parado | 6 | 1100ms | Respira em silêncio e pisca de vez em quando |
| 1 | running-right | Correndo para a direita | 8 | 1060ms | O Codex mandou ele trabalhar do lado direito |
| 2 | running-left | Correndo para a esquerda | 8 | 1060ms | No caminho de volta |
| 3 | waving | Acenando | 4 | 700ms | Um tchauzinho antes de a tarefa começar |
| 4 | jumping | Pulando | 5 | 840ms | Tarefa concluída, pulo de alegria |
| 5 | failed | Falhou | 8 | 1220ms | Deu erro: murcha ali mesmo, com gota de suor frio |
| 6 | waiting | Esperando você | 6 | 1010ms | O Codex parou à espera de input, e ele fica te encarando |
| 7 | running | Trabalhando | 6 | 820ms | O Codex está gerando código e ele treme de tão ocupado |
| 8 | review | Revisando | 6 | 1030ms | Aperta os olhos e varre seu código de um lado para o outro |
Algumas regras em que é fácil tropeçar:
- o pet inteiro precisa caber na célula de 192×208, inclusive no ponto mais alto do pulo;
- transparente é transparente de verdade: os pixels não usados precisam ter alpha 0 e nenhum resíduo de RGB. Nada de sombras semitransparentes, sombra no chão ou linhas de velocidade — os tais "efeitos separados" (o validate_atlas.py oficial confere pixel por pixel);
- não desenhe textos legíveis nem logos no corpo do pet;
- capriche no tamanho dos detalhes: o pet aparece bem pequeno na tela, e um padrãozinho de um ou dois pixels simplesmente não se vê.
Como é o pet.json
{
"id": "momo",
"displayName": "Momo",
"description": "A round cream-orange cat.",
"spritesheetPath": "spritesheet.webp"
}
Quatro campos bastam. O id usa letras minúsculas e números e precisa bater com o nome da pasta; o spritesheetPath é relativo ao pet.json.
Faça o seu
Caminho 1: deixe a IA desenhar (a rota oficial). A OpenAI disponibiliza a skill hatch-pet em openai/skills. Instale no Codex, descreva o personagem que você quer e ela chama a geração de imagens para desenhar as 9 linhas de animação uma a uma, monta o spritesheet dentro da especificação e joga o resultado direto em ~/.codex/pets/. Ideal para quem quer aquele acabamento caprichado de desenho à mão.
Caminho 2: desenhe quadro a quadro por código (a nossa rota). Os 91 pets deste site foram todos gerados por programa, com Python + Pillow: o corpo é montado com blocos de cor numa grade lógica de 24×26 e cada quadro recebe parâmetros conforme o estado — parado é o sobe e desce da respiração mais o piscar; pulo é a curva de deslocamento de agachar, esticar, decolar e aterrissar; falha é o corpo achatado, olhos em X e suor frio. No fim, tudo é montado numa imagem de 1536×1872 respeitando a contagem de quadros oficial de cada linha. Quando chegamos à casa das dezenas de pets, abstraímos isso em algo "guiado por configuração": forma do corpo, paleta, orelhas, rabo, óculos e cachecol viraram parâmetros, e um pet novo agora sai com dez linhas de config.
Os dois caminhos produzem exatamente a mesma coisa: um spritesheet dentro da especificação e um pet.json. Terminou, é só jogar a pasta em pets e rodar.
Perguntas frequentes
O pet não se mexe ou não aparece? Confira primeiro os níveis de pasta: o pet.json precisa estar diretamente dentro de pets/<id>/, sem aquela pasta extra que às vezes sai da extração. Depois confira se a imagem tem exatamente 1536×1872.
Qual é a diferença entre V1 e V2? O que a comunidade chama de V2 acrescenta, além das 9 linhas básicas, quadros de "olhar ao redor" em 16 direções, para o pet acompanhar a direção do mouse. Pets com a especificação básica de 9 linhas (inclusive os daqui) continuam funcionando perfeitamente nas versões novas do Codex App.
Dá para pegar os pets daqui e modificar? Dá. Os 91 são todos criações originais em pixel art (a série inspiração toma emprestado apenas o tipo de tema, sem nenhum personagem protegido por direitos autorais). Modifique e distribua à vontade, sem necessidade de atribuição.