Preface

DSH’s plugin ecosystem allows splitting common operations into small plugins. For Web GUIs like dsh web, stopping the current conversation generation usually requires moving the mouse to the stop button. dsh-esc-stop compresses this into a keyboard action: double-tap Esc within a session to stop the current turn. It reuses the session.cancel path behind the GUI stop button, so no additional configuration for stopping logic is needed.

What is this

dsh-esc-stop is a DeepSeek Harness Web GUI plugin, repository owner 142475, license MIT. Its goal is simple: to allow dsh web to stop the current generation using a shortcut key within an existing session.

This plugin is only applicable to the web profile (dsh web). The tui and headless profiles have their own stop keys, so this plugin is not suitable to replace them.

Core Features

  • Double-tap Esc at any location within the session; the interval between the two presses must be within 400ms.
  • Stops the currently running turn upon triggering.
  • Equivalent to the built-in stop button, cancelling the current turn via session.cancel.
  • Pending inbox messages are preserved and restored later in FIFO order.
  • Ignores e.repeat; single clicks, long presses, or holding down Esc will not trigger.
  • Re-timers if the interval between the two Esc presses exceeds 400ms.

Installation and Activation

First, confirm you are in the web profile directory, for example:

~/.dsh/profiles/web

Execute the installation command in this directory:

dsh plugin --profile web add git+https://github.com/142475/dsh-esc-stop.git

Then edit the profile’s package.json and add "dsh-esc-stop" to the dsh.profile.bundles array:

{
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-esc-stop"
      ]
    }
  }
}

After restarting dsh web, the plugin will take effect. The package.json declares node >=22 and relevant peerDependencies, so confirm that the current dsh web environment can load these dependencies before installing.

Typical Usage

  1. Start dsh web and open a session.

  2. While a turn is running, double-tap Esc at any location within the session.

  3. If the interval between the two key presses exceeds 400ms, it will re-timer and will not trigger the stop.

  4. The first screen (hero) without a session has no content to stop; the listener takes effect when the session is opened.

Applicable Scenarios and Notes

This plugin is suitable for people using DSH web in a browser who want to reduce mouse movement to stop generation. It does not change DSH’s session, permissions, or configuration model; it simply adds a stop shortcut.

Notes before use:

  • Only applicable to the web profile of dsh web.
  • The plugin will join the current dsh web profile and run with the current dsh process, so you should check the source code and the MIT license before installing.
  • session.cancel cancels the current turn; pending inbox messages are still preserved and restored in FIFO order.
  • The shortcut only works for “running turns” and is not suitable for use on the first screen (hero) without a session.

Conclusion

The value of dsh-esc-stop is specific: turning the stop current generation from a button action into two Esc taps, while maintaining consistent behavior with the GUI stop button.

Community Directory Page:
https://www.skillhub.cn/plugins/142475/dsh-esc-stop

GitHub:
https://github.com/142475/dsh-esc-stop