dsh-session-hotkeys

sessiontested: passnpmMIT

Session hotkeys for the DSH Web GUI: switch sessions like browser tabs (positional Alt+1-9, pinned slots, previous/next, new/archive/rename), keyboard model switching via Alt+M, alternate send, Esc focus hand-off, and Alt+W to close or restore a dsh-split-screen workspace — all rebindable with Windo

下载量 / Downloads
1,052
依赖体积 / node_modules
0.97 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-session-hotkeys

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-session-hotkeys

![Awesome DSH Plugin](https://awesome-dsh-plugin.com)

![npm version](https://www.npmjs.com/package/dsh-session-hotkeys)

![license](./LICENSE)

Session hotkeys for DeepSeek Harness Web · 给 DeepSeek Harness Web 的会话快捷键插件

Switch sessions from the keyboard the way you switch browser tabs.

像切换浏览器标签页一样用键盘管理会话。


Install

DSH Web (dsh CLI):

dsh plugin --profile web add "dsh-session-hotkeys"

DeepSeek Harness Desktop: the desktop profile is reserved — the standalone CLI

refuses it (`profile "desktop" is managed exclusively by the Electron

application`). Install from Settings → Plugins inside the app instead, which

applies the change live (no restart needed). The equivalent command line, run

through the desktop's own bundled CLI, is:

"<install dir>/DeepSeek Harness.exe" --expose-internals \
  "<install dir>/resources/app.asar/dsh/node_modules/@deepseek-ai/dsh-desktop-host/lib/cli.js" \
  plugin --profile desktop add "dsh-session-hotkeys"

Restart DSH web after installing there; the desktop app picks the plugin up

without a restart. 桌面版无需重启,浏览器版安装后重启 dsh web。

[English](#english) · [简体中文](#简体中文)

English

Why

  • Alt+1-9 jumps straight to the Nth session, Alt+↑/↓ cycles through them — no mouse needed.
  • Everything is rebindable from the panel, with Windows / macOS presets that are screened against browser & system shortcuts.
  • Works while you're typing in the chat input — no blur-first step. Plain typing never triggers anything.
  • Esc toggles to the chat: the first press hands focus to the transcript (↑↓ / PgUp / PgDn scroll), closing the panel, exiting nav, or dismissing the model menu on the way; the second press returns focus to exactly where it was — model selector (ring restored), input (caret intact), anything. Composer popups (slash commands) and IME keep their own Esc.
  • Pure browser plugin: no network requests, no server-side state, nothing collected.

Keybindings

Defaults shown; rebind any of them in the panel (Alt+P → Keys tab).

Action · Windows · macOS

Switch to Nth session · Alt+1-9 · ⌃⇧1-9

Previous / next session · Alt+↑ / Alt+↓ · ⌃⌥↑ / ⌃⌥↓

Pin slot (pin / jump / unpin) · Alt+Shift+1-9 · ⌃⌥1-9

Jump to pinned slot · Ctrl+Alt+1-9 · ⌃⌥⇧1-9

New session · Alt+N · ⌃⌥N

Archive current session · Alt+Shift+A · ⌃⌥A

Open archived list · Alt+Shift+U · ⌃⌥U

Rename current session · Alt+Shift+R · ⌃⌥R

Navigation mode (↑↓ select · Enter open · Esc cancel) · ` Alt+ ` · ⌃ ``

Open panel · Alt+P · ⌃⌥P

Collapse / expand the conversation sidebar · Alt+B · ⌃⌥B

Close the focused split pane (last one tucks the workspace away) · Alt+W · ⌃⌥W

Focus search box · Alt+Shift+F · ⌃⇧F

Focus model selector · Alt+M · ⌃⌥M

Focus back to chat input · Alt+Enter · ⌃⌥Enter

Toggle chat focus (Esc → transcript, again → back; panel/nav/menu cancel on the way) · Esc · Esc

Send with alternate busy behavior · Alt+Shift+Enter · ⌃⌥⇧Enter

Notes

  • Archiving asks for confirmation first and never deletes anything — archived sessions stay listed in the panel's Archived page. (DSH 0.1.x has no public unarchive API, so restoring is host-side.)
  • Bindings and pins are saved in browser localStorage and survive restarts. Clearing site data resets them.
  • The sidebar must be expanded: session order is read from the rendered rows.

<details>

<summary><b>Why the macOS preset looks like this</b></summary>

Chrome maps both ⌘+1-9 and ⌃+1-9 to tab switching (Safari: ⌘+1-9), so positional switching uses ⌃⇧1-9. ⌥ alone would type special characters, so it is never used by itself. ⌃+↑/↓ is Mission Control and ⌃+N/P/F/B/A/E/K/D are Emacs line-editing keys in text fields, hence the ⌥ additions elsewhere. ⌃/⌘+Enter are the composer's own send chords, so the Enter-family adds ⌥. All combos were screened against macOS Chrome and Safari. On macOS all bindings render with native symbols (⌃ ⌥ ⇧ ⌘). The only modifier-free binding is Esc — no browser conflict in Chrome or Safari, the IME-cancel Esc is left untouched, and ⌘/⌃+Esc variants never match.

</details>

<details>

<summary><b>Compatibility & known limitations</b></summary>

  • Tested with DSH Web from @deepseek-ai/dsh@0.1.1-rc.2; re-verified end-to-end on @deepseek-ai/dsh@0.1.5-rc.2 (2026-09-15) in both the standard and the split-view UI.
  • Re-verified end-to-end on @deepseek-ai/dsh@0.2.0-rc.2 (2026-09-30) — the runtime bundled with DeepSeek Harness Desktop 0.2.0-rc.2 — in the desktop profile, with no compatibility.json version exemption. The 0.2.0 launcher refuses to mount a bundle whose @deepseek-ai/dsh-* peers do not accept the running version, so this package declares ^0.2.0-rc.2 alongside ^0.1.1-rc.2.
  • Session order / search-box / model-selector targeting depend on DSH Web DOM class names (fuzzy fallbacks included); an upgrade may require updating this plugin.
  • On Windows, Alt-key default behavior is suppressed inside DSH Web so Chrome doesn't swallow Alt+digits; the tradeoff is numpad Alt-code entry (e.g. Alt+0167) doesn't work in input fields.
  • Key recording accepts letters, ` ` (backtick), F1–F12, and digits 1–9 (top row or numpad; NumLock required for numpad). Pressing Esc cancels recording, so the default Esc` binding (input → chat) is restored with Reset rather than re-recorded.

</details>

<details>

<summary><b>Older CLI without <code>dsh plugin</code></b></summary>

1. Add dsh-session-hotkeys to both dependencies and dsh.profile.bundles in the profile's package.json

2. Run pnpm install inside the profile directory

3. Restart DSH

Uninstall removes it from those two fields; bindings can be wiped via browser

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::9,最后更新 2026-10-01

Links

GitHub · Homepage · npm

Same category