前言¶
在 DSH 里跑 agent 时,界面往往只有日志和工具调用在动,会话是「忙」还是「等你点确认」、这一轮是成功结束还是报错,要靠你自己扫事件。社区插件 dsh-plugin-xiaowu(维护者 jxboop,SkillHub 分类「趣味换装」)把一只原创手绘的兔耳少女桌宠钉在 Web 界面右下角:心情由当前会话真实状态推导,任务完成时会跳起来,并用 WebAudio 现场合成甜声说「做完啦……」,不依赖外部贴图或录音文件。
下面介绍它是什么、能做什么、怎么装,以及使用时要注意的几点。
这是什么¶
dsh-plugin-xiaowu 是常驻 DSH Web 界面右下角的桌面宠物插件。角色约 112px 高的 chibi 小人,纯手写 SVG(粉发、兔耳、长辫、白兔耳发饰、粉白连衣裙),气质上致敬「斗罗大陆」里的兔耳少女小舞,但为作者原创绘制,不是官方形象或搬运素材。
- 仓库:github.com/jxboop/dsh-plugin-xiaowu
- 目录页:skillhub.cn/plugins/jxboop/dsh-plugin-xiaowu
- 许可证:MIT(
package.json版本 0.1.2)
插件采用 DSH 客户端插件常见的双面结构:Node 侧 lib/index.js 仅用于被 Cordis 扫描到;浏览器侧 lib/client.js 负责占位、读会话状态、绘制与音效。
核心功能¶
七种心情与触发条件¶
心情来自当前会话(ctx.sessions.list.current)的状态与事件,不是随机轮播:
| 心情 | 触发条件 | 动作概要 | 声音 |
|---|---|---|---|
idle 待机 |
会话空闲 | 呼吸、眨眼、耳朵轻抖、偶尔甩辫 | 偶尔轻跳 |
think 思考 |
正在跑且尚未发工具 | 左右轻晃、头顶「?」 | — |
work 干活 |
最新事件为 tool/call |
抡锤、火星、汗滴 | 新工具一声 tick |
wait 等确认 |
approval/asked 尚未 decided |
举手、「!」、光圈脉动 | 柔和上行双音 |
done 完成 |
一轮 turn/end 成功(running 由真变假) |
跳起、爱心与星星 | 「做完啦……」+ 闪音 |
oops 出错 |
lastAgentError 或 turn/end reason=error |
垂耳、冒汗、掉泪 | 下行小三度 |
sleep 睡觉 |
90 秒无动静,或尚未打开任何会话 | 闭眼、Zzz | 四声下行摇篮曲 |
状态机 PetFollow 在 running 由真变假时会先补读事件日志,再区分「做完」与「出错」,避免报错 turn 被当成成功庆祝。
交互与无障碍¶
- 点桌宠:蹦一下 +「啵」,泡泡显示「呼哇~好舒服!」。
- 点右上角喇叭:开关声音,偏好写在
localStorage,键名dsh-plugin-xiaowu:audio。 - 点状态胶囊或悬停:展开面板,显示当前心情、工具名、会话标题。
- 眼睛会跟随鼠标;尊重
prefers-reduced-motion,动画会被压到最短。 - 浏览器禁止自动播放时,首次点击或按键才解锁 AudioContext;解锁前仍会动,只是无声。
声音设计¶
完成语「做完啦……」及 hop、tick、chime 等提示音,均由 lib/client.js 的 voice 模块用 WebAudio 振荡器实时合成(三角波主音、FM、气音瞬态、低八度衬底、立体声摆位),整段约 1.9 秒,无采样文件。
不占满屏点击¶
通过 ctx.slots.inject("shell.overlay", …) 挂在整框浮动层上;层本身点击穿透,仅 .dsh-xw-stage 恢复 pointer-events:auto,不挡住下方操作。
安装与启用¶
环境要求¶
| 项目 | 要求 |
|---|---|
| DSH | 已在跑 dsh web(有 web profile) |
| Node.js | ≥ 18 |
| git | 安装时需要 |
| 浏览器 | 支持 Web Audio |
安装步骤¶
官方 README 给出的安装方式为克隆仓库后执行安装脚本(脚本幂等):
git clone https://github.com/jxboop/dsh-plugin-xiaowu.git
node dsh-plugin-xiaowu/install.mjs
PowerShell 5.1 不支持 &&,可用:
git clone https://github.com/jxboop/dsh-plugin-xiaowu.git; node .\dsh-plugin-xiaowu\install.mjs
install.mjs 会:把插件放到 <DSH 主目录>/plugin-src/dsh-plugin-xiaowu;在 <profile>/node_modules 建链接(Windows 为 junction,无需管理员);把包名写入 <profile>/package.json 的 dsh.profile.bundles;并打印重启指引。DSH 主目录默认按 $DSH_HOME → ~/.dsh 推断。
常用参数示例:
node install.mjs --profile web
node install.mjs --dsh-home D:\dsh-home
node install.mjs --source ./本地目录
node install.mjs --help
经过上面的步骤后:
Ctrl+C停掉dsh web,再执行dsh web。- 浏览器
Ctrl+Shift+R硬刷新。
bundle 列表与插件树只在进程启动时组合,热加载覆盖不到新装的插件,因此必须重启 dsh web。
卸载¶
node dsh-plugin-xiaowu/uninstall.mjs
node dsh-plugin-xiaowu/uninstall.mjs --purge
前者移除链接与 bundles 注册并保留插件目录;--purge 会删除插件目录。同样需要重启 dsh web。
典型用法¶
不装插件先看形象¶
用浏览器直接打开仓库里的 preview.html(preview-zoom.html 为 4.2 倍放大版),可见七个心情状态的渲染效果。
确认当前载入的版本¶
客户端 bundle 顶部有语义化版本常量 BUILD。载入后控制台会打日志,也可在 DevTools 执行:
window.__DSH_XIAOWU__.build
与 lib/client.js 里的 BUILD 一致即表示当前页跑的是磁盘上的这一版。
开发侧热重载(可选)¶
若本机装有 dsh-super-injector,改完 lib/client.js 或 lib/index.js 后可用注入器重载包名 dsh-plugin-xiaowu,再刷新浏览器,无需重启 dsh web。无注入器时,改源码后重启 dsh web 并刷新页面即可。
无浏览器的自测:
node --check lib/client.js
node test/harness.cjs
适用场景与注意¶
适合已经在用 dsh web、希望用轻量视觉反馈感知 agent 待机、思考、调工具、等审批、完成或报错的开发者。趣味向、不占主工作区,声音可关。
安装前建议自行阅读仓库源码与 MIT 许可;插件随当前 DSH 进程与 profile 加载,与你会话里 agent 能做的事同属该进程权限范围,不要在未审阅的情况下在生产环境盲目安装第三方 bundle。
首次使用需用户手势解锁音频;长期无操作会进入 sleep 心情。
结尾¶
dsh-plugin-xiaowu 把会话事件折叠成七种心情,用原创 SVG 与 WebAudio 合成音完成「看得见、听得见」的回合结束反馈,安装依赖官方 install.mjs 与重启 dsh web。
- 目录页:https://www.skillhub.cn/plugins/jxboop/dsh-plugin-xiaowu
- GitHub:https://github.com/jxboop/dsh-plugin-xiaowu