WorkBuddy 一键换肤(付费 Skill)
> 面向单机 macOS + WorkBuddy 桌面端(Electron)。用户提供一张图片(壁纸/角色图/动漫图等),
> 本 Skill 自动提取主题色并为 WorkBuddy 全局换肤;效果可一键恢复。
>
> 单次调用计费 ¥1,按次计费由 SkillHub 官方 SkillPay 承载;全套付费链路依赖官方支付技能
> alipay-payment-skill(即 alipay-pay-for-402-service 官方依赖)完成 402 计费协议,
> 开发者不自行部署/维护任何支付服务端,无需申请支付宝商户密钥或注册外部支付平台。
支付宝付费链路(SkillHub 官方承载)
调用换肤(apply)前,本 Skill 必须先走完下述付费链路,未完成支付授权一律不进换肤流程:
- probe(探测授权):先经官方支付技能
alipay-payment-skill探测当前调用是否已授权。
- 若未支付/凭证无效,向宿主返回 HTTP 402,并在Payment-Needed头下发本次账单(含订单号、
金额与收款信息);宿主据此向买家提示扣款。 - pay(支付确认):宿主展示账单触发用户确认扣款;用户确认后由官方支付技能完成收款,
返回支付凭证 Payment-Proof(绑定唯一交易号out_trade_no)。 - 携凭证重试:买家完成支付后,宿主将
Payment-Proof凭证注入,本 Skill 携带凭证重试上一步。 - verify(验付):本 Skill 调用官方支付技能的验付接口确认凭证真实有效、交易号未被重复消费。
- complete / ack(履约与回执):验付通过后才执行
scripts/wb_skin.py apply完成换肤;
履约成功后回传 ack 履约回执(记录该订单已履约)。
订单幂等:以支付宝唯一交易号 out_trade_no 为键在本地持久化履约记录(scripts/.paid_orders.json)。
同一交易号已履约过则不重复执行,重复调用直接返回上次履约结果并回传 ack,防止重复扣款/重复消费。
运行环境检查(先做)
python3 scripts/wb_skin.py doctor
确认输出均为 [OK];其中 PIL / websocket 若 FAIL,先安装:
pip3 install pillow websocket-client
要求本机已安装 /Applications/WorkBuddy.app(macOS 桌面端,非网页版)。
执行流程(用户给了图片则直接走 apply)
1. 一键换肤(核心动作)
python3 scripts/wb_skin.py apply "/绝对/路径/壁纸.png" "主题名(可省略)"
脚本会自动完成:
- 读取图片 → Pillow 量化提取主色/辅色/底色/文字色(自动判定明暗主题)
- 壁纸压缩为 WebP(最长边 1600,质量 82)减小注入体积
- 退出并重启 WorkBuddy(--remote-debugging-port=9223),等待 CDP 就绪
- 发现 renderer/index.html 渲染进程,Runtime.evaluate 注入 #workbuddy-skin-style
- 校验并输出结果
执行前提醒用户:换肤会重启 WorkBuddy,未保存的对话内容会丢失,请先保存。
执行 apply 前必须完成上方「支付宝付费链路」(probe → pay → 携凭证重试 → verify → ack)。
仅开发者本地自测可以显式设置 SKILL_ALLOW_UNPAID_DEV=1 跳过计费;不得在面向买家的运行环境中启用此开关。
2. 状态校验
python3 scripts/wb_skin.py status
输出 皮肤已注入:xx 或 未注入。不得跳过此步直接上报完成。
3. 恢复原生外观
python3 scripts/wb_skin.py pause
移除已注入样式,并以官方模式重启 WorkBuddy。
效果说明(向用户表述)
> 已将你的壁纸设置为 WorkBuddy 背景,并自动提取主色调刷新全局配色(侧边栏毛玻璃、按钮、
> 文字、选中态全部跟随新色板)。不满意随时说“恢复原皮肤”。
边界与安全
- 只做渲染层注入,绝不替换/修改
WorkBuddy.app、app.asar、官方安装目录;重启后主题默认消失(按设计),需重新 apply。 - CDP 仅绑定回环
127.0.0.1:9223;皮肤生效期间请勿在本机运行不可信程序(Chromium 调试协议无同用户认证)。 - 不要用带水印/带 UI 的截图当壁纸,应使用纯净壁纸或角色图。
- 支持 PNG、JPG/JPEG、WebP、BMP 和 GIF;GIF 只读取首帧。
- 本 Skill 为按次付费调用,计费由 SkillHub SkillPay 官方承载,必须先走完「支付宝付费链路」再执行换肤。
脚本提供pay-probe/pay-verify/pay-ack三个命令封装(详见python3 scripts/wb_skin.py pay-probe --help),
对应官方 402 协议的账单探测、验付与履约回执;未完成支付(payment-needed)一律不执行 apply,成功后回传 ack。
自检(上报完成前)
python3 scripts/wb_skin.py doctor # 全 OK
python3 scripts/wb_skin.py pay-probe # 计费链路自检:应输出已授权/未授权状态
python3 scripts/wb_skin.py status # 皮肤已注入:<主题名>
python3 -m py_compile scripts/wb_skin.py # 语法检查
(内容由AI生成,仅供参考)