用图片生成 WorkBuddy 氛围皮肤
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_0734398a/workbuddy-ambient-skin
技能介绍
解决的问题
WorkBuddy 的桌面皮肤可以自定义,但手动制作远不只是从图片里挑几个颜色:要先提取可用配色,决定哪些颜色承担背景、强调、表面和文字角色,再把结果写回 Electron 打包后的 app.asar。手工处理时,图片里好看的局部色不一定适合承载 UI;改错一个文件,还可能因为 Electron 的完整性校验而静默失效。
这个技能把这条链路收进一个可重复的流程:输入图片,输出可运行的皮肤。
核心能力与流程
- 配色提取:
scripts/extract_colors.py先裁掉画纸白边,再对采样点做 K-Means 聚类。其中 K 取 6,使用 K-Means++ 初始化,并用 BT.601 亮度公式做明度判断。 - 颜色角色分配:按色相分桶后,从桶内选出
accent与surface。同一桶保证色调统一,accent偏向更亮、更醒目、占比更突出的颜色,surface偏向更暗、更安静、RGB 总和更小的颜色。 - 文字色固定:
text不进入调色板。DARK 模式固定为#F0F5FA,LIGHT 模式固定为#1A1A2E,让文字对比度不依赖图片主色,并保持 WCAG AAA 阅读表现。 - 模糊背景:裁剪后将图片拉伸到 1920×1080,做半径 60 的高斯模糊,并加顶部渐变压暗。它只保留画作的色调氛围,不保留细节,避免背景干扰 UI 文字。
- asar 注入:
apply_skin.sh基于@electron/asar的 extract + pack 流程重打包,自动生成正确的 integrity hash,避免手工改 header。
注意点与适用边界
- 它面向氛围皮肤。如果你希望完整保留画作细节,纯模糊背景会主动去掉细节,不是合适选择。
- 它不是二进制手术工具。Electron 37+ 会校验 asar 内文件的 SHA256 integrity;注入或修改 CSS 后如果 hash 不正确,文件会被静默拒绝加载,界面没有报错。因此不要直接删除 integrity 字段,也不要假设手工改 header 一定安全。
- 如果生成后 CSS 颜色不对,先检查
color_scheme.json的mode,再确认 DARK 与 LIGHT 分别匹配dynamic与dynamic-light模板,最后检查有没有残留原始模板色rgba(255,77,156,。 - 运行前需要
pink-crystal-workbuddy-skin提供assets/dynamic/skin.css与assets/dynamic-light/skin.css;Python 流程依赖 Pillow 和 NumPy 完成颜色统计,FFmpeg 或 Pillow 参与背景编码。 - 这套方法适合在统一色调前提下自动生成皮肤,不适合当作通用图像风格迁移或 UI 主题设计引擎。
使用场景
- 美术资源已定稿,工程师需要把这张图直接变成 WorkBuddy 桌面皮肤并改入 app.asar
- 桌面皮肤设计稿里有主背景和强调色,工程师想按图片自动生成同名角色与固定文字色。
- 已有画作的照片,工程师想在不暴露图像细节的前提下生成大面积模糊氛围背景。
- 用 extract_colors.py 提取主色后,工程师想生成 color_scheme.json 并交给 build_skin_css.py 注入。
适合人员
- 负责 WorkBuddy 客户端皮肤交付的工程师,诉求是把资源图稳定封装成 asar 并让玩家直接加载。
- 为桌面软件定制视觉皮肤的工程师,诉求是让UI文字优先,而不是让画作细节压过信息。
- 排查 WorkBuddy 皮肤静默失效的开发工程师,诉求是确认 integrity hash 与注入方式是否兼容。
- 喜欢把绘画或照片转成自己喜欢的桌面配色,又不想手动填色值的用户。