Web 会话热键插件:像切浏览器标签页一样用键盘管理会话——Alt+1-9 顺序切换、固定槽位、上/下一个、新建/归档/重命名、Alt+M 键盘切换模型与备用发送、Esc 焦点交接,Alt+W 关闭/恢复 dsh-split-screen 工作区;键位可在面板录制重绑,Windows/macOS 双预设。已适配 DSH 0.1.1 与 0.1.5。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-session-hotkeys
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:YEYEYEYESHIFU/dsh-session-hotkeys
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
Session hotkeys for DeepSeek Harness Web · 给 DeepSeek Harness Web 的会话快捷键插件
Switch sessions from the keyboard the way you switch browser tabs. 像切换浏览器标签页一样用键盘管理会话。
Install
dsh plugin --profile web add "dsh-session-hotkeys"
Then restart DSH Web. 然后重启 DSH Web 即可。
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.
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.
- 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. - 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 defaultEscbinding (input → chat) is restored with Reset rather than re-recorded.
- Add
dsh-session-hotkeysto bothdependenciesanddsh.profile.bundlesin the profile'spackage.json - Run
pnpm installinside the profile directory - Restart DSH
Uninstall removes it from those two fields; bindings can be wiped via browser devtools localStorage keys dsh.session-hotkeys.keys / dsh.session-hotkeys.pins.
git clone https://github.com/YEYEYEYESHIFU/dsh-session-hotkeys.git
cd dsh-session-hotkeys
npm run verify # self-check: package structure, parseable client bundle, no external imports
A browser-only Cordis bundle: reads sessions from the sessions service and switches with sessions.open(); display order comes directly from the rendered sidebar DOM so it always matches grouping/sorting/collapse state.
MIT licensed. Security issues: report via GitHub Issues.
简体中文
为什么值得装
- Alt+1-9 直达第 N 个会话,Alt+↑/↓ 循环切换——全程不用鼠标。
- 所有键位都能改,面板里录制式改键;Windows / macOS 双预设已逐项筛查系统与浏览器冲突。
- 输入框聚焦时也能用,切会话不用先退出打字状态;普通打字永远不会误触发。
- Esc 切换到聊天区:第一按把焦点交给会话内容(↑↓ / PgUp / PgDn 滚动),途中顺带关闭面板、退出导航、收起模型菜单;再按一次精确还原原焦点——模型选择(含高亮环)、输入框(光标原位)等。斜杠命令弹层与 IME 的 Esc 不受影响。
- 纯浏览器插件:无网络请求、无服务端状态、不收集任何数据。
键位表
以下为默认键位,均可在面板(Alt+P → 按键页)重新录制。
| 动作 | Windows | macOS |
|---|---|---|
| 切换到第 N 个会话 | Alt+1-9 |
⌃⇧1-9 |
| 上一个 / 下一个会话 | Alt+↑ / Alt+↓ |
⌃⌥↑ / ⌃⌥↓ |
| 固定槽位三态(固定/跳转/取消) | Alt+Shift+1-9 |
⌃⌥1-9 |
| 跳转固定槽位 | Ctrl+Alt+1-9 |
⌃⌥⇧1-9 |
| 新建会话 | Alt+N |
⌃⌥N |
| 归档当前会话 | Alt+Shift+A |
⌃⌥A |
| 打开已归档列表 | Alt+Shift+U |
⌃⌥U |
| 重命名当前会话 | Alt+Shift+R |
⌃⌥R |
| 导航模式(↑↓ 选择 · Enter 进入 · Esc 取消) | Alt+` |
⌃` |
| 打开面板 | Alt+P |
⌃⌥P |
| 折叠 / 展开左侧会话栏 | Alt+B |
⌃⌥B |
| 关闭聚焦的分屏面板(最后一个收起工作区) | Alt+W |
⌃⌥W |
| 聚焦并清空搜索框 | Alt+Shift+F |
⌃⇧F |
| 聚焦模型选择 | Alt+M |
⌃⌥M |
| 聚焦回聊天输入框 | Alt+Enter |
⌃⌥Enter |
| 聊天区焦点切换(Esc 聚焦,再按还原;途中取消面板/导航/菜单) | Esc |
Esc |
| 非默认忙时方式发送 | Alt+Shift+Enter |
⌃⌥⇧Enter |
说明
- 归档有确认卡片且从不删除数据——归档的会话仍在面板「已归档」页可查。(DSH 0.1.x 无公开取消归档接口,恢复需宿主端操作。)
- 键位与固定关系存于浏览器 localStorage,重启后依然有效;清除站点数据会重置。
- 切换依赖侧边栏展开状态:显示顺序直接读取已渲染的侧边栏行。
Chrome 里 ⌘+1-9 和 ⌃+1-9 都会切换标签页(Safari 只有 ⌘),所以顺序切换用 ⌃⇧1-9。⌥ 单独按会打出特殊字符,因此从不当主修饰键。⌃+↑/↓ 是调度中心,⌃+N/P/F/B/A/E/K/D 是文本框的 Emacs 行编辑键,故相关组合都补了 ⌥。⌃/⌘+Enter 是输入框自带的发送快捷键,Enter 系列因此加 ⌥。全部组合已在 macOS Chrome 与 Safari 中逐项筛查无冲突。macOS 上键位一律用原生符号显示(⌃ ⌥ ⇧ ⌘)。唯一的无修饰键绑定是 Esc——Chrome 与 Safari 均无浏览器级冲突,输入法组合中的 Esc 不受影响,⌘/⌃+Esc 也不会误触发。
- 已在
@deepseek-ai/dsh@0.1.1-rc.2随附的 DSH Web 上测试;并在@deepseek-ai/dsh@0.1.5-rc.2上做了完整回归(2026-09-15,标准视图与分屏两种状态)。 - 会话顺序 / 搜索框 / 模型选择按钮的定位依赖 DSH Web 的 DOM 类名(带模糊匹配回退);DSH 升级后可能需要同步更新本插件。
- Windows 上插件在 DSH Web 内屏蔽了 Alt 默认行为以免 Chrome 吞掉 Alt+数字;代价是输入框内小键盘 Alt 码(如
Alt+0167)不可用。 - 改键支持字母、``、F1–F12 与数字 1–9(主键盘 / 小键盘均可;小键盘需开 NumLock)。按 Esc 会取消录制,默认的 Esc 键位(输入框 → 聊天区)请用「恢复默认」找回,而非重新录制。
- 在 profile 目录的
package.json里把dsh-session-hotkeys加进dependencies与dsh.profile.bundles - 在该目录执行
pnpm install - 重启 DSH
卸载即从这两个字段移除;如需彻底清掉自定义键位,可在浏览器开发者工具删除 localStorage 的 dsh.session-hotkeys.keys / dsh.session-hotkeys.pins。
git clone https://github.com/YEYEYEYESHIFU/dsh-session-hotkeys.git
cd dsh-session-hotkeys
npm run verify # 自检:包结构 / 客户端 bundle 可解析且无外部依赖
纯浏览器端 Cordis bundle:从 sessions 服务读取并切换会话;显示顺序直接读取已渲染的侧边栏 DOM,所见即所得。
MIT 开源。安全问题请通过 GitHub Issues 反馈。
链接
同类插件
Minglink/dsh-infinite-gen-4★ 2160
DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
liangmianya/dsh-synapse★ 454
DeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
ranxianglei/billion-context★ 384
billion-context官方版:上下文压缩插件,兼顾小窗口(100k上下文足矣)省token(省5倍token)和超长会话(数月级别几十亿token单会话)。
Nwflower/dsh-chat-import★ 207
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。
Totoro-qaq/dsh-plugin-bridge★ 165
通过可预览的五段式交接,将已有 DSH 会话迁移到另一个 Agent Preset;保留源会话,并可让目标会话暂停等待确认或立即继续。
Anionex/dsh-turn-rewind★ 122
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。