dsh-session-hotkeys
Web 会话热键插件:像切浏览器标签页一样用键盘管理会话——Alt+1-9 顺序切换、固定槽位、上/下一个、新建/归档/重命名、Alt+M 键盘切换模型与备用发送、Esc 焦点交接,Alt+W 关闭/恢复 dsh-split-screen 工作区;键位可在面板录制重绑,Windows/macOS 双预设。已适配 DSH 0.1.1 与 0.1.5。
安装
dsh plugin --profile web add dsh-session-hotkeys
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-session-hotkeys



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 thedesktopprofile, with nocompatibility.jsonversion 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.2alongside^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). PressingEsccancels recording, so the defaultEsc` 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)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:9,最后更新 2026-10-01