前言¶
DeepSeek Harness(DSH)通过插件体系扩展能力。dsh-workspace-enhancement 是一个由 DobyChao 维护的 DSH 插件,核心价值在于将本地工作区与远程(SSH)工作区统一管理在一个会话中。它解决的是在开发或运维场景下,需要频繁在本地文件系统与多台远程服务器之间切换上下文的问题。
核心功能¶
该插件主要提供以下能力:
-
远程工作区管理
利用ssh2库,通过单个 SSH 链接(支持多跳跳板机)运行 bash、文件操作、PTY 终端和目录浏览。现有使用ctx.subprocess或ctx.fs的工具无需修改代码即可在远程运行。 -
多工作区会话
在一个主会话中,通过“⊕ 工作区”按钮附加额外的本地或远程目录。这些目录作为声明列表存在,支持挂载、卸载和打标签。模型能够感知这些上下文并直接操作。 -
添加工作区流程
插件提供连接侧边栏(包含已保存机器、~/.ssh/config别名和本地路径)以及目录浏览器(支持面包屑导航、原生选择器和新建文件夹)。在远程模式下点击“连接并打开”即可创建会话。 -
机器设置
插件内置机器设置页面,支持机器的增删改查、测试连接、设为当前、忘记主机密钥。同时支持系统钥匙链密码和 TOFU(Trust on First Use)主机密钥管理。 -
会话感知
侧边栏会显示远程标记、在线三态指示以及重连功能。会话提示词会明确告知模型当前处于远程或附加工作区的上下文中。 -
跨服务器执行
提供sw_exec(server, command)工具,在已注册命名的机器上运行命令。 -
远程批准门控
可选功能(默认关闭)。针对每台机器配置门控,在执行任何 Shell 形式的远程命令或打开远程终端前,系统会进行询问。用户选择“human”时每次询问,选择“ai”时自动授予短暂只读白名单命令(如pwd、ls、git status)并询问其余命令。 -
模型工具
模型可调用的工具包括sw_status(查看当前会话状态)、sw_connect(连接已注册机器)和sw_exec。 -
运行时本地化
UI 文本、工具描述、错误信息和路由错误均遵循设置页面中的语言选项(zh/en),默认使用浏览器语言。
安装与启用¶
安装前需确保使用 DSH 的 pnpm 供应链以允许原生构建脚本(如 ssh2、node-pty)的运行。
# 使用 npm 安装
dsh plugin --profile web add dsh-workspace-enhancement
# 从源码安装(需先运行 npm run build)
dsh plugin --profile web add <this-repo-path>
典型用法¶
安装后,模型可使用以下工具和交互方式:
- 跨服务器执行:模型通过
sw_exec(server, command)向已注册的机器发送命令。 - 状态查询:通过
sw_status查看当前会话的连接状态。 - 连接机器:使用
sw_connect附加已注册的机器到当前会话。 - 附加目录:用户点击会话头部的“⊕ 工作区”按钮,手动挂载额外的本地或远程目录。
注意事项¶
- 无远程依赖:DSH 无需在远程服务器上安装,模型在本地编排,命令在远程执行,结果返回上下文。
- 版本兼容性:主机和插件版本需保持一致。插件对不同 DSH 版本的兼容性有明确要求,请参考 GitHub 仓库中的兼容性文档。
- 批准门控默认值:远程批准门控默认是关闭的,每次执行敏感操作前需要人工确认。
总结¶
dsh-workspace-enhancement 为 DSH 提供了结构化的 SSH 远程执行与文件系统代理能力,同时通过多工作区机制解决了上下文割裂的问题。适合需要同时管理本地代码库和多台远程服务器的开发者使用。
GitHub 仓库:https://github.com/DobyChao/dsh-workspace-enhancement