dsh-combo
Verifieddsh-combo · v0.5.0 · MIT · Web UI
PowerMode-style thinking and tool-call combo feedback for DeepSeek Harness Web and Desktop, with count-driven colors and soft percussive audio.
Install
dsh plugin add dsh-combo Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-combo
English | 简体中文
dsh-combo 是 DeepSeek Harness(DSH)的轻量级插件,可在 DSH Web 界面和 DSH Desktop 桌面应用中显示每轮思考与工具调用连击数。每次完整模型输出(assistant/message)和已提交的 tool/call 各加一,到当前 turn 边界时清零。

功能
- 读取 Host 提供的
dshCombo会话投影;tool/result、流式片段和失败重试不计数。 - 默认按 turn 计数;可通过
expireMs选择启用空闲超时。 - 显示最近调用的工具、分档视觉反馈、可选音效,并可按会话 pin 连击,在多轮之间累计。
- 在侧栏插件页有独立的配置页,全部设置(含音效开关、音量、起播连击数)保存到 profile 并立即生效。
- 运行在 DSH Web Client 中,也支持内嵌同一 Web 应用的 DSH Desktop。不修改发给模型的内容,也不连接第三方服务。Pin 状态保存在客户端页面的
localStorage。
通过官方 CLI 安装
这是独立开发的社区插件,通过官方 dsh plugin CLI 安装,不代表 DeepSeek 官方出品。代码为可直接运行的 JavaScript,无安装期构建脚本。
按你使用的 profile 安装。Web 和 Desktop 使用不同的 profile:
# DSH Web 界面
dsh plugin --profile web add github:QuentinCrane/dsh-combo
# DSH Desktop
dsh plugin --profile desktop add github:QuentinCrane/dsh-combo
使用 DSH Desktop 时,先启动一次应用以初始化 profile,再完全退出应用,然后运行 Desktop 附带的 dsh 命令。如果终端里找不到该命令,先在应用的 Manage dsh Command 菜单中启用它。安装后重新打开 Desktop。详见 DSH 官方 Desktop 指南。
如果要安装本地 checkout,请把路径替换为包含 package.json 的目录:
dsh plugin --profile <profile> add link:/absolute/path/to/dsh-combo
启动前可以确认 bundle layer 已加入:
dsh --profile web --dump-config
dsh --profile web
插件由 Host 会话投影和 DSH Client 模块两部分组成。DSH Desktop 内嵌了同一套 Web 应用,因此安装到 desktop profile 后也会运行。DSH 要求 Client 模块声明 platform: web;这是 Client 运行时契约,并不代表插件只能在独立的 Web profile 中使用。安装或修改包文件后,请重启 profile,除非当前 HMR 设置已经应用了修改。
配置
在界面里配置
打开侧栏的插件页,选中 dsh-combo 组合包,使用它页面上的配置区。所有设置都在那里——包括音效开关、音量与起播连击数——保存后写入 profile 的行配置并立即生效,不需要重启,也不需要刷新页面。
HUD 上的齿轮面板仍然保留,作为「本机快速调整」:只对当前浏览器预览,并存在本机存储里。在插件页保存同一个键会清掉该键的本地覆盖,因此以 profile 配置为准;面板上的恢复默认设置会清空全部本地覆盖,回到配置值。
在 profile patch 里配置
cordis.patch.yml 提供可用的默认值。要手动覆盖配置,在 profile 的 cordis.patch.yml 里添加一个更靠后的 dsh-combo 行:
- id: dsh-combo
config:
enabled: true
showToolName: true
animation: normal
particles: true
preset: particles
timerMs: 10000
powerThreshold: 0
effectFrequency: 1
shake: true
shakeIntensity: 3
scale: 1
offsetX: 18
offsetY: 10
barHeight: 7
particleCount: 0
particleSize: 4
particleSpread: 1
effectDurationMs: 820
glow: 1
accentColor: ''
numberColor: ''
showGain: true
showTimer: true
position: top-right
excludeTools: []
expireMs: 0
sound: false
soundVolume: 0.35
soundFrom: 10
pinPromptMs: 5000
DSH patch layer 会替换该行完整的 config 对象。覆盖时,请把想保留的设置一并写上。
| 设置 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
显示 HUD。 |
showToolName |
true |
在计数器下方显示最近调用的工具。 |
animation |
normal |
off、normal 或 strong;strong 使用幅度更大的弹跳动画。系统减少动态效果设置会关闭 CSS 动画。 |
particles |
true |
动画开启时,每次连击增长触发当前预设的特效,连击越高粒子越密。 |
preset |
particles |
默认特效:particles(粒子)、flames(火焰)、fireworks(烟花)、rift(裂隙)。 |
position |
top-right |
top-right、top-left、bottom-right 或 bottom-left。 |
excludeTools |
[] |
忽略的工具名,不区分大小写。 |
expireMs |
0 |
可选的空闲重置时长,单位毫秒;0 表示关闭。最大值:600000。 |
sound |
false |
播放柔和短促的轻击音;60 ms 内密集调用合并为一次。 |
soundVolume |
0.35 |
音量,范围 0–1。 |
soundFrom |
10 |
从第几次连击开始播放声音,范围 0–1000。 |
pinPromptMs |
5000 |
turn 结束后,至少有 2 次调用的连击可被 pin 的停留时间。最大值:60000;0 表示不提示。 |
无效的枚举值会回退到默认值;数值会被夹在对应范围内。Host 半侧把每项设置都声明为 Schemastery Config 的 volatile 字段,这正是它们出现在插件页、并且写入后无需重启即可生效的原因。
自定义外观与节奏
点击计数器旁的齿轮可即时调整外观、倒计时与特效。选择保存在本机;“恢复默认设置”清除本机覆盖并恢复配置文件的值。
倒计时归零后,默认保留本轮计数;如需像 PowerMode 一样空闲后清零,请将配置中的 expireMs 设为所需时长。未 pin 的连击会使用相同的时长显示进度条。Pin 继续保留跨轮 streak。
| 设置 | 默认值 | 范围 | 说明 |
|---|---|---|---|
timerMs |
10000 |
1000–60000 ms | 倒计时时长;每次思考完成或工具调用重新补满。开启空闲清零时,未 pin 的连击使用 expireMs。 |
powerThreshold |
0 |
0–1000 | 从第几次连击开始启用反馈和特效。 |
effectFrequency |
1 |
1–20 | 每几次连击触发一次粒子特效;批量调用跨过触发点时也会触发。 |
shake |
true |
布尔值 | 独立开关连击抖动。 |
shakeIntensity |
3 |
0–12 px | 抖动幅度。 |
scale |
1 |
0.5–2 | 计数器和粒子整体缩放。 |
offsetX |
18 |
0–240 px | 距左右边缘的距离。 |
offsetY |
10 |
0–240 px | 垂直边距;顶部避开窗口栏。 |
barHeight |
7 |
2–16 px | 倒计时条高度。 |
particleCount |
0 |
0–80 | 每次爆发的粒子数量;0 按连击分档自动增长。 |
particleSize |
4 |
1–12 px | 粒子大小。 |
particleSpread |
1 |
0.25–2 | 扩散距离倍率。 |
effectDurationMs |
820 |
200–2500 ms | 粒子动画持续时间。 |
glow |
1 |
0–2 | 光晕强度;0 关闭光晕。 |
accentColor |
'' |
#RRGGBB 或空字符串 | 自定义光晕与粒子颜色;空字符串随连击数分档变色。 |
numberColor |
'' |
#RRGGBB 或空字符串 | 自定义数字与进度条颜色;空字符串随连击数分档变色。 |
showGain |
true |
布尔值 | 显示 +N 增量提示。 |
showTimer |
true |
布尔值 | 显示倒计时条。 |
设计参考 VS Code PowerMode:用剩余时间表示连击节奏,以触发门槛和频率调节特效,预设与独立自定义参数组合使用。本插件使用 CSS 动画与 DSH 会话投影实现,完整模型输出与工具调用共同驱动反馈。
显示规则
一次思考按模型的一轮完整输出计数,即使模型不提供显式推理文本也适用,标签显示为「思考」。流式片段、失败重试、中断输出、历史替换和同一 turn/step 的重复结算不计数。思考与工具调用都会补满倒计时。
| 连击数 | 显示效果 |
|---|---|
| 1–9 | 绿色粗体倍率、顶部亮条和微光和像素粒子 |
| 10–19 | 更大倍率、黄绿色光晕和更多粒子 |
| 20–49 | 黄色光晕、轻微抖动和更密集的粒子 |
| 50+ | 橙色光晕、最大倍率和最密集的粒子 |
HUD 使用 PowerMode 风格的「数字 × + 顶部亮条」,无卡片底色。计数器下方的样式下拉框可即时切换四种特效,并预览一次动画。选择保存在本机 localStorage,优先于配置中的默认 preset,不改变连击计数。所有预设统一随 combo 数量变色:1–9 绿色、10–19 黄绿、20–49 黄色、50+ 橙色。预设只改变动画形态;手动指定的颜色仍优先。
点击 📌 可将当前会话的连击保持为 streak。未 pin 的 turn 结束后,至少 2 次调用的连击会按 pinPromptMs 暗色停留;在这段时间内 pin,即可在后续 turn 继续累计。Pin 状态会保存到本地存储,刷新页面后仍然保留。
仓库结构
dsh-combo/
├── index.js # Host 会话投影和配置路由
├── client.js # DSH Client 模块和悬浮 HUD
├── cordis.patch.yml # 可安装的 DSH bundle layer
├── package.json # Bundle 与 Client 模块清单
├── test/ # 使用本地运行时替身的 Host / Client 单元测试
├── docs/ # 开发、发布与故障排查说明
├── README.md
├── README.zh-CN.md
├── CONTRIBUTING.md
├── CHANGELOG.md
└── LICENSE
开发
运行本地单元测试:
npm test
Client 从 uiSession.adapter.current 读取当前 binding,再通过 sessions.binding(id).session.projections.faceOf('dshCombo') 订阅投影。Host 负责折叠已提交的会话事件。dsh.client.inject 声明包之间的关系;Client 插件导出的 Cordis inject 数组声明运行时需要等待的服务。
发布与 npm 分发说明见 docs/publishing.md:release workflow 会先跑测试,配置 NPM_TOKEN 后把当前版本发布到 npm,并始终创建带 tarball 的 GitHub Release。
官方 bundle 和 Client 规范:DSH 插件发布指南、Client Modules 参考、Session Projections 参考、官方 Client 包规范和 Desktop 指南。DSH 目前处于 developer preview,后续版本可能引入破坏性 API 变更。
如需在 GitHub 上被 DSH 插件目录发现,请为仓库添加 dsh-plugin topic。