前言¶
在 DeepSeek Harness(DSH)里来回改 Session、进 Settings、翻插件页,常见做法是点侧边栏或依赖已有的 Session 轮询类插件。社区目录里已有 session cyclers 和 tab bar,但它们往往在按键瞬间就切换,或者不把你去过的「页面级」位置当成一等公民。若你希望像桌面 Alt+Tab 那样:按住修饰键才弹出列表,松开才跳转,Esc 则留在原地,就需要一个客户端侧的屏幕切换器。dsh-screen-switcher 由 Grawl 维护,分类为客户端插件,用 Ctrl+Tab 列出最近访问过的各类「地点」,并按你的选择恢复。
这是什么¶
dsh-screen-switcher 是 DeepSeek Harness 的 Ctrl+Tab 切换插件:按住 Ctrl 再按 Tab,会出现 Alt+Tab 风格的叠加列表,列出你去过的 Session、Settings 分区、全局面板页、插件目录及单个插件页,最近访问的排在前面。松开 Ctrl 进入高亮项,Esc 取消。社区目录页:https://www.skillhub.cn/plugins/Grawl/dsh-screen-switcher;源码与说明:https://github.com/Grawl/dsh-screen-switcher。当前 package 版本为 0.1.5,许可证 MIT。
与同类做法的差异¶
README 明确区分:已有插件多是在按键时立即切换,或只围绕 Session。本插件在按住 Ctrl 期间才展示列表,松手前不跳转;Esc 不改变当前位置。它不增加额外窗口或常驻 UI,一个组合键加一层 overlay。地点不限于 Session:Settings 某一节、插件列表里的某一卡,各自计为独立 place,返回时会恢复对应 section 或插件卡状态。
核心功能¶
键盘与列表行为¶
- 按住 Ctrl,按 Tab:打开列表,第一项为最近访问地点。
- 继续 Tab 向下移动,Shift+Tab 向上。
- 松开 Ctrl:跳转到高亮地点。
- Esc:关闭列表,保持原位置。
- 单次 Ctrl+Tab 后立刻松开:回到上一个 Session(与常见「切回上一项」习惯一致)。
列表渲染为挂到 document.body 的 shell overlay,在 Settings 对话框之上仍可操作;离开前的界面仍能在背后看到。支持点击某行直接切换;点击列表外区域视为取消。
哪些算一个 place¶
| 地点 | 读取方式 | 恢复方式 |
|---|---|---|
| Session | 主视图保留的 Session(ctx.sessions.list) |
ctx.uiWorkspace.openSession() |
| Page | 当前选中的全局面板(ctx.layout.panelInfo) |
ctx.layout.selectPanel() |
| Plugin page | Plugins 页 store(view、tab) |
setView / setTab |
| Settings | Settings shell store(open、activeId) |
open() / openSection() |
Session 行会带上侧边栏同源的状态点:等待审批/计划审阅/回答为黄点,运行中为转圈,未读输出完成为绿点,空闲为灰点。
持久化与清理¶
访问记录写在浏览器 localStorage 键 dsh.screen-switcher.v1,重载或重启后仍保留 MRU 顺序。列表长度不固定:地点一直存在直到对应实体消失。打开 switcher 时会剔除已删除、已归档的 Session,以及不再注册的 Settings section,并从存储里同步删掉。
切换时的副作用¶
切到 Session 时会先关闭 Settings,并清空当前选中的 page。若目标已失效(Session 已删、页面已撤回),列表保持打开并打一条 warning 日志;下次打开会按你真实所在位置更新。
安装与启用¶
从 Plugin Manager 安装目录 bundle,或对已发布副本使用 CLI。官方命令如下:
dsh plugin --profile "$DSH_PROFILE" add dsh-screen-switcher
安装新包后需重启应用一次;对已安装副本改动的 Client 代码可热更新。插件以当前 DSH 进程权限在客户端运行,安装前建议阅读仓库源码与 LICENSE(MIT)。
典型用法¶
日常在多个 Session 与 Settings 之间跳转时:
- 安装并重启 DSH 桌面端(见下文限制)。
- 依次打开几个 Session,再进 Settings 某一节或 Plugins 里某个插件页。
- 按住 Ctrl,连按 Tab 浏览列表,松开到目标;若误开列表,按 Esc 或点外侧取消。
- 需要快速回到上一 Session 时,Ctrl+Tab 后立刻松开 Ctrl。
维护者提供的无头校验(非端到端像素测试):
node scripts/verify.mjs
该脚本通过与应用相同的 window.__ModuleLoader__ 加载 client.js,模拟 Ctrl+Tab 序列,覆盖访问顺序、循环、提交/取消、Settings 重开、插件页恢复与持久化等行为。
适用场景与注意¶
适合: 经常在 Session、Settings 分区、插件页之间切换的 DSH 用户;希望 MRU 列表而不是即时轮询;需要一眼看到 Session 侧栏状态点的场景。
快捷键优先级: Ctrl+Tab / Ctrl+Shift+Tab 在页面层处理,优先于编辑器和对话框,终端面板内以及正在录制快捷键时除外。
平台限制: 浏览器通常把 Ctrl+Tab 留给标签页,Web 构建仅在桌面应用内可用,或浏览器能把该快捷键交给页面时可用。
历史粒度: 只记全局 page 级;右侧边栏(文件、终端、浏览器)不进列表。Settings 里若子 tab 状态落在 section 组件内部(README 举例:Built-in plugins 下的只读 inventory tabs),只能恢复到 section,不能保证精确子 tab。
生态说明: DSH 采用「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文档描述的是社区插件能力,非官方产品说明。
结尾¶
dsh-screen-switcher 用一根 Ctrl+Tab 弦把 Session、面板页、插件页和 Settings 收成一张 MRU 表,按住才预览、松手才跳转,并把状态点与 localStorage 持久化一并带上。若要安装或看实现细节,可访问目录页 https://www.skillhub.cn/plugins/Grawl/dsh-screen-switcher 与 GitHub 仓库 https://github.com/Grawl/dsh-screen-switcher。