跳到正文

opensetk/dsh-xiaohei

50最近提交 2026年8月13日

dsh-xiaohei DSH 插件

dsh-pet 是一个宿主 + 浏览器双端插件,常驻在 DSH Web UI 右下角。它通过监听会话事件,展示七种姿态(空闲、忙碌、思考、输出、干活、完成、出错),并支持点击互动。该插件也是 DSH 插件开发的完整示例,使用了 shell.overlay 槽位。

如何安装 dsh-xiaohei DSH 插件

dsh plugin --profile web add github:opensetk/dsh-xiaohei#dsh-plugin

复制不会执行命令。安装 dsh-xiaohei DSH 插件前请核对仓库和版本。

dsh-xiaohei DSH 插件数据来源

dsh-xiaohei DSH 插件快照日期:2026年8月16日

discovered

dsh-xiaohei DSH 插件能做什么

  • 根据 agent 状态事件(如 turn/start、step/start、assistant/chunk)实时切换宠物姿态。
  • 点击宠物可触发随机动画和气泡文案。
  • 轮询不可用时自动回退到 useSessions 快照推导,保证宠物始终有表现。
  • 姿态状态机(src/moods.ts)为纯函数,可回放重建,跨会话一致。
  • 完全插件化:宿主侧通过 session/event 监听,浏览器侧注入 shell.overlay 槽位。

dsh-xiaohei DSH 插件适合哪些场景

  • 在开发或调试 DSH 应用时,通过桌面宠物直观感知 agent 当前状态。
  • 为 DSH Web UI 增加趣味性和交互性,提升用户体验。
  • 学习 DSH 双端插件架构,参考源码和构建脚本进行二次开发。
  • 快速识别 agent 会话异常,通过宠物的出错姿态及时发现错误。

dsh-xiaohei DSH 插件适合谁

  • DSH 用户和开发者,希望获得实时视觉反馈。
  • 对 DSH 插件开发感兴趣的开发者,想学习 Host + 浏览器客户端模式。

dsh-xiaohei DSH 插件的限制

  • 仅针对 DSH 0.1.0-rc.6 测试验证,其他版本可能需要调整 API。
  • 需要本地 DSH 环境,且构建过程需复用本机 DSH 安装包。
  • 宠物素材来自公开资源,仅供学习交流,生产环境使用需确保版权合规。
  • 轮询不可用时,姿态推导依赖快照粗粒度数据,可能不够精确。

dsh-xiaohei DSH 插件的仓库 README 摘录

以下文字摘自 dsh-xiaohei DSH 插件的上游仓库 opensetk/dsh-xiaohei 的 README,版权归原作者,仅作引用。

一颗住在 **DSH Web UI** 右下角的桌面宠物:跟随 agent 的运行状态实时切换姿态, 点击还能获得俏皮反馈。是一个完整的 **Host + 浏览器双半** Web UI 插件示例, 所有 API 均按 DSH `0.1.0-rc.6` 实测验证。 - 宿主半(Node):监听持久化 `session/event`,折叠出每会话的宠物姿态 - 浏览器半(`dsh.client` bundle):注册进 `shell.overlay` 全局浮层槽位,渲染宠物形象 - 姿态状态机是纯函数(`src/moods.ts`),可回放重建,与实时事件流同一套逻辑 --- ## 效果预览 <p align="center"> <img src="docs/screenshots/QQ_1786634277517.png" alt="dsh-pet 效果截图 1" width="70%"> </p> <p align="center"> <img src="docs/screenshots/QQ_1786634322842.png" alt="dsh-pet 效果截图 2" width="70%"> </p> <p align="center"> <img src="docs/screenshots/QQ_1786634371357.png" alt="dsh-pet 效果截图 3" width="70%"> </p> --- ## 它做什么 宿主侧逐事件折叠出**七种姿态**,浏览器经 HTTP 路由 `/pet-mood?sessionId=…` 轮询(800ms): | 姿态 | 触发事实(`session/event`) | 宠物表现 | |---|---|---| | 空闲 `idle` | 无活动 | 😴 陪着你~ | | 忙碌 `busy` | `turn/start` | 👋 摇摆「忙忙哒」 | | 思考 `thinking` | `step/start` | 🍗 吃鸡腿「边想边吃…」 | | 输出 `streaming` | `assistant/chunk`(`text-delta` 非空文本) | 🏃 奔跑「冲鸭鸭!」 | | 干活 `tool` | `tool/call`(结果未回) | 🎮 玩嘿咻「和嘿咻玩会儿~」 | | 完成 `done` | `assistant/message` / `tool/result` 成功 | 🎉 庆祝「耶!搞定~」 | | 受挫 `error` | `turn/end` 失败(`reason.kind` 为 `error`/`aborted`)/ `tool/result` 带 `error` | 🤸 翻滚「呜哇…」 | 鼠标点击宠物 → 随机播放一个互动

阅读完整 README仓库许可: MIT

dsh-xiaohei DSH 插件常见问题

如何将 dsh-pet 安装到我的 DSH Web UI 中?

确保你已安装 DSH 0.1.0-rc.6。然后在 profile 目录下执行 `dsh plugin --profile web add github:opensetk/dsh-xiaohei#dsh-plugin`。之后按照 README 说明,将宿主插件行添加到 `~/.dsh/profiles/web/cordis.patch.yml` 中,最后重启 DSH(`dsh web`)。宠物应该出现在右下角。

宠物完全不显示,怎么办?

检查 profile 的 `package.json` 是否声明了依赖,以及 `cordis.patch.yml` 是否插入了宿主行。同时查看页面源代码,确认 `window.__DSH_BOOT__` 中存在 `"id": "dsh-pet"` 条目。如果缺失,使用 `node scripts/build.mjs` 重新构建客户端 bundle,并强制刷新浏览器(Cmd+Shift+R)。

宠物不动,不随 agent 会话变化,如何解决?

这通常是因为 `useSessions` 选择器返回了常量。确保客户端 bundle 中使用了 `useSessions((s) => s)` 来获取快照。同时清除浏览器缓存并硬刷新。如果问题依旧,检查宿主插件是否正确监听事件,以及 `/pet-mood` 路由是否返回有效 JSON。

控制台报错 'failed to import loader entry',是什么原因?

这个错误说明 `lib/client.js` 没有以正确的注册格式构建。它必须以 `window.__ModuleLoader__.load({id:"dsh-pet",...` 开头。重新执行 `node scripts/build.mjs` 构建 bundle。确保使用的是提供的构建脚本,而不是其他可能导致输出格式不同的打包工具。

我可以自定义宠物的外观或添加自己的动画吗?

宠物素材目前从 `assets/` 文件夹内联为 data URL。你可以替换 `assets/` 中的 GIF/PNG 文件,然后使用 `node scripts/build.mjs` 重新构建。注意素材来自公开资源,仅供学习使用。如果使用自定义素材,请确保拥有使用权。同时,你还可以修改 `src/moods.ts` 和 `src/client/Pet.tsx` 来调整姿态逻辑和动画。