DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

strawberry0321 /

strawberry0321/dsh-gal

Verified

dsh-gal —— DeepSeek Harness 的立绘挂件:实时显示余额与今日消耗、每轮对话结束结算 token 与花费、点击立绘随机播语音并逐字显示台词,立绘包/语音包都能换

★ 6 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@6158d9b8

该插件架构基本完善,如dsh无破坏性更新,此插件长期可用,语音包持续更新ing

dsh-gal · DSH 立绘挂件

dsh-gal:DSH 界面里的立绘挂件

在 DeepSeek Harness 界面里放一个会说话的立绘:实时显示 DeepSeek 余额 与 今日已用, 每轮对话结束报出本轮 消耗与花费,点击立绘随机播放语音、随机换立绘。

立绘包、语音包、图标、对话框都是普通文件夹,可以自己换。

dsh-gal:点击立绘后在对话框里逐字显示台词,再点对话框切换成余额页

功能

功能 说明
实时余额 官方余额接口,60 秒刷新;失败时保留上一次的值
今日已用 优先官方用量接口;没有平台令牌时用「余额差额记账」推算
每轮消耗 监听会话事件流,按 (会话, 轮次) 聚合真实 usage,对话结束即结算(重启后的第一条也会弹)
点击立绘 随机语音 + 随机立绘 + 台词以打字机效果逐字显示、居中(字号自适应,短句最多 28px)
语音 ↔ 动作绑定 立绘与语音同名时(sigu_0001.webp ↔ sigu_0001.ogg)播哪句就显示哪句的动作,动图直接用动画 WebP;没有同名素材的包(含全部旧包)行为不变,仍随机抽
语音顺序 默认洗牌池:一轮里每条台词各出现一次,全部放过才重洗,短期内不会重复;可切成纯随机
没有内容表时 该语音没有台词可显示,对话框改为显示「余额 / 今日已用」;语音与随机立绘照常
点击对话框 整块切成「余额 / 今日已用」,并把消失倒计时重置为 dialogHoldSeconds(默认 3 秒,无音效)
自动消失 语音播完后停留 3 秒再淡出(可配 dialogHoldSeconds);本轮收据固定停 5 秒
回归默认立绘 对话框消失后切回立绘包的默认立绘(可配 spriteRevertOnHide)
自动播放 可设定每 X 分钟自动换立绘 + 播语音(默认关闭)
拖拽 / 缩放 立绘与对话框各 1–10 档,用 − / + 按钮调,默认 5 档
对话框底图 设定面板里一键换图:更换图片… 选自己的图,空白底图 换成自带的纯白面板,恢复默认 还原;换完立即生效,不用重启
多包管理 立绘包与语音包分别选择,可以「A 的立绘 + B 的语音」

安装

前置:已在 DSH 里配置好 DEEPSEEK_API_KEY 凭据。

官方客户端的插件页(侧边栏 插件)和 dsh plugin add 都接受仓库地址 / 本地目录 / npm 包名, dsh-gal 用前两种(没有发布到 npm,所以直接输包名 dsh-gal 会去注册表找、装不到):

方式 怎么装
仓库地址(推荐,一行搞定) 插件页输入 https://github.com/strawberry0321/dsh-gal,或命令行
dsh plugin --profile desktop add https://github.com/strawberry0321/dsh-gal
本地目录(自己改了源码/离线) dsh plugin --profile desktop add D:\path\to\dsh-gal —— 必须是绝对路径,相对路径会被拒绝
离线 tgz 从 Releases 下 dsh-gal.tgz(不带版本号的那个,永远指向最新版),再 dsh plugin --profile desktop add C:\path\to\dsh-gal.tgz

必须完全重启 DSH Desktop(托盘退出再启动,刷新页面不够):宿主路由在进程启动时装配, 而且官方桌面端的注入表在应用启动时就被冻结,刷新只会拿到同一份旧表,挂件不会出现。

用网页端(npx @deepseek-ai/dsh web)的话,把命令里的 --profile desktop 换成 --profile web —— 网页端读的是 web profile,装到 desktop 里网页端看不到挂件 (宿主路由不会注册,页面里也不会注入脚本)。两个 profile 各自维护自己的插件, 两端都想用就两端各装一次;素材包、设置、余额记账是共用的(都在 %USERPROFILE%\.dsh 下)。

# 验证:配置树里应该出现 dsh-gal(官方客户端把 desktop profile 独占管理,
# 所以 `dsh --profile desktop --dump-config` 会被拒;直接看合成后的配置树即可)
Select-String -Path "$env:USERPROFILE\.dsh\profiles\desktop\cordis.yml" -Pattern 'dsh-gal'

# 挂件在不在跑(静默观察 90 秒,看用量账本有没有被客户端轮询刷新)
node scripts\desktop-liveness-check.mjs 90

# 卸载(会同时清掉 dependencies 和 bundles 两处记录)
dsh plugin --profile desktop remove dsh-gal

使用

操作 结果
点击立绘 随机语音 + 随机立绘 + 台词逐字显示;语音播完后 3 秒淡出
点击立绘(语音包没有内容表) 语音照常播、立绘照常换,对话框显示「余额 / 今日已用」;同样等语音播完再计时
点击对话框 切成「余额 / 今日已用」,倒计时重置为 dialogHoldSeconds(默认 3 秒)
拖动立绘 移动挂件,位置自动保存(改窗口大小也不跑偏)
悬浮立绘 右上角淡入 ⚙ 设定按钮
一轮对话结束 对话框自动弹出,显示「消耗 128.5K token」「花费 ¥0.28」(黑色、居中、停 5 秒);不播语音、不换立绘

位移小于 5px 算点击,超过算拖拽。打字中再次点击会打断当前这句、直接开始下一句。

设定面板

点 ⚙ 弹出(半透明白色,默认在立绘上方)。共 7 组:

# 项目 默认 说明
1 立绘缩放 5 档 1–10 档,− / + 按钮
2 音量 50% 0–100%
3 语音语言 日文 点击在「日文 / 中文」间切换,只影响台词文字
4 自动播放语音 关闭 打开后可设「每 X 分钟」自动播放,默认 1 分钟
5 对话框 5 档 / 开启 / 上方 / 0% 缩放(1–10 档)、开关、位置(上方或下方)、不透明度
6 立绘包 neri 下拉选择,切换后立即随机抽一张
7 语音包 neri 下拉选择,可以和立绘包不同

「对话框」一组里还有 对话框底图:更换图片… 挑一张自己的图(PNG / JPEG / WebP / GIF), 空白底图 换成随插件自带的纯白面板,恢复默认 还原成自带立绘。三者都立即生效, 不必重启 DSH;想微调裁切和留白就改 ui\dialog.json(见 docs/customize.md)。

「3 语音语言」下面还有 语音顺序:洗牌池(默认)/ 纯随机,点一下切换,立刻生效。 想让某几句多放或少放,在语音包目录里放一个 weights.json(见 docs/customize.md)。

自定义立绘包 / 语音包

把文件夹放进用户目录(升级不会被覆盖),设置面板里就会多出这个选项:

%USERPROFILE%\.dsh\dsh-gal\packs\
└── mychar\
    ├── sprites\   01.png  02.png ...     ← 立绘
    ├── voices\    my0001.wav ...         ← 语音
    ├── script.csv                        ← 可选:语音 → 台词对照表
    └── pack.json                         ← 可选:显示名 / 默认立绘 / 裁切
  • 两个文件夹也可以叫 立绘\ / 语音\(或 立ち絵\ / ボイス\),插件都认,不用改名。
  • 只放 sprites\ 就是立绘包,只放 voices\ 就是语音包。
  • 语音包不放 script.csv 就是「只有语音没有台词」:点击立绘照常出声、照常换立绘, 对话框改为显示「余额 / 今日已用」。
  • 立绘的透明边距会自动裁掉,不需要自己切图。
  • 默认立绘:由 pack.json 的 defaultSprite 指定;没写就按自然顺序自动选第一张 —— 所以任何立绘包都一定有默认立绘,什么配置都不写也能用。

完整格式(script.csv 列名、pack.json 字段、换对话框底图、定价表)见 docs/customize.md。

文档

文档 内容
docs/usage.md 对话框的三张内容页、字号自适应、位置自适应规则、更多 FAQ
docs/customize.md 素材包完整格式、dialog.json、定价表、全部配置项
docs/development.md 余额/花费算法、HTTP 接口、两类自检、打包发布、目录结构

疑难

  • 点了立绘没声音、或者立绘不换图 / 设定里换立绘包没反应:都是同一个原因 —— 页面繁忙时浏览器会饿死低优先级的图片和媒体请求(实测 stalled 十秒以上, 一发消息就一起放行,所以症状看起来像「要聊一句才生效」)。 现在语音、立绘、对话框底图、设定图标都先用 fetch 取字节,再交给 blob: 播放 / 渲染; 取不到字节就退回原来的直连方式,不会白屏也不会静音。 控制台里出现 [dsh-gal] …字节读取失败 或 语音播放被拒绝 就是这条路径在报错,欢迎带日志提 issue。

角色

角色 默认立绘 获取方式
neri neri 默认立绘 随插件自带
Mashiro 精简版 Mashiro 默认立绘 Releases 的 mashiro-pack.zip
noir音效 noir 默认立绘 Releases 的 noir-pack.zip
Karuha Karuha 默认立绘 Releases 的 karuha-pack.zip
時雨(Shigure) 時雨 默认立绘 Releases 的 shigure-pack.zip

下载解压到 %USERPROFILE%\.dsh\dsh-gal\packs\,刷新页面即可在设定面板的「立绘包 / 语音包」里选用。

shigure-pack.zip 是动画立绘:89 段动作与语音同名配对,点击立绘时播哪句就演哪句(逐帧渲染的 动画 WebP,口型跟语音走)。素材派生自 Nekopara Vol.0,仅供自用。

Mashiro 有两份:

  • mashiro-pack.zip —— 精简版(推荐):37 张立绘 + 135 条语音,台词逐条筛过。
  • mashiro-pack-full.zip —— 完整版:原台词过于伤感,不建议使用,296 条语音原样留存。 包 id 是 Mashiro-full,和精简版可以同时装,在设定面板里分开选。

更新

安装方式:官方客户端现在可以直接用仓库地址或本地目录安装(见上面的「安装」), 不必再下 Release 的 tgz —— 仓库里就带着完整素材,装完完全重启即可。

2.3.2 —— 修掉「官方桌面端(新 DSH)里挂件完全不显示」:原来只走 tapIndex 注入, 而官方桌面端不渲染 HTTP index(页面是打包好的静态文档),只认启动时冻结的结构化注入行, 所以客户端脚本从未加载过(宿主各路由却全部 200)。现在两条通道都挂: 结构化 webserver/index-inject 行给官方桌面端,tapIndex 给 web / HTTP 形式;顺带让 启动失败不再静默(控制台 + 屏幕上都会说明原因)。

2.3.1 —— 立绘与语音可以同名配对了:播哪句就显示那句的动作(动画 WebP、GIF 都能用), 旧资源包行为完全不变;新增角色包 shigure-pack.zip(時雨,89 段动作 + 90 条语音)。

2.2.2 —— 修掉「新建对话页点立绘,语音响但立绘不换、设定里换包也不生效」。

更早的版本见 Releases。

—/ 5

No ratings yet

Verified DSH bundle

Commit 6158d9b84d43

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout