DSH Web UI 终端面板:宿主端 node-pty 真实 PTY(Windows 默认 cmd.exe)+ 浏览器 xterm.js 渲染;多标签会话、停靠/浮动窗口、复制粘贴。
Real PTY terminal panel for the DSH Web UI: host half spawns shells with node-pty (cmd.exe default on Windows), rendered in the browser with xterm.js; multi-tab sessions, dock/floating window, clipboard support.
安装
dsh plugin --profile web add github:giiiiiithub/terminalGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
DSH Web UI 的终端面板(Terminal panel)插件,提供真实可交互的 shell 终端:
- 真实 PTY:宿主端用 node-pty 在 DSH 服务进程里拉起 shell(Windows 下走 ConPTY),不是模拟器。
- 平台默认 shell:Windows 默认
cmd.exe(可切换 PowerShell / pwsh / Git Bash),macOS 默认/bin/zsh,Linux 默认/bin/bash;可通过配置或面板里的下拉框切换。 - 浏览器渲染:客户端用 xterm.js(@xterm/xterm 6)渲染,支持全色彩、光标、滚动回看(5000 行)、Ctrl+Shift+C/V 复制粘贴。
- 多标签会话:可以同时打开多个会话标签,折叠面板后会话在宿主端继续运行。
- 停靠/浮动窗口:dock 模式可拖动上边缘调整高度,浮动模式可移动窗口并八向缩放。
- 随项目打开:首个会话默认在工作区目录(第一个 workspace path)启动,找不到时回退到配置目录或用户主目录。
前置条件
- 已安装 DeepSeek Harness,且
dsh web(或dsh --profile web)能正常启动并打开浏览器界面。 - pnpm ≥ 9(DSH 的 profile 使用 pnpm 管理依赖)。
- 插件依赖原生模块 node-pty。若安装时 pnpm(≥ 10)拦截其构建脚本,按提示把
node-pty加入 profile 目录pnpm-workspace.yaml的allowBuilds后重新执行安装命令。
安装
第一步:安装
方式1:npm 源(推荐)
包已发布到 npm registry,一行安装:
dsh plugin --profile web add dsh-terminal
方式2:GitHub 源
dsh plugin --profile web add github:giiiiiithub/terminal
仓库内已提交
lib/构建产物,git 源安装时无需现场构建。
方式3:本地源码(开发调试)
Windows: dsh plugin --profile web add "file:C:/user/abc/terminal",假设本项目源代码在:C:/user/abc/terminalmacOS: dsh plugin --profile web add "file:/opt/dsh-terminal"Linux: dsh plugin --profile web add "file:~/dsh-terminal"
第二步:重启服务
插件含宿主端代码,必须重启 dsh web 进程才会加载:
# 停止当前 dsh web 进程(如 Ctrl+C,或结束 dsh --profile web 的 node 进程),然后:
dsh web
版本 ≥ 0.1.1 起插件自带
dsh.bundle,dsh plugin add会自动把插件登记进 profile 的加载层,无需再手动编辑cordis.patch.yml。 早期版本(0.1.0)需要手动添加条目,升级后请删除 profile 里手写的terminalinsert 条目,否则会和 bundle 层自动插入的条目重复。
第三步:验证
刷新浏览器页面,会话头部出现 >_ 终端 按钮即安装成功。点击展开面板,首次展开会自动启动一个会话(默认 shell,Windows 下为 cmd.exe)。
卸载
- 移除依赖:
或手动:在 profile 目录执行dsh plugin --profile web remove dsh-terminalpnpm remove dsh-terminal。 - 若曾在 profile 的
cordis.patch.yml里手写过terminalinsert 条目,一并删除。 - 重启 dsh web 服务,刷新页面后
>_终端 按钮消失即卸载完成。
配置
默认值可在 profile 的 cordis.patch.yml 里按 id 定点覆盖(bundle 层之后应用):
- id: terminal
config:
shell: cmd.exe # 默认 shell(Windows 下默认即 cmd.exe,也可填完整路径)
cwd: <工作目录> # 新会话默认工作目录,不配置该项时,每次新建terminal都会使用shd当前会话所在工作目录
env: # 追加到进程环境
LANG: "zh_CN.UTF-8"
| 配置项 | 默认值 | 说明 |
|---|---|---|
shell |
cmd.exe (win32) / /bin/zsh (macOS) / /bin/bash (Linux) |
新会话默认 shell |
cwd |
客户端工作区路径;都没有时为用户主目录 | 新会话默认工作目录。解析顺序:客户端请求参数(UI 默认传当前会话 workspace)→ 本配置 → 用户主目录 |
env |
— | 追加的环境变量 |
defaultReadTimeoutMs |
250 | read 长轮询上限 |
maxBufferBytes |
2,000,000 | 每会话输出缓冲上限,超出丢弃最旧字节 |
已知限制
- 折叠面板/非活动标签的会话输出在宿主端缓冲(上限 2MB),重新激活时一次性回放。
- 活会话上限 64 个:超出后
open先逐出已退出会话,仍满则返回session-limit错误。 - 服务重启会终止所有会话(PTY 随宿主进程退出)。
- 已退出会话在宿主端保留 60 秒供客户端读取退出码,之后转入 tombstone(上限 64
条)并移出会话列表;
kill会立即释放会话 id。 kill终止 shell:Windows 上先执行taskkill /PID <pid> /T /F强制清理 进程树(node-pty 的控制台枚举辅助进程在个别情况下会失败,只杀 shell 本身),再走 node-pty 正常终止;Linux 下按进程组终止。仅当子进程主动 脱离控制台/会话(如以CREATE_NEW_CONSOLE启动)时仍可能残留。
原始 README: https://github.com/giiiiiithub/terminal/blob/main/README.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。