Bundle
dsh-luxun-desktop-pet
DSH Web 鲁迅先生桌宠插件:右下角 GIF 桌宠,按 Agent 工作状态换动作,任务完成与点击时播放鲁迅音频。
- Source
- WangRunWei
- stars
- 1 stars
- License
- UNLICENSED
- Updated
- Updated 3 days ago
Readme
# DSH 鲁迅先生桌宠(全局插件)
DSH Web client plugin:在 Web 界面右下角显示鲁迅先生 GIF 桌宠。四种状态各配一张专属
GIF,外加点击彩蛋交互,素材均来自用户提供的 `C:\Users\26294\Desktop\sc\`(原样复制,未重新设计):
| 状态 | 素材文件(assets/) | 来源 |
|---|---|---|
| 待机中 | `idle.gif` | `待机中.gif` |
| 正在工作 | `working.gif` | `正在工作.gif` |
| 任务完成 | `done.gif` + `done.mp3` | `任务完成.gif` + `任务完成音频.mp3` |
| 点击彩蛋 | `egg.gif` + `egg.mp3` | `鲁迅卡通形象.gif` + `鲁迅卡通形象音频.mp3` |
## 行为
- 待机中(无活动会话):`idle.gif`,气泡灰色「待机中」
- Agent 运行中:`working.gif`,气泡蓝色「正在工作」
- 等待用户审批或问题回答:沿用 `idle.gif`,气泡琥珀色「等你决定」
- 任务完成(运行中 → 结束且非等待):`done.gif` + 播放 `done.mp3`,气泡绿色「任务完成」;
完成动图**固定展示 30 秒**(音频播完即止、不提前退出)——30 秒内用户提问或新任务
开始则立即打断,30 秒无干扰后自动回到待机
- 点击桌宠(未拖动):触发彩蛋 `egg.gif` + 播放 `egg.mp3`,气泡粉色「彩蛋!」;
彩蛋中再点可重新触发;彩蛋展示时长 = **GIF 完整一轮 + 2 秒余量**(客户端解析帧
延迟总和,等 GIF 解码完成才开始计时,当前素材一轮约 10 秒、展示约 12 秒;音频只
叠加播放、不驱动退出,不会中途截断;解析/解码失败时 12 秒兜底),期间 Agent
状态变化会随时打断特效
- 静音按钮:气泡右侧小圆钮 🔊/🔇,与气泡垂直居中对齐(独立可点击,气泡本身不拦截
鼠标);点击切换,静音时不播任何音频(完成展示 30 秒照常、彩蛋展示 GIF 完整一轮
无声演出),状态存 localStorage,刷新后保持;静音瞬间会掐掉正在播的音频
- 隐藏/显示:气泡左侧小圆钮 ✕ 点击即**整体隐藏**宠物(GIF、气泡、按钮全部消失);
隐藏期间不播任何音频、也不闪现提醒(区别于只关声音的静音),下次任务完成不触发
特效;恢复入口是隐藏后**右下角一枚迷你鲁迅头像圆钮**(36px,一眼可见),点击即
重新显示(设置页插件卡不可行:宿主只服务 host 半注册过设置命名空间的卡片)。
隐藏状态存 localStorage,刷新后保持
- 按住拖动可移动桌宠位置(Pointer Events,鼠标/触摸通用,拖出界会自动钳制在视口内;
位移超过 4px 判定为拖拽,不会误触发彩蛋)
- 桌宠以命令式 DOM 直接挂到 `document.body`(`z-index: 2147483000`,不依赖
react-dom/Portal),不受界面面板/弹层遮挡与容器裁剪,`fixed` 定位相对整个视口,
可全屏拖拽
- 状态以聊天气泡样式显示:渐变毛玻璃底 + 状态色光晕 + emoji 图标 + 水滴尾巴,
不对称圆角(右下收口);状态切换 Q 弹入场;工作中带「正在输入」跳动圆点,
完成/彩蛋带弹跳点缀;五种展示色(灰/蓝/琥珀/绿/粉)
素材由 host 半通过 `/dsh-luxun-pet/asset/{idle.gif,working.gif,done.gif,egg.gif,done.mp3,egg.mp3}`
提供,带与 /api 一致的回环/可信域信任检查;状态来自 DSH 官方 `sessions.list` 快照,
不修改 DSH 核心。
## 全局安装(web profile)
插件目录固定在 `C:\Users\26294\.dsh\plugins\dsh-luxun-desktop-pet`,与任何项目无关。
```powershell
cd $env:USERPROFILE\.dsh\profiles\web
pnpm install
```
前提是 `package.json` 中已登记:
```json
"dependencies": {
"dsh-luxun-desktop-pet": "link:C:/Users/26294/.dsh/plugins/dsh-luxun-desktop-pet"
}
```
且 `dsh.profile.bundles` 列表包含 `dsh-luxun-desktop-pet`。
> 用 `link:` 不用 `file:`:pnpm 对 `file:` 是装时拷贝(插件改了 node_modules
> 里的旧拷贝不跟着变,功能"消失"就是这来的),`link:` 才是 junction 直连插件目录。
修改插件文件后:host 半变更需重启 `dsh web`;client 半变更硬刷新浏览器即可。
GitHub:https://github.com/WangRunWei/dsh-luxun-desktop-pet
Install
dsh plugin --profile web add github:WangRunWei/dsh-luxun-desktop-pet
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-luxun-desktop-pet from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.