从 0 到 1 制作一个 Codex 桌宠
这篇文章记录我如何制作一个可以在 Codex 设置里切换使用的自定义桌宠dyt。它不是简单贴一张图片而是一个符合 Codex pet 格式的 9 状态动画桌宠包含待机、跑动、挥手、跳跃、失败、等待、审核等任务状态。项目地址GitHub - ymhlap/codex-pet-dyt: A cute dyt Codex custom pet · GitHub最终效果预览一、为什么要做 Codex 桌宠Codex 本身是一个很强的代码协作工具但长时间使用时界面会比较工具化。我希望给它加一个更有陪伴感的小角色让它能根据任务状态做出不同动作比如空闲时安静待机Codex 正在执行任务时开始跑动等待用户输入时做等待动作任务失败时出现低落表情代码 review 时切换成检查状态所以这次我做了一个名字叫dyt的 Codex 桌宠。角色风格参考了偏二次元 Q 版、小体积、高辨识度的方向最终保持成统一的 9 种动作状态。二、最终实现目标这次制作的桌宠需要满足几个要求可以被 Codex 识别为一个可切换的 pet。在 Codex 设置里能选择dyt。使用统一角色风格不同状态不能像 9 个不同角色。一共包含 9 种动作状态。图片需要透明背景方便叠加在 Codex 界面上。跑动方向需要自然尤其是向左跑、向右跑时头发和身体细节不能明显错位。最终可以打包上传到 GitHub方便其他人安装。三、Codex pet 的资源格式这个桌宠最终由两个核心文件组成pets/dyt/ ├─ pet.json └─ spritesheet.webp其中pet.json是桌宠配置文件。spritesheet.webp是包含所有动作帧的透明精灵图。完整项目结构如下codex-pet-dyt/ ├─ README.md ├─ LICENSE ├─ pets/ │ └─ dyt/ │ ├─ pet.json │ └─ spritesheet.webp ├─ qa/ │ ├─ contact-sheet.png │ ├─ previews/ │ │ ├─ idle.gif │ │ ├─ running-right.gif │ │ ├─ running-left.gif │ │ ├─ waving.gif │ │ ├─ jumping.gif │ │ ├─ failed.gif │ │ ├─ waiting.gif │ │ ├─ running.gif │ │ └─ review.gif │ ├─ review.json │ └─ validation.json └─ scripts/ └─ install.ps1pet.json内容非常简单{ id: dyt, displayName: dyt, description: A cute chibi anime girl Codex pet with 9 animated task states., spritesheetPath: spritesheet.webp }这里最重要的是id桌宠唯一标识。displayName在 Codex 设置里显示的名字。spritesheetPath指向真正的精灵图文件。四、9 种动作状态设计Codex pet 使用一张大图来承载所有动作。这次dyt的精灵图规格是8 列 x 9 行 每格 192 x 208 总尺寸 1536 x 1872也就是说横向 8 列代表同一个动作的 8 帧动画。纵向 9 行代表 9 种不同状态。9 种状态如下行号状态说明0idle默认待机状态1running-right向右跑动2running-left向左跑动3waving挥手4jumping跳跃5failed任务失败6waiting等待用户输入7running通用运行状态8review代码审核/检查状态每一行都需要保持同一个角色只是姿态、表情、发丝、服装动态发生变化。五、每个状态的预览1. idle待机待机状态要尽量自然不需要过度夸张。主要做轻微呼吸感、头发轻微浮动让角色停在界面里时不会显得僵硬。2. running-right向右跑这个状态用于鼠标悬停或任务推进时向右侧移动。重点是身体重心、头发方向和腿部节奏需要一致。3. running-left向左跑向左跑最容易出问题。我在后期专门重新修过这一行因为最开始头发丝在移动过程中有些碎、不完整跑动时会显得头发和身体不是一个整体。修正思路是保持头发主体轮廓连续。发梢可以动但不能每帧随机漂移。刘海、侧发和身体朝向要同步。不要简单镜像后直接使用需要检查细节。4. waving挥手挥手状态适合表示任务完成、欢迎或者轻提示。这个动作要可爱但不能幅度太大否则在 Codex 界面里会抢注意力。5. jumping跳跃跳跃状态用于强调兴奋、成功、切换等反馈。这里要注意角色落地后的稳定感不能像整个人漂起来。6. failed失败失败状态用于任务报错、执行失败等情况。我没有把它做得过分夸张而是偏向委屈、低落一点这样在工作界面里不会太打扰。7. waiting等待等待状态表示 Codex 正在等用户回复、授权或者下一步输入。动作节奏可以比 idle 稍微明显一点比如轻微晃动、看向一侧。8. running通用运行通用 running 状态通常用于任务处理中。它和左右跑动不同不强调明确方向而是表达“正在忙”。9. review审核review 状态用于代码检查、分析或者审阅阶段。这个状态适合做成更专注的表情比如低头看文件、思考、检查内容。六、制作流程第 1 步确定角色风格制作桌宠前最先要确定的是角色统一风格而不是直接生成 9 张图。我这次给dyt定的方向是Q 版比例二次元少女风格头发和服装有明确辨识度适合小尺寸显示动作轻快但不过分花哨背景透明桌宠显示尺寸通常不大所以角色不能有太多细碎装饰。如果细节太复杂缩小后会糊成一团动作也很难看清。第 2 步先生成基础角色先做基础角色图也就是确定脸型发型发色服装眼睛风格整体比例角色名字和气质这一步很关键。后面的 9 个动作都必须围绕这个基础角色展开。如果基础角色没定稳后面每个动作看起来都会像重新抽卡。第 3 步拆分 9 个动作行确定基础角色后再按 9 个状态分别设计动作。推荐顺序是idlerunning-rightrunning-leftwavingjumpingfailedwaitingrunningreview我不建议一开始就把所有动作混在一起做。更好的方式是每一行单独检查角色一致性然后再合成完整 spritesheet。第 4 步统一帧尺寸每一帧都固定为192 x 208这个尺寸需要严格统一。如果某一帧尺寸不一致后面合成 spritesheet 后Codex 播放动画时就可能出现抖动、错位、裁切。第 5 步合成 spritesheet最终精灵图是1536 x 1872计算方式宽度 192 x 8 1536 高度 208 x 9 1872排列方式第 0 行idle 的 8 帧 第 1 行running-right 的 8 帧 第 2 行running-left 的 8 帧 第 3 行waving 的 8 帧 第 4 行jumping 的 8 帧 第 5 行failed 的 8 帧 第 6 行waiting 的 8 帧 第 7 行running 的 8 帧 第 8 行review 的 8 帧最终产物就是pets/dyt/spritesheet.webp七、安装到 Codex方法一使用安装脚本下载项目后在项目根目录运行powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install.ps1脚本会把pets/dyt复制到%USERPROFILE%\.codex\pets\dyt安装完成后如果 Codex 设置里没有马上出现dyt重启 Codex 即可。方法二手动安装也可以手动复制。把项目中的pets/dyt复制到C:\Users\你的用户名\.codex\pets\dyt最终目录应该是C:\Users\你的用户名\.codex\pets\dyt\pet.json C:\Users\你的用户名\.codex\pets\dyt\spritesheet.webp然后打开 Codex 设置在 pet 选项里选择dyt。八、质量检查桌宠不是只要能显示就算完成。我建议至少检查下面几项1. 透明背景是否正常如果背景不是透明的放到 Codex 界面里会出现白底或色块非常明显。2. 角色是否一致9 个状态要看起来像同一个角色。尤其注意发型眼睛服装身高比例头身比主色调3. 跑动方向是否自然向右跑和向左跑是最容易暴露问题的。这次我重点修了向左跑时的头发丝问题。检查方式连续播放running-left.gif观察头发主体有没有断裂观察发梢有没有随机跳动观察身体和头发方向是否一致4. 动画是否抖动如果某些帧角色位置偏移太大播放时就会像在闪烁。需要保证每一帧角色的脚底、身体中心大致稳定。5. 小尺寸是否清晰桌宠最终显示不会特别大。所以要把预览图缩小看一次确认五官和动作还能看清。九、发布到 GitHub我最后把项目整理成了一个独立仓库ymhlap/codex-pet-dyt发布前建议至少包含README.md说明项目是什么、如何安装、有什么状态。LICENSE开源协议。pets/dyt/pet.jsonCodex pet 配置。pets/dyt/spritesheet.webp核心资源。qa/contact-sheet.png总览图。qa/previews/*.gif每个状态的单独预览。scripts/install.ps1Windows 一键安装脚本。GitHub 推送流程大致是git init git add . git commit -m Add dyt Codex pet git branch -M main git remote add origin https://github.com/ymhlap/codex-pet-dyt.git git push -u origin main如果 GitHub 仓库创建时已经带了README或LICENSE首次推送可能会提示远端已有提交。这时可以先拉取并 rebasegit pull --rebase origin main如果有冲突解决后继续git add . git rebase --continue git push -u origin main十、常见问题1. 为什么 Codex 里看不到 dyt先检查目录是否正确%USERPROFILE%\.codex\pets\dyt里面必须直接包含pet.json spritesheet.webp不要多套一层目录。如果路径没错重启 Codex 再看设置。2. 为什么动作播放错位通常是 spritesheet 的尺寸或排列不对。需要确认每帧192 x 208 列数8 行数9 总图1536 x 18723. 为什么某个状态看起来不像同一个角色这是生成多状态角色时最常见的问题。解决办法不是一次性生成所有图而是先固定基础角色再逐个动作修正。4. 为什么向左跑比向右跑更容易出问题因为很多时候向左跑是由向右跑镜像或重绘得到的。镜像之后头发、衣服、手臂方向可能看起来不自然需要单独检查。这次dyt就是后期专门修正了running-left的头发丝完整性。总结这次dytCodex 桌宠制作完成后最终得到了一个可以真实安装、可以在 Codex 设置里切换、并且包含 9 种动作状态的完整 pet 项目。项目地址GitHub - ymhlap/codex-pet-dyt: A cute dyt Codex custom pet · GitHub如果你也想做自己的 Codex 桌宠建议按这个顺序来先确定角色风格。再设计 9 个状态。保证每帧尺寸统一。合成透明 spritesheet。写好pet.json。安装到.codex/pets测试。做 GIF 预览和总览图。整理 README 后发布到 GitHub。只要格式正确Codex 就可以把它当成一个真正可切换的桌宠来使用。

相关新闻

12周C++ QT OpenCV项目实战:从零构建桌面图像处理应用

12周C++ QT OpenCV项目实战:从零构建桌面图像处理应用

1. 项目概述与学习路径设计如果你正在寻找一个能将C、QT和OpenCV这三项硬核技术串联起来,并能产出实际作品的学习计划,那么这个为期12周的项目制学习方案,可能就是为你量身定制的。我见过太多人孤立地学习C语法、研究QT控件、或者死磕OpenCV的…

2026/10/16 2:53:19 阅读更多 →
AI如何降低科研计算复杂度:从基因比到材料模拟的实战指南

AI如何降低科研计算复杂度:从基因比到材料模拟的实战指南

如果你是一位科研工作者,最近可能感受到了这样的变化:过去需要花费数周时间进行数据清洗、模型调参和结果分析的复杂研究流程,现在通过AI工具可以在几小时内完成初步探索。这不仅仅是效率的提升,更是研究范式的根本转变。传统学术…

2026/10/16 2:53:41 阅读更多 →
实战测试10款降AIGC网站:只选真正管用的那一款!

实战测试10款降AIGC网站:只选真正管用的那一款!

随着AI写作工具的普及,越来越多的学生和职场人士开始依赖它来提升论文写作效率和内容创作速度。然而,问题也随之而来:高校、平台和期刊对AI生成内容的检测标准越来越严格,许多人在提交论文或稿件时发现,自己的文字被系…

2026/10/16 2:53:19 阅读更多 →

最新新闻

Agent工程化落地的5个关键问题与实战方案

Agent工程化落地的5个关键问题与实战方案

1. 这不是考算法,而是考你能不能把Agent真正跑起来“请手写一个ReAct框架”——这种问题在三年前可能还出现在某些技术面试里,但今天再问,基本等于在面试一个还没摸过生产环境的在校生。我参与过二十多场面向中高级工程师的Agent方向技术面试…

2026/10/16 7:53:14 阅读更多 →
AI日报系统设计:从信源治理到时间戳工程的全链路实践

AI日报系统设计:从信源治理到时间戳工程的全链路实践

1. 项目概述:这不是一份“新闻简报”,而是一套可复用的AI内容日更系统“AI 日报 2026-10-07”这个标题乍看像某平台每日推送的资讯合集,但真正有经验的人一眼就能看出——它背后必然藏着一套稳定、低干预、可持续输出的自动化内容生产流程。…

2026/10/16 7:53:14 阅读更多 →
LTC681X官方驱动源码全解析:BMS电池采样与均衡控制实践

LTC681X官方驱动源码全解析:BMS电池采样与均衡控制实践

简介:LTC681X系列是ADI面向高精度电池管理系统(BMS)设计的多通道AFE芯片,这套官方驱动源码主要面向电池管理开发者与嵌入式软件工程师,解决多节串联电池电压采样、隔离SPI通信及数据解析等核心难题。资源包采用rar压缩…

2026/10/16 7:53:14 阅读更多 →
AI工程化治理:从Demo到生产级系统的三大核心能力

AI工程化治理:从Demo到生产级系统的三大核心能力

1. 项目概述:这不是写PPT,是给AI应用装上“刹车片”和“导航仪”“治理学习笔记:从Demo到生产——AI 应用的工程化治理”,这个标题里藏着三个被太多人忽略的硬核事实:第一,“Demo能跑通”和“系统能扛住”之…

2026/10/16 7:53:14 阅读更多 →
汇川机器人电脑版示教器:PC端示教与调试实战指南

汇川机器人电脑版示教器:PC端示教与调试实战指南

简介:汇川机器人电脑版示教器软件是面向自动化生产线、汽车制造、3C电子等领域的机器人编程与调试工具,将传统示教器功能迁移至PC端,适合设备工程师、调试人员及工业机器人学习者使用,解决远程控制、离线仿真、故障诊断等实际需求…

2026/10/16 7:53:14 阅读更多 →
GitHub Actions上跑AI Agent:事件驱动自动化实战与避坑指南

GitHub Actions上跑AI Agent:事件驱动自动化实战与避坑指南

最近在做持续集成自动化相关的事情时,我发现一个特别有意思的玩法——把 AI Agent 直接跑在 GitHub Actions 上。说白了,就是用一个开源框架,把传统常驻服务器上的 Agent 拆成按次计费的临时任务,每次由事件触发拉起一个运行环境&…

2026/10/16 7:52:14 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →