DeepSeek Harness 插件:dsh-terminal 终端面板

前言

DeepSeek Harness (DSH) 采用「一切皆插件」的架构。在 Web UI 环境中调试智能体或执行本地命令时,一个真实的终端是刚需。dsh-terminal 插件通过宿主端的 node-pty 和客户端的 xterm.js,为 Web UI 提供了一个开箱即用的交互式 shell 面板。

这是什么

dsh-terminal 是 DeepSeek Harness 的一个 Web UI 终端面板插件。它由 giiiiiithub 维护,采用 MIT 许可证。

插件包含宿主端和客户端两部分。宿主端利用 node-pty 在 DSH 服务进程中拉起真实的 shell(Windows 下走 ConPTY),客户端使用 xterm.js 进行渲染,从而实现全功能的浏览器终端体验。

核心功能

  • 真实 PTY:基于 node-pty,提供真实的 shell 环境,而非简单的模拟器。
  • 浏览器渲染:使用 xterm.js(@xterm/xterm 6),支持全色彩、光标、滚动回看(5000 行)以及 Ctrl+Shift+C/V 复制粘贴。
  • 多标签会话:支持同时打开多个终端标签。折叠面板后,宿主端的会话会继续运行。
  • 窗口交互:支持停靠模式(可拖动边缘调整高度)和浮动模式(可移动窗口并八向缩放)。
  • 随项目打开:首个会话默认在 DSH 的第一个 workspace path 启动;找不到时回退到配置目录或用户主目录。

安装与启用

安装前需确保已安装 DeepSeek Harness,且 dsh web 能正常启动。同时,DSH 的 profile 使用 pnpm 管理依赖,需满足 pnpm >= 9。

第一步:安装

在 DSH profile 目录下执行以下命令:

dsh plugin --profile web add dsh-terminal

注意: 若安装环境使用 pnpm >= 10,可能会拦截 node-pty 的构建脚本。此时需将 node-pty 加入 profile 目录 pnpm-workspace.yaml 的 allowBuilds 配置中,然后重新执行安装命令。

第二步:重启服务

插件包含宿主端代码,必须重启 dsh web 进程才能加载:

# 停止当前进程(如 Ctrl+C),然后启动
dsh web

第三步:验证

刷新浏览器页面。在会话头部出现 >_ 终端按钮后点击展开。首次展开会自动启动一个默认 shell 会话(Windows 下为 cmd.exe)。

配置

默认配置可通过 profile 目录下的 cordis.patch.yml 覆盖。配置项会在插件 bundle 层之后应用。

- id: terminal
  config:
    shell: cmd.exe          # 默认 shell(Windows 下默认即 cmd.exe,也可填完整路径)
    cwd: <工作目录>           # 新会话默认工作目录
    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 每会话输出缓冲上限,超出丢弃最旧字节

已知限制

  • 会话管理:活会话上限为 64 个。超出后 open 操作会先逐出已退出的会话,仍满则返回 session-limit 错误。已退出会话在宿主端保留 60 秒供读取退出码,之后转入 tombstone(上限 64 条)。
  • 服务重启:DSH 服务重启会终止所有 PTY 会话。
  • Kill 命令:kill 命令在 Windows 和 Linux 下的行为有差异。Windows 上会先执行 taskkill 强制清理进程树,再走 node-pty 正常终止;Linux 下按进程组终止。仅当子进程以 CREATE_NEW_CONSOLE 启动等特殊情况时,可能仍会残留。
  • 折叠面板:折叠面板或非活动标签的会话输出在宿主端缓冲(上限 2MB),重新激活时会一次性回放。

结语

dsh-terminal 插件解决了 Web UI 环境下调试与执行命令的痛点,提供了真实、低延迟的终端体验。通过配置 shell、cwd 和 env,可以将其适配到不同的开发场景中。

更多细节可参考插件目录或GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜