前言¶
DeepSeek Harness (DSH) 是一个基于插件扩展的系统。在进行智能体开发或调试时,在网页界面内直接执行命令是刚需。现有的方案往往依赖外部窗口弹窗,或者只是模拟输出的文本框,无法满足实时交互的需求。
dsh-plugin-terminal-panel 解决了这个问题。它通过侧栏入口在 DSH 网页中增加一个终端面板。与「对话」面板同级,内部使用真实的 PTY(伪终端)技术,支持回放最近 256K 字符输出,且终端进程跑在 DSH 宿主进程中,刷新页面不会断开连接。
核心能力¶
侧栏入口与活跃计数¶
插件加载后,侧栏面板图标区会出现终端图标。图标右上角实时显示运行中的终端数量,数量为 0 时自动隐藏。
真实 PTY 与回放¶
面板内运行的是真实的 PTY(node-pty / ConPTY),不是假的输出框。终端输出通过 SSE 实时推送给页面。由于终端在宿主进程,刷新页面后 PTY 依然存活,并回放最近 256K 字符的输出。
按设备认终端类型¶
插件不写死终端列表,而是根据当前设备实测可用的 shell。Windows 上列出 PowerShell 7 / cmd / Git Bash / WSL 各发行版;macOS 列出登录 shell / zsh / bash / fish 等;Linux 列出 /etc/shells 中的类型。未安装的类型会显示在「未安装」区块。
选择 shell 与默认工作目录¶
新建终端时,可以选择 shell 类型和工作目录(支持 ~ 和相对路径)。默认工作目录为用户主目录(~)。设置面板可以指定默认终端类型和注入 Agent 工具的开关。
多标签、重命名与交互¶
面板支持多标签(上限 12 个)。双击标签名或点击 ✎ 图标可重命名(支持中文和 emoji)。双击标签上的 ✕ 可关闭终端(进程树终止)。面板宽度变化会自动 resize PTY。
自绘终端、主题跟随与输入¶
内置小型 VT 引擎,支持 ANSI 颜色(16/256/真彩)、光标定位、宽字符。支持亮/暗两套 ANSI 调色板,跟随 DSH 主题。支持文本选择模式和中文输入(IME 组合输入)。
Agent 工具¶
插件向 DSH 工具注册表注册了 9 个 terminal_* 工具(如 terminal_create, terminal_exec, terminal_read 等),模型和用户共用同一批终端。可在设置面板中一键关闭注入。
热重载¶
修改 impl.js 后,通过 POST /__reload 即可生效,工具定义随之更新,无需重启 DSH。已经开着的终端不会被替换。
安装与启用¶
环境要求:DSH >= 0.2.0-rc.2,Node ^22.19.0 || >=24.0.0。
执行以下命令安装:
dsh plugin --profile web add dsh-terminal-panel
安装后刷新页面,侧栏面板图标区会出现终端图标。
使用步骤¶
- 点击左栏的终端图标,主区域打开终端面板。
- 点击 + 新建终端,默认在主目录开启一个 PTY;点击右侧 ▾ 可展开菜单,选择 shell 或修改工作目录。
- 在面板内直接输入命令,支持中文输入。
- 重命名:双击标签名或点击标签上的 ✎。
- 关闭:双击标签上的 ✕,进程树终止。
- 调整:面板随窗口变化自动 resize。
Agent 工具说明¶
插件加载后注册的工具列表:
terminal_shells:探测本机可用 shell 及未安装类型。terminal_list:列出当前所有终端。terminal_create:新建终端,可指定 shell、cwd、尺寸。terminal_read:读取终端输出(按 offset 增量读)。terminal_write:往终端发送原始按键。terminal_exec:执行命令并等待跑完。terminal_resize:改变终端行列数。terminal_rename:重命名终端。terminal_close:关闭终端。
技术架构与安全¶
插件为纯 JS 实现,无构建步骤与运行时依赖。文件结构包含 host.js(宿主入口)、impl.js(PTY 生命周期、工具定义)、client.js(终端面板、侧栏图标)。
写操作(POST 请求)必须带 x-dsh-terminal: 1 请求头。这是因为跨站页面无法自定义请求头,以此作为安全底线,防止第三方页面驱动你的终端。
结语¶
这个插件为 DSH 增加了原生的终端能力,让网页操作和命令行交互在同一界面无缝结合。适合需要在网页中直接调试、运行脚本或进行智能体开发场景。