跳至正文

Codex 桌宠包、CLI 与 API 文档

安装 Codex 桌宠,创建并校验桌宠包,提交修订、排查 CLI 问题,并使用 CodexPetDB 公开 API。

文档范围: 本指南覆盖已发布的 codexpetdb CLI、V1 与 V2 桌宠包格式,以及 CodexPetDB 公开 API。以下命令和限制已于 2026-07-25 对照生产环境 Discovery、 CLI 实现和 API 契约核验。

当你需要安装已通过审核的桌宠、准备自己的桌宠进入审核,或读取公开 Catalog 数据时,可以从本页开始。浏览和安装不要求登录;只有提交或编辑桌宠时需要登录。

安装已验证的 Codex 桌宠

第一次安装桌宠时,可以先阅读下载与安装教程,再回到这里查看完整 CLI、包格式与 API 参考。

CLI 要求 Node.js 20 或更高版本。偶尔使用时可以直接通过 npx 运行,经常使用时 可以全局安装。

shellscript
node --version
npx codexpetdb list
npx codexpetdb install a-tom

petdb list 会输出当前公开桌宠的 slug。安装时必须使用其中一个完整 slug;上例使用 的是本文核验时已经公开的桌宠。

安装成功后,桌宠位于 $CODEX_HOME/pets/<pet-slug>。使用默认 CODEX_HOME 时, 上例目录为 ~/.codex/pets/a-tom/,其中包含 pet.json 和一个 spritesheet。

安装不需要账号。CLI 会读取服务 Discovery 和公开 Pet Catalog,从受信任的资源 origin 下载已批准的 ZIP,并在替换目标目录前校验 Content-Type、字节长度、 SHA-256、ZIP 结构和 manifest ID。如果想先预览再安装,可以浏览桌宠图鉴

需要长期使用时,可以全局安装:

shellscript
npm install --global codexpetdb
petdb version
petdb install a-tom

petdbcodexpetdb 两个 binary 名称完全等价。

创建有效的桌宠包

可下载包命名为 <pet-slug>.zip,根目录固定只包含两个文件:

text
<pet-slug>.zip
├── pet.json
└── spritesheet.webp

spritesheet 也可以是 spritesheet.png,文件名必须与 pet.json.spritesheetPath 完全一致。poster.webp 是站内展示用派生文件,不属于 下载包。

最小 manifest 应包含桌宠身份、用户可见信息和 spritesheet 路径:

json
{
  "id": "my-pet",
  "displayName": "My Pet",
  "description": "A calm companion for focused work.",
  "spritesheetPath": "spritesheet.webp",
  "formatVersion": 2
}
项目V1V2
Spritesheet 尺寸1536 × 18721536 × 2288
标准行数911
支持的图片类型PNG 或 WebPPNG 或 WebP
透明通道必须必须

如果 manifest 中包含 formatVersionrowsstatesneutralDirections,这些字段必须与检测到的图片格式一致。可以先按照 Hatch Pet 指南创建 spritesheet 和 manifest,再回到本页完成校验与 提交。

提交前完成校验

CLI 会在上传前进行本地校验;服务器仍会独立校验上传对象,确认无误后才接受新的 revision。

检查项要求
pet.jsonUTF-8 JSON object;canonicalize 后不超过 64 KiB
id合法且未保留的 pet slug
displayName非空;最多 100 个字符
description非空;最多 1,000 个字符
spritesheetPath必须是 spritesheet.pngspritesheet.webp
Spritesheet非空;不超过 10 MiB
图片内容扩展名匹配 PNG/WebP 文件签名,并包含 alpha 透明通道
路径不得包含绝对路径、盘符路径或 .. 路径穿越

提交目录时,应让 pet.json 与 spritesheet 位于同一目录。提交 ZIP 时,两个文件 必须位于压缩包根目录。

shellscript
npx codexpetdb login
npx codexpetdb submit ./my-pet

CLI 也接受单个 ZIP,或直接子目录分别为独立桌宠包的父目录。非交互环境必须传入 --yes。提交成功后,CLI 会输出新的 pending revision ID 和成功/失败汇总。

理解审核与修订状态

提交桌宠不会立刻公开:

  1. CLI 创建 upload session,并上传通过校验的 manifest、spritesheet 和生成的 poster。
  2. Finalize upload 会创建不可变的 pending revision。
  3. 自动或人工审核期间,pending 文件保持私有。
  4. 审核通过后,该 revision 才成为公开 active revision。Pending edit 不会改变 当前已发布的 revision。

编辑自己拥有的桌宠时,应创建新 revision,不会覆盖 active 文件:

shellscript
npx codexpetdb edit my-pet --description "A quieter companion."
npx codexpetdb edit my-pet --zip ./my-pet.zip

如果更习惯浏览器流程,可以使用桌宠提交页。页面会先执行客户端校验以便 快速反馈,但服务器始终是最终校验边界。

读取公开 Catalog 与 API

不要硬编码服务 origin,应先读取 Discovery:

shellscript
curl -fsS 'https://codexpetdb.com/.well-known/codexpetdb.json'

它会声明当前公开 API base URL、资源 origin、Catalog、文档地址和受支持 CLI。 静态 Catalog 是读取当前已批准桌宠与集合最直接的机器入口:

shellscript
curl -fsS 'https://cdn.codexpetdb.com/catalogs/v1/pets.json'
curl -fsS 'https://cdn.codexpetdb.com/catalogs/v1/collections.json'

需要筛选、排序、分页或详情响应时,使用 JSON API:

shellscript
curl -fsS \
  'https://codexpetdb.com/api/v1/pub/pets?kind=creature&sort=hot&limit=10'
Query可接受值默认值
kindcreatureobjectcharacterallall
sorthotnewesthot
limit15030
cursor上一页返回的不透明 cursor

列表响应包含 items、请求元数据和 pageInfo。当 pageInfo.hasNextPage 为 true 时,应把 pageInfo.nextCursor 原样作为下一次请求的 cursor。无效请求、限流与 服务异常使用 application/problem+json,结构遵循 RFC 9457 Problem Details。

排查常见失败

现象可能的边界处理方式
Node 版本错误Runtime 低于 Node 20运行 node --version 并升级 Node
找不到 pet slug当前公开 Catalog 中没有该 slug运行 petdb list 并复制完整 slug
完整性或校验失败(退出码 4包字节、结构、manifest 或图片没有通过检查阅读错误字段,并与上方校验表逐项对照
文件系统失败(退出码 5目标不存在、只读或无法替换检查 CODEX_HOME 与目录权限,然后重试
认证失败(退出码 6Submit/edit session 缺失或过期先运行 petdb logout,再运行 petdb login
HTTP 或服务失败网络、限流或服务器响应异常--debug 重试,查看状态码和脱敏后的响应内容

--debug 不会输出 Bearer token,响应内容最多保留 16 KiB。HTTP 请求成功,或失败时 没有收到 HTTP 响应,都不会产生 debug record。

事实来源、维护与责任边界

本页依据 Web 产品契约和公开 CLI 使用的同一组事实维护。需要当前机器可读信息时, 请优先使用:

CLI 公开维护,便于社区审阅。CodexPetDB Web 应用与数据库保持私有,因此本文不会把 整个产品描述为开源。CLI 问题请提交到 CLI Issue Tracker;站点或账号问题请联系 support@codexpetdb.com