Back to home@purezhi

dsh-plugin-confirmo

复刻 confirmo for DeepSeek Harness

Stars
0
Language
JavaScript
Created
Aug 22, 2026
Updated
Aug 23, 2026
GitHub repo

Introduction

DSH UI Confirmo 桌宠

DeepSeek Harness (DSH) 的 Web UI 里复刻 confirmo.love 的桌宠体验:一只会动、可拖拽、可换形象的 AI 编码小伙伴, 并支持 sprites.confirmo.love 社区精灵图。

交互、视觉与素材规范均致敬 confirmo.love 及其社区精灵图画廊。

📸 效果预览

默认待机工作状态
默认待机工作状态
开心兴奋睡觉
开心兴奋睡觉

✨ 功能

默认形象

confirmo.love 同款黄猫(SVG 复刻官方 logo,渐变 #FCD34D→#F59E0B): 浮动 / 眨眼 / 耳朵抖动 / 胡须摆动 / 高光闪烁 / 尾巴摆动。

7 个精灵状态

每个 sprite 是 8 列 × 7 行 = 56 帧 的精灵图,每行一个动画:

状态触发方式
Row 1待机 Idle默认基础状态
Row 2开心 Happy单击(250ms 手势窗口确认)
Row 3兴奋 Excited双击 + 整体弹跳
Row 4睡觉 Sleepy5 分钟无 agent 动作/宠物交互自动入睡,3 个 Z 飘动
Row 5工作 Working检测到 DSH agent 运行自动切换,齿轮 + 三点加载 + 上飘代码符号
Row 6生气 Angry快速连点 5 次 / agent 运行出错 / sprite 加载失败
Row 7拖拽 Dragging按住拖动
  • 手势用**延迟提交(250ms 去抖窗口)**区分单击/双击/连点,不依赖浏览器 dblclick 事件
  • 状态互斥:工作中/兴奋动画播放中单击不响应;连点 5 次仍可升级为生气
  • 任务完成时播放「兴奋(远近缩放) → 开心」庆祝 + 「搞定! ✓」气泡
  • 右键菜单含 7 个状态按钮,可 10 秒预览每个状态(可被交互打断)

社区 sprite 支持

  • 在线拉取清单:菜单支持实时显示社区最新 sprite
  • 分层本地缓存:缓存正在使用的 sprite,提升加载速度
  • 抠图:纯品红 #ff00ff 背景自动抠除,移植官网画廊同款流水线,对非标准品红背景(如深紫)也鲁棒
  • 空闲预取:启动预热 + 入睡时用空闲带宽逐个补齐磁盘缓存

交互与细节

  • 拖拽移动(位置持久化);右键菜单切换形象 / 大小(96/128/160)/ 状态预览
  • 默认位置左下角;形象、位置、大小存于 localStorage
  • 菜单缩略图统一(processed 缩略图优先,缺失时 canvas 抠图兜底)、深色主题适配
  • 尊重系统 prefers-reduced-motion

📦 安装

git clone <your-repo-url> confirmo
cd confirmo
./install.sh

脚本会:把插件包拷贝到 ~/.dsh/profiles/node_modules/dsh-plugin-confirmo/、在两个 profile 的 cordis.patch.yml 插入 confirmo 注册段、给 web profile 建符号链接。

然后重启 DSH Desktop(插件集变更需要重启,client-modules 的包元数据缓存设计)。 重启后 window.__DSH_BOOT__ 会包含 dsh-plugin-confirmo 条目,浏览器自动加载桌宠。 node 端路由(/confirmo/sprites/confirmo/sprite)也随重启注册。

🔧 开发

node dsh-plugin-confirmo/build.js   # 从 client.src.js + sprite_list.json 生成 lib/client.js

lib/client.js 是浏览器端 bundle(window.__ModuleLoader__.load(...) 格式),由 lib/client.src.js(源码)+ sprite_list.json(内置 sprite 快照)构建而来。

改动流程:改 client.src.jsnode build.jscp lib/client.js ~/.dsh/profiles/node_modules/dsh-plugin-confirmo/lib/client.js → 刷新页面生效 (改 index.js 才需要重启 DSH Desktop)。

手动更新内置 sprite 快照(可选):

curl -s "https://api.sprites.confirmo.love/sprites?page=1&limit=20&sort=trending" -o /tmp/trending.json
# 处理后覆盖 sprite_list.json, 再 node build.js

🗑️ 卸载

cd confirmo
./uninstall.sh

删除插件包、web 链接和两处 cordis.patch.yml 注册段,重启 DSH Desktop 生效。

📁 文件结构

confirmo/
├── LICENSE
├── README.md
├── install.sh / uninstall.sh
├── docs/
│   ├── screenshots/         # 效果预览截图(README 引用)
│   ├── sprites/             # 社区 sprite 素材(git 排除, 用 download-sprites.mjs 重新下载)
│   └── submission/          # 1024Store 插件市场投稿文件
└── dsh-plugin-confirmo/
    ├── package.json        # 声明 dsh.bundle.patch + dsh.client (platform: web), 导出 ./client
    ├── cordis.patch.yml    # bundle patch: 注册 confirmo 插件到 cordis 配置
    ├── sprite_list.json    # 内置 sprite 快照(60 个热门 sprite 的 URL 清单)
    ├── build.js            # 构建脚本
    └── lib/
        ├── index.js        # node 端:/confirmo/sprites 清单代理 + /confirmo/sprite 磁盘缓存路由
        ├── client.src.js   # 浏览器端源码(猫咪 SVG + 抠图 + 播放引擎 + 手势 + 缓存 + 菜单)
        └── client.js       # 构建产物(ModuleLoader bundle)

📜 致谢与声明

  • 复刻自 confirmo.love 的交互体验与视觉风格,精灵图规范来自 sprites.confirmo.love 社区
  • 精灵图素材版权归各自作者所有;本项目仅嵌入其 URL 清单,运行时从官方服务器加载
  • 本项目为独立开源实现,与 confirmo.love 无隶属关系

⚖️ License

MIT