前言¶
在 DeepSeek Harness(DSH)里用右侧 Sidebar 的 Web 终端跑命令时,桌面键盘上的 Esc、Tab、Ctrl、方向键是日常操作的一部分;换到手机软键盘,这些键往往不存在,终端界面也没有自带的屏幕替代键。社区里已有 dsh-terminal-keybar 在终端旁浮一列半透明快捷键,本插件 dsh-terminal-keybar-dock 由维护者 gitMFQ 提供,同属客户端类插件,把同一套能力改成贴在终端底边的实心横条,并为终端内容区预留条带高度,避免提示符和光标被挡住。下面按定位、能力、安装与使用注意说明。
这是什么¶
dsh-terminal-keybar-dock 是 DSH 的 Client 插件:在触屏设备、视口宽度小于 768px、且右侧 Sidebar 当前标签为终端且终端 body 可见时,于活动终端底部显示一条快捷键栏;平板或横屏并排布局、折叠面板时不会出现。它继承自 dsh-terminal-keybar(MIT)的写入路径与部分机制,布局改为 dock 而非浮动列,并增加了粘性 Ctrl / Shift 修饰键及对软键盘下一字符的拦截改写。
目录页:https://www.skillhub.cn/plugins/gitMFQ/dsh-terminal-keybar-dock
源码:https://github.com/gitMFQ/dsh-terminal-keybar-dock(package.json 中版本为 1.1.0,许可证 MIT)
核心功能¶
底栏按键与布局¶
横条沿活动终端底边放置。在手机上 Sidebar 终端于 768px 以下全屏时,屏幕底即终端底。终端容器为底栏预留高度(条带高度,软键盘打开时再加上键盘 inset),终端内容重排后贴于条栏之上,最后一行提示符与光标保持可见。
条栏上的键(README 原文顺序):Ctrl · Shift · Esc · Tab · ↵ · ^C · ↑ · ↓ · ← · →。
跟随软键盘(visualViewport)¶
iOS Safari 与现代 Android Chrome 在软键盘弹出时缩小 window.visualViewport 而非整体布局视口。插件用 innerHeight − visualViewport.offsetTop − visualViewport.height 作为键盘 inset,将条栏 bottom 设为 max(inset, env(safe-area-inset-bottom)):键盘打开时条栏贴在键盘上沿,关闭时在 home 指示条之上。终端预留的底边带使用同一 inset 表达式加上条栏高度,使终端底边与条栏顶边对齐。对会缩小布局视口的旧版 Android / Firefox,inset 为零,条栏 bottom: 0 即已在键盘之上。
按键使用 pointerdown 并 preventDefault,终端隐藏 textarea 保持焦点,软键盘不收起。字节经当前标签的公开 Client 终端服务写入(webTerminals.view(...).write(...)),不复制终端内部实现。
Ctrl / Shift 粘性修饰¶
Ctrl 与 Shift 为一次性粘性修饰:点按高亮,再点取消;两者可组合为 Ctrl+Shift。武装后的修饰作用于下一个条栏键或软键盘输入的一个字符,随后清除。
- 对条栏键:
Shift+Tab发送ESC [ Z(back-tab);Ctrl/Shift与方向键组合发送 xterm 修饰序列(如 Ctrl+↑ 为ESC [ 1 ; 5 A),便于 readline / vim 中按词移动等。 - 对软键盘:武装修饰时,从终端隐藏 textarea 在可取消的
beforeinput中拦截下一字符,取消默认插入,改写后的控制字节仍走同一终端服务(如 Ctrl+C 中断、Ctrl+D EOF、Ctrl+R 反向搜索等;Shift 仅对大写 ASCII 字母生效)。IME 组字、粘贴等非单键输入不处理,修饰保持武装。 - 在条栏外点击、切换标签或条栏消失会清除武装状态,避免误触影响后续按键。
安装与启用¶
官方 README 说明从本插件目录以本地 bundle 安装,而非远程一条命令拼出的 dsh plugin add github:...。步骤如下:
- 在 DeepSeek Harness 中打开 Plugins → Install,或使用
plugin_manager工具的install_bundle,指向该插件目录。 - 禁用上游插件
dsh-terminal-keybar,避免浮动列与底栏同时出现。 - 安装后重新加载页面。
插件依赖 Node >=20(见 package.json engines),客户端注入涉及 @deepseek-ai/dsh-client-ui-sidebar-right、@deepseek-ai/dsh-api-terminal-controller 等 DSH 客户端模块;具体触及的上游 API 见仓库内 MAINTENANCE.md。
典型用法¶
在窄于 768px 的触屏设备(或开发者工具中窄视口触屏模拟)上打开 DSH,进入右侧 Sidebar 的终端标签,确认终端 body 可见后,底栏应出现。关闭软键盘时可验证 dock 布局与终端预留条带;打开软键盘后条栏应随 visualViewport 上移到键盘上方——README 注明 open-keyboard 行为需在真机上验证。
日常操作示例:
- 需要中断前台进程:先点
Ctrl(亮起),再点^C,或武装Ctrl后在软键盘输入对应字符(按 README 控制字节映射)。 - 需要 Tab 补全或 Shift+Tab:直接点
Tab,或Shift武装后点Tab。 - 在 vim / readline 中按词移动:武装
Ctrl后点←/→。 - 误武装修饰:在条栏外点一下或切换标签即可清除。
适用场景与注意¶
适合:经常在手机上通过 DSH Web 终端与智能体或 shell 交互、且依赖 Esc / Tab / Ctrl / 方向键的开发者。
注意:
- 仅移动端窄视口 + 终端标签可见时生效;与
dsh-terminal-keybar二选一,勿同时启用。 - 插件在 DSH 客户端侧运行,安装前请阅读源码与 MIT 许可证,确认可接受其注入与终端 API 使用方式。
- 键盘 inset 与
beforeinput拦截在桌面浏览器无法完全等价于真机软键盘;重要交互建议在手机上走一遍。 - SkillHub 目录为社区插件索引站点,与 DeepSeek / 幻方无官方从属关系;星标与收录信息以各站点当时页面为准。
结尾¶
dsh-terminal-keybar-dock 把手机软键盘缺省的终端键补成终端底边实心条栏,并用 visualViewport 让条栏骑在软键盘上、同时为终端内容留白,使移动场景下 DSH 终端更接近桌面可用性。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。