Introduction¶
The DeepSeek Harness (DSH) community commonly extends client capabilities via plugins. csiroqa/dsh-hotkeys targets DSH’s web usage scenarios, binding operations like switching sessions, sending/clearing drafts, stopping generation, copying sessions, and archiving sessions to the keyboard to reduce mouse movement. It is more suitable for developers who need to frequently operate sessions in DSH and wish to replace some click actions with shortcuts.
What is this¶
- Plugin:
csiroqa/dsh-hotkeys - Maintainer:
csiroqa - License: MIT
- Target: DSH web profile
- Core Goal: Add global shortcuts to the DSH client, and support configuring keybindings,
sendMode, andignoreInputs
Core Features¶
Session Navigation¶
- Switch sessions: Cycle through sidebar order, hold to switch continuously.
- New session: Same entry as “New Session” in the sidebar.
Drafts & Send¶
- Send draft:
sendis equivalent to the Composer’s accelerator Enter; if the draft is empty but has queued messages, push queued messages into the running turn; automatically intercept send/accept when in progress. - Clear draft: Clear only text, keep attached images.
Session Management¶
- Stop generation: Stop the current session’s running turn; only interruptable by ordinary sessions and continuable sub-agents; show an in-page notification when not running.
- Copy session: Fork the current session (increment title) and jump to the new session.
- Archive session: Call native
workspaces.archiveSessionto move the current session to “Archived”.
/hotkeys Command¶
Input /hotkeys in a session to list all currently effective keybindings for the 8 actions, including user-defined overrides.
Trigger Guards¶
- Does not trigger during IME composition.
- Does not trigger on AltGr key presses.
- Does not trigger on consumed (
defaultPrevented) keys. - When
ignoreInputsis enabled, pure key combos (without Ctrl/Cmd/Alt) do not trigger inside input boxes/text areas. - Only allows navigation actions when held.
- Invalid or duplicate keybindings will
warnin the console and specify the action name.
Installation & Enablement¶
First, prepare the environment:
- Node.js >= 22
- pnpm
- Local
deepseek-harnesssource code checkout (dependencies point to../deepseek-harnessvialink:)
Then execute:
git clone https://github.com/csiroqa/dsh-hotkeys.git
cd dsh-hotkeys
pnpm install
pnpm build
Install into the web profile. Since the plugin points to the current repository directory via link:, the command uses the current directory:
dsh plugin --profile web add link:$(pwd)
Restart dsh web and perform a hard refresh (Ctrl+F5) in the browser. If you need to modify the source code later, simply rebuild (pnpm build) and hard refresh for changes to take effect.
Typical Usage¶
-
Open any session, use
Ctrl+Alt+[/Ctrl+Alt+]to switch sessions; useCtrl+Alt+Nto create a new session. -
After entering a draft, use
Ctrl+Enterto send; useCtrl+.to stop generation; useCtrl+Shift+Fto copy the session. -
Use
Ctrl+Alt+Ato archive the current session; the session will be moved to “Archived” in the sidebar. -
Input
/hotkeysto view all currently active shortcuts.
The mod in the keybindings is Ctrl on Windows/Linux and ⌘ on macOS. Keybindings are assumed based on the US keyboard layout; shift characters will be restored.
Configuration¶
Keybindings, sendMode, and ignoreInputs are persisted via the settings namespace.
You can visually edit them in DSH via “Settings > General > Hotkeys”:
- Edit keybindings for each action.
- One action supports multiple keybindings, separated by commas.
- Input an empty string to disable the action and reset to default.
- Adjust
sendMode. - Toggle
ignoreInputs.
You can also edit the hotkeys: segment of $DSH_HOME/settings.yaml to configure keybindings, sendMode, and ignoreInputs.
Note: The config segment in cordis.patch.yml does not reach the browser side; please write keybinding configurations to settings.yaml.
When sendMode is set to auto, it behaves consistently with the Composer’s accelerator Enter. ignoreInputs is used to control whether pure key combos trigger inside input boxes/text areas.
Suitable Scenarios & Notes¶
Suitable for people who frequently use DSH web sessions and want to reduce mouse operations. This plugin was developed and verified against the DSH 0.1.1-rc.2 source code and has been tested and confirmed available in the @deepseek-ai/dsh@0.1.1-rc.2 (npm global/npx install) environment. The platform is Windows / macOS / Linux, with a Node.js version requirement of >= 22.
Please note:
- The plugin runs under the permissions of the current dsh process. Please check the source code and LICENSE before installing.
- It depends on the two public services
sessions/workspaces, and an untypedconversation.inputruntime surface; ifui-conversationis missing, relevant actions will silently degrade. - Known limitations: The pick arbitration of the slash menu when open is privately held by the Composer, so
sendsubmits the draft directly rather than picking the highlighted item. - Shortcuts only take effect on the local page; DSH’s default binding is local and does not involve any network listening.
- Keybinding configurations are written to
$DSH_HOME/settings.yaml, which is a local file; please do not expose the DSH port to the public internet.
License & Links¶
This project uses the MIT License. When using, modifying, citing, or including this project, please retain the LICENSE file and copyright notice, and indicate the source (the repository link).
Project Repository: https://github.com/csiroqa/dsh-hotkeys