crabossss/dsh-desktop-pet

桌面端Desktop ⭐ 3 其他Other

一个会「盯人」的小桌宠:屏幕右下角的 Q 版奶龙(金黄色圆滚滚的小龙,参考官方 「黄皮肤、duangduang 大肚肚」形象),眼神会跟着鼠标箭头走。 按住可以把它拖到任意位置,点它一下还会冒出一句奶声奶气的吐槽。

catalog 简介 / catalog descriptioncatalog description:—

项目介绍Project Overview

奶龙桌宠是一个 DSH 客户端动态插件,在屏幕浮层渲染纯 SVG 的 Q 版奶龙。它支持眼神跟随鼠标、拖动驻留、点击随机吐槽气泡,以及待机呼吸与眨眼动画。适合想在会话界面添加轻量桌面陪伴互动时使用。注意:动态插件为会话级、进程内,停止或重启会话后需重新激活。

Nailong Desktop Pet is a DSH client-side dynamic plugin that renders a pure-SVG chibi dragon in the screen overlay. Its eyes follow the mouse, it can be dragged around, clicked for random speech bubbles, and it breathes and blinks while idle. Use it when you want a lightweight companion in the DSH interface. Caveat: as a dynamic plugin, it is session-scoped and must be reactivated after stopping or restarting the session.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add github:crabossss/dsh-desktop-pet

crabossss/dsh-desktop-pet 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

奶龙桌宠 🐲

一个会「盯人」的小桌宠:屏幕右下角的 Q 版奶龙(金黄色圆滚滚的小龙,参考官方 「黄皮肤、duangduang 大肚肚」形象),眼神会跟着鼠标箭头走。 按住可以把它拖到任意位置,点它一下还会冒出一句奶声奶气的吐槽。

✨ 功能

  • 眼神跟随:黑色圆眼睛 + 白色高光整体朝鼠标方向位移(requestAnimationFrame 每帧驱动,流畅不卡顿)
  • 右下角驻留:默认固定屏幕右下角,可直接拖动到任意位置(自动吸附在视口内)
  • 点击互动:点一下会弹出随机气泡台词,2.4 秒后自动消失
  • 待机动画:上下浮动呼吸 + 周期性眨眼
  • 纯 SVG 绘制:无任何图片资源,代码即形象

🚀 两种使用方式

方式一:作为 DSH 动态插件(推荐)

这是本项目的原始形态:一个 DeepSeek Harness 动态 Cordis 插件(仅 Client 半区),渲染在 shell.overlay 全屏浮层槽位。

  1. 在 DSH 会话中调用 cordis_define,把 plugin/client.jsreturn { ... } 的函数体粘贴到 code.client 字段(idPrefix 建议 naidr)。
  2. 调用 cordis_run 激活,在浏览器里批准后,屏幕右下角就会出现奶龙。

说明:动态插件是会话级、进程内的,停止或重启会话后需要重新激活。

方式二:独立网页 Demo(无需任何依赖)

直接用浏览器打开 standalone/index.html,纯 HTML/CSS/JS, 双击即可体验完整功能。

📁 项目结构

dsh-desktop-pet/
├── README.md               # 本文件
├── plugin/
│   └── client.js           # DSH 动态插件 Client 半区源码
└── standalone/
    └── index.html          # 零依赖独立 Demo(可直接浏览器打开)

🛠️ 技术要点

  • 插件仅 Client 半区:inject: ['timer'] 声明计时服务,气泡自动消失用 ctx.timeout
  • 眼神跟随通过 document.addEventListener('mousemove') + rAF 循环直接改 SVG transform(整眼位移 + 高光位移),不触发 React 重渲染
  • 拖动用 Pointer Events + setPointerCapture,并区分「拖动」与「点击」
  • 样式经 styles.insert 注入,随插件卸载自动清理
上一个 Prev MCM_skills 下一个 Next dsh-skin-studio