pet-scaffold — 桌面宠物技能一键生成器
把一堆动画帧 PNG 变成完整的 WorkBuddy 桌面宠物技能。从 lvbu-pet / guanyu-pet 框架抽取,一条命令生成全套文件。
快速使用
node "C:\Users\Administrator\.workbuddy\skills\pet-scaffold\generate.js" \
--src <帧图目录> \
--id <petId> \
--name "<PetName · 称号>"
参数
| 参数 | 必填 | 说明 |
|---|---|---|
--src |
✅ | 帧图目录,需含 idle/、click/、walk/ 三个子目录,各放 PNG/JPG 帧 |
--id |
✅ | 宠物 ID(英文,如 zhangfei-pet),用作 DOM ID 和技能目录名 |
--name |
✅ | 宠物名称(如 "ZhangFei · 万人敌"),显示在悬浮提示和菜单 |
--revive |
❌ | 隐藏后恢复按钮显示的字(默认取 name 首字) |
--width |
❌ | 显示宽度(默认按帧比例从高度 200 推算) |
--height |
❌ | 显示高度(默认 200) |
--fps |
❌ | 帧率(默认 10) |
--outdir |
❌ | 输出目录(默认 ~/.workbuddy/skills/<petId>/) |
示例
# 生成张飞宠物
node generate.js --src ./zhangfei-frames --id zhangfei-pet --name "ZhangFei · 万人敌" --revive 飞
# 指定尺寸和帧率
node generate.js --src ./caocao-frames --id caocao-pet --name "CaoCao · 枭雄" --height 180 --fps 12
生成器做了什么
- 检测帧图:扫描
idle/、click/、walk/子目录,按自然排序收集帧 - 自动尺寸:读取首帧 PNG 尺寸,按比例计算显示宽高(默认高 200)
- 复制帧图:将三个动画文件夹复制到输出目录
- 生成 6 个文件:
-pet.json— 宠物配置(petId/petName/尺寸/fps/reviveText/动画引用)
-pet-widget.js— 通用宠物组件(从模板复制,无需修改)
-index.js— CDP 注入脚本(从模板复制,从 pet.json 读所有配置)
-start-pet.bat— 一键启动器
-SKILL.md— 标准技能入口
-preview.html— 独立预览页
生成后的使用
# 预览动画
# 用浏览器打开 <输出目录>/preview.html
# 一次性注入(测试)
node <输出目录>/index.js --once
# 守护模式(常驻,每5秒检查)
node <输出目录>/index.js
# 移除宠物
node <输出目录>/index.js --remove
# 一键启动
双击 <输出目录>/start-pet.bat
多宠共存机制
每个宠物使用 wb-pet-<petId>-* 独立 DOM ID + window.__WB_PETS__ 注册表,多个宠物技能可同时注入同一 WorkBuddy 窗口,互不干扰。右键菜单的"移除宠物"仅移除当前宠物。
模板文件
位于 templates/ 目录:
| 模板 | 说明 |
|---|---|
pet-widget.js |
通用宠物组件(帧动画/拖拽/右键菜单/随机走动) |
index.js |
通用 CDP 注入脚本(从 pet.json 读配置) |
start-pet.bat |
启动器模板({{PET_ID}}/{{PET_NAME}}/{{OUTDIR}} 占位符) |
preview.html |
预览页模板({{PET_NAME}}/{{FRAMES_*}}/{{BOX_*}} 占位符) |
pet-skill.md |
生成的 SKILL.md 模板({{PET_ID}}/{{PET_NAME}} 等占位符) |
依赖
- Node.js(使用 WorkBuddy 内置 Node 22.x)
chrome-remote-interface(运行时自动复用wb-full-ecology-skin__skillhub技能的依赖)- 无需额外安装任何包