Introduction

The core design philosophy of DeepSeek Harness (DSH) is “everything is a plugin,” and plugins are used to extend Harness behavior. In some model reasoning chains (Chain of Thought) or final responses, the model may emit thinking sounds such as “hmm” or “uh.” Without explicit visual or audible feedback, these sounds can easily be overlooked.

dsh-villager-hmm is a DSH plugin that plays a Minecraft villager hum as feedback when it detects the model emitting a “hmm” sound.

Installation and Activation

This plugin must be installed using DSH’s official installation command; you must not install it directly with npm install. After installation, the asset-fetching script must be run; otherwise, the plugin panel will appear but produce no sound.

  1. Install the plugin
    dsh plugin --profile web add dsh-villager-hmm
After installation is complete, the corresponding profile must be restarted for the plugin to take effect.
  1. Fetch assets
    The plugin does not include Minecraft assets. Run the following command to download the villager sounds and textures to the local cache directory:
    npx dsh-villager-hmm-assets
Assets are stored by default in `$DSH_HOME/.dsh-villager-hmm/assets/`.

Features and Interface

After installation and restarting the profile, a floating panel appears in the upper-right corner. The default panel position is the upper-right corner, intended to avoid the full-width input box and prevent covering the send button.

The panel supports the following operations:

  • Drag and reset: Hold the title bar to drag the panel to a new position. Double-click the title bar to reset it to the upper-right corner.
  • Collapse mode: Click the button on the panel to collapse it, leaving only the villager’s head image (32x44 pixels).
  • Playback controls: The bottom of the panel provides controls such as pause, volume adjustment, and play once (test matching).
  • Mode selection: Supports reasoning-only (listen to the reasoning chain only) or both (listen to both the reasoning chain and the response). The default is both, for compatibility with models that do not expose separate reasoning stream output.
  • Localization: The interface supports English and Chinese.

Configuration

The plugin configuration can be modified in code or through the panel interface. To override default values via a configuration file, edit $DSH_HOME/profiles/web/cordis.patch.yml:

- insert:
    - id: dsh-villager-hmm
      name: 'dsh-villager-hmm'
      config:
        enabled: true
        mode: both      # 'reasoning' (仅推理链) | 'both'
        pattern: '(?<![0-9A-Za-z])(?:h+m+|mhm+|m{2,})|[嗯唔哼呃]'
        assetDir: 'D:/my-assets'

The main configuration options include:
* enabled: Whether to enable the plugin.
* mode: Monitoring scope.
* pattern: Regular expression for matching.
* assetDir: Custom asset directory.

Default Matching Pattern

The plugin uses the following regular expression by default to match “hmm” sounds:

(?<![0-9A-Za-z])(?:h+m+|mhm+|m{2,})|[嗯唔哼呃]

The design logic of this regular expression is as follows:
* Boundary handling: A lookbehind (?<![0-9A-Za-z]) is used instead of \b to address inconsistent behavior of \b around CJK characters (such as Chinese) in JavaScript, ensuring that “嗯hmm” can also be matched correctly.
* Chinese support: The trailing [嗯唔哼呃] directly matches Chinese onomatopoeic words.
* English variants: h+m+ matches hm, hmm, hmmm, and so on; mhm+ matches closed-hum variants; and m{2,} matches pure mm.

You can customize the regular expression in the “Pattern” field on the panel and click “Apply” to take effect.

Important Notes

  1. Installation restriction: It must be installed with the dsh plugin command. If installed directly with npm install, the plugin will be invisible under DSH’s profile management and cannot be loaded.
  2. First use: The asset-fetching script must be run before first use; otherwise, the plugin panel displays normally, but clicking play produces no sound.
  3. Position memory: The panel position is saved in the browser’s localStorage. The position remains unchanged after the page is refreshed.

Conclusion

dsh-villager-hmm provides an intuitive way to convert the model’s internal thinking sounds (“hmm”) into audible and visual feedback. With a customizable matching pattern and a floating panel, it can serve both as a fun tool and for debugging the model’s pauses and vocalization habits during reasoning.