In daily development with DeepSeek Harness (dsh), terminating the process associated with the Web UI usually requires switching back to the terminal to run a command. Frequent window switching increases operational overhead. The dsh-shutdown plugin integrates shutdown logic into the Web interface, providing a shortcut entry via a button in the upper-right corner to safely exit directly from the interface.

Plugin Purpose

dsh-shutdown is a client-side plugin that adds an upper-right shutdown entry to the dsh Web UI. It does not modify the dsh core source code; it extends functionality through a standalone plugin package. The project is maintained by Lundly and follow the MIT license.

Core Features

  1. Upper-right entry: Adds a persistent shutdown button (icon style) to the upper-right corner of the Web UI. Hovering over it shows “Shutdown DSH”.
  2. Safe shutdown flow: Clicking the button shows a confirmation prompt. After confirmation, the plugin follows the dsh launcher graceful shutdown path: first cleans up the plugin tree (reverse-order cleanup), then shuts down the Web service, and finally exits the process.
  3. Browser tab handling: Attempts to automatically close the browser tab.
  4. Fallback screen: If browser security policy prevents the script from closing the tab, the page renders a “dsh has safely shut down” prompt screen to remind the user to close it manually.
  5. Interaction settings: Supports selecting “Don’t show again” in the confirmation prompt; after that, clicking the button shuts down directly. This option can be re-enabled in General Settings.

Installation and Activation

Installing from GitHub

Installing from the official repository is recommended. This repository commits build artifacts directly, so no build authorization is required during installation; pnpm will not show an allowBuilds prompt.

dsh plugin --profile web add github:Lundly/dsh-shutdown

To lock a specific version, you can pin to a specific commit:

dsh plugin --profile web add github:Lundly/dsh-shutdown#<commit-sha>

Installing from a local directory

Run the following command in the parent directory of the plugin directory. The first run automatically creates a profile named web and appends this plugin as a bundle to it.

dsh plugin --profile web add ./dsh-shutdown

Verification and Removal

After installation, start dsh and open the Web UI; the shutdown button appears in the upper-right corner. The verification and removal commands are as follows:

# 查看已安装的插件
dsh plugin --profile web list

# 移除插件
dsh plugin --profile web remove dsh-shutdown

Note: changes to bundle members take effect after restarting the profile.

Building from Source

If you need to build or modify the plugin yourself, run the following commands:

pnpm install
pnpm build     # 生成 lib/index.js(Host 半)和 lib/client.js(浏览器半)
pnpm typecheck

This plugin can be built without depending on dsh source code. Host-provided packages (such as @deepseek-ai/cordis, react, etc.) are declared as peer/external, so the artifacts contain zero third-party runtime code; they are injected by the dsh host and the browser-side module loader.

Use Cases and Notes

  • Use cases: Developers who need to terminate the dsh process directly from the Web UI, or developers who want to reduce switching between terminal and browser windows.
  • Permission note: The plugin runs with the permissions of the current dsh process. Make sure you have sufficient trust in the installed plugin’s source code.
  • Ecosystem background: DSH’s core philosophy is “everything is a plugin”, aiming to improve development efficiency through modular extensions. Community directories (such as SkillHub) are independent sites and have no official affiliation with DeepSeek or High-Flyer.

Summary

dsh-shutdown simplifies the dsh process shutdown workflow by integrating shutdown logic. For more plugins, refer to the SkillHub directory or visit the GitHub repository.