npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-combo

v0.5.0

Published

PowerMode-style thinking and tool-call combo feedback for DeepSeek Harness Web and Desktop, with count-driven colors and soft percussive audio.

Readme

dsh-combo

English | 简体中文

dsh-combo 是 DeepSeek Harness(DSH)的轻量级插件,可在 DSH Web 界面和 DSH Desktop 桌面应用中显示每轮思考与工具调用连击数。每次完整模型输出(assistant/message)和已提交的 tool/call 各加一,到当前 turn 边界时清零。

Countdown demo

功能

  • 读取 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。