前言¶
在 DSH(DeepSeek Harness)的 Web 插件生态中,有时需要在浏览器中执行命令。传统的做法是打开本地终端,这会切断与当前聊天或任务的上下文关联。dsh-console 解决了这个问题,它通过 Web 界面提供一个真实的 PTY 终端。
这是一个社区维护的插件,旨在让开发者在不离开 Web 界面的情况下,直接操作命令行。
核心功能¶
dsh-console 将终端能力集成到 DSH 的主视图中:
- 主视图“控制台”标签页:与“对话”、“轨迹”等标签同级,采用 iTerm 风格的深色多标签栏设计。
- 真 PTY 交互终端:基于
node-pty底层实现,支持vim、top、htop以及Ctrl+C等所有交互式程序。 - 用户真实 shell 环境:继承用户的登录 shell(
$SHELL -l)、完整的环境变量以及 256 色支持。这保证了 conda 环境和 git 状态提示符能正常显示。 - 输出不丢:利用 host 侧的 512KB 环形缓冲区,结合 SSE(Server-Sent Events)流式推送。即便在切换标签、刷新页面或断线重连后,终端历史输出依然会自动回放还原。
- 多标签管理:支持通过
+新建标签、×关闭标签。每个标签有独立的 PID 和几何尺寸显示,且带有绿点存活指示。
安装与启用¶
安装过程非常简单,推荐使用官方提供的一键脚本。
# 1. 进入插件目录
cd dsh-console
# 2. 执行安装脚本
./install.sh
# 3. 重启 DSH
install.sh 脚本会自动完成以下三件事:
* 将插件文件拷贝至 ~/.dsh/profiles/web/node_modules/dsh-console。
* 在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中追加 dsh-console。
* 提示重启 DSH。
典型用法¶
完成安装并重启 DSH 后,按照以下步骤操作:
- 在浏览器中打开 DSH Web 界面,地址为
http://127.0.0.1:3080。 - 进入任意会话,顶部标签栏会出现“控制台”标签(位于“轨迹”与“任务面板”之间)。
- 点击
+或“新建终端”按钮创建一个新标签。 - 直接在终端中键入命令进行交互式操作。
适用场景与注意¶
- 环境依赖:构建插件需要 Node.js >= 18,但运行预构建的插件包不需要。
- 会话生命周期:PTY 会话与 DSH 进程绑定。当 DSH 重启时,所有终端标签会像关闭窗口一样被终止,请注意保存工作。
- 已知限制:
- 终端窗口尺寸固定为 120×34,暂不支持动态 resize。
- 终端标题固定显示“终端 N”,目前不支持 OSC 标题序列动态更新。
dsh-console 提供了从 Web 到命令行的直接通路,适合需要在 DSH 环境中快速调试脚本或执行后台任务的场景。