Preface

The plugin ecosystem of DSH emphasizes “everything is a plugin”. In actual usage of the DeepSeek Harness WebUI, operations like creating new sessions, switching views, copying context, and adjusting models and permissions are often scattered across the interface menus. For developers who need to frequently switch sessions, models, and permissions, relying on the mouse for all these operations can disrupt the typing rhythm.

dsh-shortcuts is a fully customizable keyboard shortcuts system provided for the DeepSeek Harness WebUI. It maps common functions to the keyboard and allows users to bind, clear, and disable shortcuts themselves. Below is an introduction to its capabilities, installation methods, and things to note.

What is it

Maintained by Ricketts-Guo, dsh-shortcuts is licensed under MIT. It is positioned as the keyboard shortcuts plugin for DSH, primarily solving the problem of common WebUI operations relying on the mouse and menus.

The plugin is primarily browser-side, does not initiate network requests, and does not touch business data; permission switching is written directly via a host-side channel. It supports two forms: WebUI session-level dynamic plugins and Desktop host-level static plugins.

Core Features

Verified features include:

  • 34 pre-built functions, 6 groups: Session / View / Clipboard / Model / Permission / System.
  • Any function can record any key combination, be cleared, disabled, and have conflict auto-detection.
  • The keyboard shortcut cheat sheet (⌘/) allows viewing all bindings and opening the built-in diagnostic panel.
  • ⇧Tab permission switching with no trace: Read-only / Workspace write / Full access.
  • Supports WebUI session-level dynamic plugins and Desktop host-level static plugins.
  • Browser-side focused, no network requests, no business data touched; permission switching is written directly via host-side routing.

These features revolve around daily WebUI operations: keyboard shortcut bindings are adjustable, permission switching is a no-trace operation, and configurations are saved in the local browser environment.

Installation and Enablement

First, perform a one-click installation by running the following in your terminal:

curl -fsSL https://raw.githubusercontent.com/Ricketts-Guo/dsh-shortcuts/main/install.sh | bash

After this step is complete, you need to fully exit and reopen DeepSeek Harness for the plugin to load.

To update, run the same installation command again, then restart DSH for changes to take effect:

curl -fsSL https://raw.githubusercontent.com/Ricketts-Guo/dsh-shortcuts/main/install.sh | bash

You can also install manually. The steps are as follows:

  1. Clone the repository:
git clone https://github.com/Ricketts-Guo/dsh-shortcuts.git ~/dsh-shortcuts
  1. Edit ~/.dsh/profiles/web/package.json to add the plugin to the dependencies configuration of that profile.

  2. Run the dependency installation:

cd ~/.dsh/profiles/web && pnpm install
  1. Restart DSH.

After the steps above, the plugin will enter the DSH Web profile dependencies.

Note: Starting from version 1.1.0, installation is managed by pnpm; node_modules/dsh-shortcuts is a managed copy rather than a symlink and should not be manually overridden with ln -sfn.

Typical Usage

When customizing shortcuts, go to “Settings → Shortcuts”. Click “Record” and press any key combination to bind; Backspace clears the binding, and Esc cancels recording.

To view all bindings and the diagnostic panel, press:

⌘/

To switch permissions, press:

⇧Tab

It will cycle through Read-only / Workspace write / Full access.

Uninstall the static installation:

cd ~/.dsh/profiles/web && pnpm remove dsh-shortcuts

To uninstall a dynamic plugin, you can use:

cordis_stop
cordis_undefine

After uninstallation, custom configurations may remain in the browser localStorage key dsh.shortcuts.v1 and can be deleted in the browser developer tools.

After developing or modifying the plugin, you can run:

npm test

or:

npm run check

Testing requires DSH to be installed locally; npm test resolves React via host node_modules.

Applicable Scenarios and Notes

Suitable for developers who frequently switch sessions, views, models, and permissions in the DeepSeek Harness WebUI and wish to reduce mouse operations. Particularly useful for workflows that require repeatedly switching between different permission levels.

Note before use: The plugin runs with the permissions of the current DSH process; you should check the source code and license before installing. The project license is MIT.

Configuration is saved in browser localStorage. Permission switching directly invokes permissionPresets via a host-side channel; the static local HTTP route is /dsh-shortcuts-permission, which is only activated when a permission service is mounted during deployment, and the DSH Web service should maintain a loopback binding.

The thinking intensity level depends on the current model; the permission rotation order depends on the preset table in the deployment configuration.

The plugin’s peerDependencies include:

react ^18.2.0
@deepseek-ai/cordis ^4.0.1
@deepseek-ai/dsh-client-runtime ^0.1.0-rc.6

Session-level dynamic plugins are loaded temporarily and become invalid after process restart.

Conclusion

dsh-shortcuts provides a customizable, diagnosable, and locally uninstallable keyboard shortcut layer. If you primarily rely on WebUI operations, install it first and verify the cheat sheet and permission switching; if you need to modify the source code long-term, then pay attention to the pnpm managed copy and test commands.

Project repository:

https://github.com/Ricketts-Guo/dsh-shortcuts