dsh-web-terminal
DSH bundle 插件:在 DeepSeek Harness Web 界面的「对话 / 轨迹」顶部新增「终端」Tab,内置 xterm.js + node-pty 交互式终端,编码完成后即时在终端执行指令调试。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:helays/dsh-web-terminal说明文档
阅读完整 README ↗dsh-web-terminal
DSH 插件:在 DeepSeek Harness Web 界面的「对话 / 轨迹」顶部新增第三个 「终端」 Tab,内置交互式 PTY 终端(xterm.js 前端 + node-pty 后端),让你在编码完成后即时在终端执行指令调试。
English · 中文
✨ 功能
- 顶部新增「终端」标签页,与「对话」「轨迹」并列。
- 真实 PTY(Windows 走 ConPTY,POSIX 用交互式 shell),支持:
- 持续会话(多次命令,进程常驻,不用每次重开)
- 实时流式输出
Ctrl+C中断、窗口缩放 resize- 断线回放:切走再切回 / 刷新后自动重连并补回滚动历史(会话池在插件侧,跨会话保活)
- 全屏模式。
- 与模型 / agent 会话完全解耦 —— 这是你自己的终端,不占用对话上下文。
📦 安装
方式一:本地开发(从插件目录)
cd dsh-web-terminal
npx @deepseek-ai/dsh plugin --profile web add . -w
# 然后重启 dsh web,再刷新页面
方式二:从 GitHub 安装(已发布)
# 首次安装(pin 到 commit,稳定可复现)
dsh plugin --profile web add dsh-web-terminal@github:helays/dsh-web-terminal#89a82f2cce1d471a7f9ffab3f9ee164b19733a8d -w
# 更新到最新 main
dsh plugin --profile web add dsh-web-terminal@github:helays/dsh-web-terminal#main -w
# 重启 dsh web,再刷新页面
⚠️
-w是必需的:当前 dsh profile 模板是 pnpm workspace 根(pnpm-workspace.yaml含packages: [.]),不带-w会报ERR_PNPM_ADDING_TO_ROOT。dsh plugin会将其余参数原样转发给 pnpm,-w会一并传给add。安装后 必须重启
dsh web(插件集合变化需重启生效),然后刷新浏览器页面进入任意会话即可看到「终端」Tab。
🚀 使用
- 打开一个会话(空白/无会话页不显示 tab 栏)。
- 点击顶部「终端」标签。
- 在终端里输入命令回车执行,例如:
dir # Windows 列目录 npm run build # 编码后快速构建 git status # 查看改动 - 顶栏可切换全屏。
🧩 技术实现
- 前端:
@xterm/xterm+@xterm/addon-fit,打包进 client bundle(lib/client.js),经window.__ModuleLoader__.load({ id, factory })注册。 - 后端:
node-ptyspawn 真实 PTY +wsWebSocket。通过ctx.webServer提供:GET/POST/DELETE /terminal/sessions—— 会话管理UPGRADE /terminal/ws/—— 双向字节流 + resizeGET /terminal/xterm.css—— xterm 样式