zjuatri/dsh-terminal-plugin1

dsh-terminal-plugin

DSH 终端插件:Ctrl+` 在底部弹出一个真正的 PTY 终端面板,可以开多个终端标签。

包名
dsh-terminal-plugin
版本
0.1.0
许可证
MIT
最近更新
2026年9月11日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zjuatri/dsh-terminal-plugin

使用方式

  1. 打开 DSH Web GUI,点击输入框工具栏中的终端按钮,或按 `Ctrl+``。
  2. 首次打开时会自动创建一个终端;点击面板工具栏中的 + 可新建标签。
  3. 终端默认使用当前会话所属的工作区作为工作目录。若无法识别工作区,则回退到 DSH 进程的工作目录。
  4. 关闭最后一个标签时,默认会立即创建一个新的终端,避免面板变为空状态;收起面板即可暂时隐藏它。

终端会话运行在 DSH 宿主进程中,因此浏览器刷新、短暂断网或重新打开面板都不会终止正在运行的命令。

点击链接

输出里的链接会带下划线并显示手型光标,按住 Ctrl(macOS 为 Cmd)点击即可打开, 与 VS Code 集成终端一致:

识别对象例子打开方式
带协议的 URLhttp://localhost:3000https://example.com/a?b=1新标签页
localhost 地址localhost:5173/app(dev server 常见写法)补上 http:// 后新标签页
绝对文件路径D:\repo\src\index.ts:12:3/home/u/app/main.js:7file:// 地址(行号列号留给编辑器定位)

出于安全考虑,只有 http / https / ftp 协议会被打开,javascript:data:file: 一律不打开 —— 终端输出属于不可信内容,不能让它拿到一个执行入口。相对路径(./a.ts) 因为没有基准目录,也不会被当作链接。

悬停到链接上会显示下划线、手型光标与「Ctrl+点击打开 …」的提示;不按修饰键的普通点击 不会打开任何东西,也不会误传到终端选区之外。链接的命中范围按终端计算,中文等 宽字符占两列也不会让链接整体错位。

右键:有选中就复制,没选中就粘贴

终端区域内的右键由插件接管,行为与 VS Code 集成终端一致(浏览器自带的右键菜单不会弹出):

右键时的状态行为
有选中内容复制到系统剪贴板,并清掉选区
没有选中内容读取剪贴板并粘贴到终端(换行按终端语义转换)

粘贴走 xterm 的粘贴通道,因此 bracketed paste 等终端模式下的行为与 Ctrl+V 完全一致。 剪贴板权限被浏览器拒绝时(例如非安全上下文)静默失败,不会报错或弄坏终端。

配置

在插件配置中可设置以下常用项:

配置项默认值说明
mountPrefix/dsh-terminal插件 HTTP 与 WebSocket 路径前缀
shellPath自动探测交互式 shell 的绝对路径
shellArgs自动选择shell 启动参数
cwd当前工作区新终端工作目录;支持 {cwd} 占位符
env{}附加环境变量
rows / cols24 / 80初始终端尺寸
scrollbackBytes262144断线重连时保留的输出字节数
idleCloseAfterMs0无人连接多久后关闭;0 表示不自动关闭
maxTerminals20同时存在的终端上限

完整配置定义见 src/config.ts