dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
给 DSH(DeepSeek Harness)Web GUI 用的 Live2D 桌宠插件 —— 一只可以拖动、跟着鼠标看、点她会害羞、 还会跟着会话状态换动作与表情的桌宠。自带 DS鲸鱼娘(8 组动作 + 44 个表情/道具),装完即用。
拖动定位 · 视线跟随 · 摸头互动 · 会话相位 · 右键换装 · 事件穿透 20 个互斥槽位 · 摸鱼随机演出 · 双半区插件,装完即用
是什么 · 快速上手 · 怎么玩 · 跟着会话走 · 设置 · 加一只宠物 · 目录结构 · 开发与验证 · 常见问题 · 交流群 · 许可
DSH 的 Web GUI 负责对话,而 dsh-pet-live2d 是挂在这块界面上的一只桌宠:她住在页面右下角,能拖、能缩、 跟着鼠标看,点她会有反应。更有意思的是她订阅 DSH 的真实事件(工具调用、审批请求、子代理、轮次结束……), 于是「在想」「在跑工具」「在等你批准」「出错了」这些状态会变成她的动作、表情和台词 —— 不用盯着日志看进度。
能力 · 原生 DSH Web GUI · 装了 dsh-pet-live2d 界面陪伴 · 无 · 桌宠常驻页面,可拖动 / 缩放,位置和大小记在 localStorage 状态可视化 · 文字与状态点 · 8 个会话相位,各有一套动作 + 表情 + 台词,长任务持续播放 互动 · 无 · 摸头 / 摸尾巴 / 绕着转圈都有反应,按模型的三角面判定,不是方框 换装 · 无 · 20 个互斥槽位、44 个表情/道具,右键面板现场换,装扮跨会话保留 挡不挡 UI · — · 只有角色剪影吃鼠标事件,方形画布的透明处穿透到底下页面 打扰程度 · — · 静置才会自己演一段;平时画面上没有任何常驻 UI,鼠标划过也不显示
另有桌面端(dsh-live2d-pet-desktop/,Tauri 壳):把同一份宠物代码放进透明置顶窗口、逐像素穿透到壁纸。Windows x64 的单文件 exe
随插件包分发(装完在设置里选「桌面」);macOS(Apple Silicon)的构建由 CI 产出,
尚未在真机验证 —— 平台支持与已知限制见它的 README。
在 DSH 里点几下就装好了(不用命令行):
dsh-pet-live2d,回车或点「安装」;官方插件页目前不支持自动更新:升级要在这里先卸载、再按上面装一次。
习惯命令行的话,等价的几条:
# 从 npm 装(推荐:插件和自带宠物一起下好)
dsh plugin --profile web add dsh-pet-live2d
# 或从仓库装(# 后面是 pnpm 的 path: 协议,注意那个斜杠)
dsh plugin --profile web add "github:A8Chann/dsh-pet-live2d#path:/dsh-live2d-pet"
# 或先克隆再装本地目录
git clone https://github.com/A8Chann/dsh-pet-live2d
dsh plugin --profile web add "link:./dsh-pet-live2d/dsh-live2d-pet"仓库根目录没有package.json:可安装的包在子目录dsh-live2d-pet/里,所以从 Git 装必须带
#path:/dsh-live2d-pet。从 npm 装不用管这些。装完之后会发生什么:
%DSH_HOME%\pets,重启 dsh web 就能看见。只在目标不存在时复制,或者内容与随包分发的那份逐字节相同时才同步升级 —— 你自己改过的那份一个字都不会动。
live2dcubismcore.min.js 是 Live2D 株式会社的专有运行时,不能随插件分发;插件第一次用到它时去 Live2D 官方 CDN 取一份(校验过再发出去),缓存到 %DSH_HOME%\pets.runtime,之后离线也能用。
项目 · 要求 DSH · >= 0.1.5-rc.1,装在 web profile 上 浏览器 · 支持 WebGL 的现代浏览器(无头 Edge / Chrome 也跑得动,见回归测试) 操作系统 · 跟着 DSH 走:Windows / macOS / Linux 是同一套 Web 端代码 网络 · 只在第一次取 Cubism Core 时需要外网;取不到就按 FAQ 手动放一份
dsh plugin --profile web update dsh-pet-live2d # 升级(宠物默认值会一起同步)
dsh plugin --profile web remove dsh-pet-live2d # 卸载(%DSH_HOME%\pets\ 里的宠物不会被删)两者都记在 localStorage,重启还在。
(当前帧变形后的三角面 + 作者在 cdi3 里写的部件名),不是画出来的区域。
互动 · 怎么触发 · 默认反应 摸头 · 点在头部(含头发、耳朵等 21 个部件) · 重锤出击 / 问号 / 星星眼 随机一个,不脸红 摸尾巴 · 点在看得见的鲸鱼尾鳍上(按贴图认那 5 块 drawable,可点区域跟着尾鳍摆动走) · 吐魂 / 问号 随机一个 转圈转晕 · 鼠标绕着她转圈(默认 2 圈、1.6 秒内) · 演「晕晕」
三个互动各自可开关,反应也能改;共用的三句台词在设置页的「气泡」卡里。
右键呼出面板:「动作 8」是模型自带的动作,「装扮 20」是 20 个互斥槽位;底部是大小滑杆和「归位」
同样的她,换一套槽位就是另一个样子(44 个表情/道具里的一小部分)
她订阅的是 DSH 的真实事件,不是猜的:
相位 · thinking · tool · waiting · asking · helper · queued · done · failed 什么时候 · 模型在想 / 刚开工 · 在调工具 · 有操作等你批准 · 它问了你一句、等你回答 · 起了子代理 · 你发的话排队了 · 这一轮说完 · 出错了
agent/status、tools/pre-execute 与 tools/post-execute、approval/request、user-questions/request、subagent/start 与 subagent/end、agent/inbox/inserted、 agent/turn-stopping、agent/error。
装扮槽永远归你;会话结束后你原来的样子回来(让位不是删除)。
完整的配置都在 DSH 设置页 → 桌宠 那一节(卡片 / 药丸 / 权重条,浅色深色都能用); 侧栏「插件」→ 本插件 的卡片上另有一节常用开关(气泡 / 提示音 / 三个互动 / 记住装扮)、 四根手感滑杆和「显示位置」,写的是同一份配置。
| 分隔多个变体);位置、停留时长及总开关也在气泡卡。完整的设置说明、20 个槽位的选项表、宠物契约与 HTTP 接口见 dsh-live2d-pet/README.md。
宠物放在 %DSH_HOME%\pets\,最小结构是 pet.json + 一个 *.model3.json + model、textures、motions、expressions(catalog.json 可选,只影响显示名)。
pet.json 里 live2d.model 指向 model3.json,插件启动时从模型里读出全部动作与表情,所以 换模型不用改插件代码。
⚠️ 路径片段只允许 [A-Za-z0-9._-],中文文件名会让整个宠物加载失败 —— 用tools/build-pet.mjs转换(仓库里随包的宠物就是model-packs/DS鼠控版过一遍它的产物)。
槽位 / 池子 / 相位 / 动作语义的完整契约见 dsh-live2d-pet/README.md#做一只自己的宠物。
dsh-live2d-pet/ 插件包本身(就是要装的东西)
lib/ 宿主半区 + 浏览器半区 + vendor 分包
src/ vendor 分包入口(esbuild)
docs/ 图片(门面横幅 / 面板实拍 / 清晰度对比 / 交流群二维码)
pets/
ds-whale-girl/ 随包自带的宠物(首次运行自动复制进 %DSH_HOME%\pets)
CHANGELOG.md 用户可见的变化(市场页与 Release 读它)
dsh-live2d-pet-desktop/ 桌面端壳(Tauri,M0):同一份宠物代码放进透明置顶窗
tools/
build-pet.mjs 模型源包 -> 可安装宠物包
browser-test/ 无头 Edge + CDP 的端到端回归测试
make-release.mjs 按 CHANGELOG 生成 GitHub Release
verify-npm-package.mjs 发布前校验 npm 包里的内容
market-pr.mjs 给 awesome-dsh-plugin 提收录 PR
model-packs/ 宠物构建用的源模型包(DS鼠控版)
.dsh/skills/ 工程记录,按主题归位;硬规则与索引见 AGENTS.md插件是双半区包,没有前端构建步骤:lib/index.js 是宿主半区(宠物发现 / 引用闭包资产路由 / 运行时分发),lib/client.js 是手写的 __ModuleLoader__ 工厂,改完重启 `dsh web` 即可生效。 只有 vendor 分包需要构建(改动 src/vendor-entry.ts,或升级 pixi.js / 引擎时):
cd dsh-live2d-pet
npm install
npm run build:vendor回归测试在 tools/browser-test/:4 个纯 Node 的测试 + 20 个无头 Edge + CDP 的 driver, 在真实 WebGL 里跑插件,覆盖状态机、点击剪影、注视、相位映射、渲染倍率、动作语义、装扮合成、 设置界面等契约。断言一律读引擎在帧内写进模型的参数值,不做截图逐像素 / 哈希比对:
cd tools/browser-test
npm install # 提供 React UMD
npm run suite # 起测试服 -> 并发跑全部 driver -> 输出 PASS/FAIL 表设置界面只挂在 DSH 设置页那一节里,所以 driver 用 window.__pluginSections["pet-settings"]把那一节渲染进探针容器(#dsh-settings-probe)再操作它,见cdp-gaze.mjs里的openSettings()。
官方「插件」页那一节同理,键是包名(__pluginSections["dsh-pet-live2d"],容器#plugin-page-probe),见cdp-plugin-page.mjs。宿主侧的展示元信息(标题 / 描述 / 图标)
由 dsh-live2d-pet-desktop/tools/probe-plugin-page-meta.mjs 用宿主自己的读取器验。drivers/ 下是开发过程中用过的一次性诊断脚本,留作参考,不在回归套件里。工程记录不写在 README 里:踩坑、帧序、测量陷阱、验证写法按主题放在
.dsh/skills/(cubism-engine/pet-domain-model/client-state/
verification-signals/browser-cdp/docs-and-workflow),硬规则与索引见
AGENTS.md;用户可见的变化写CHANGELOG。
问题 · 答案 装完重启了,没看见宠物? · 看宿主日志里有没有 [live2d-pet],并确认 %DSH_HOME%\pets\ds-whale-girl 存在。目录被删干净之后重启会重装一份。 一直转圈 / 拿不到运行时? · 这台机器访问不了 Live2D 官方 CDN。手动下载 Cubism SDK for Web,把 Core/live2dcubismcore.min.js 放到 %DSH_HOME%\pets.runtime。 她挡住 DSH 的按钮了? · 不会:只有剪影吃鼠标事件,透明处穿透到底下页面。真挡住了就拖走,或右键 →「归位」。 我改过 pet.json,升级会覆盖吗? · 不会。同步按内容指纹判定,逐字节等于随包那份才更新;想拿回随包版本,删掉目录再重启。 自己做的宠物加载失败? · 先查文件名:路径片段只允许 [A-Za-z0-9._-],中文会让整个宠物加载不了;再照 pet.json 契约逐项对一遍。 支持别的模型吗? · 支持,放 %DSH_HOME%\pets 即可,动作与表情从 *.model3.json 读,插件代码不用改。 插件包为什么有好几 MB? · 里面装着那只宠物(moc3 + 贴图 + 8 组动作 + 44 个表情)。想换成自己的,替换 pets/ 就行。
🐟 大肥鱼 pet-live2d 交流群 QQ 群号 974641848 装不上、模型不对劲、想投稿自己的宠物 —— 都欢迎进群说
用户可见的变化都写在 dsh-live2d-pet/CHANGELOG.md (市场页与 GitHub Release 读的就是它)。当前 v2.3.4:摸尾巴终于点得到了 —— 尾巴的判定从「名字里带尾/鳍/翅的 15 个部件」按贴图收窄到真正的尾鳍五块 drawable, 可点区域也跟着摆动走。
两类内容,两套许可 —— 完整说明见 NOTICE.md。