
flymysql/dsh-remote
dsh-remote
Remote-work assistant for DeepSeek Harness (DSH): connect SSH (key or password), pick a remote workspace, operate with rw_* tools, and SFTP-mirror it into a real local DSH workspace.
Install
npx @deepseek-ai/dsh plugin --profile web add dsh-remoteRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-remote)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from flymysql/dsh-remote, cleaned of badges and images.
English · 中文
dsh-remote
由 @flymysql 维护 · 主页 · 用量统计 · 博客 · 讨论区 · Issue · English
为 DeepSeek Harness(DSH)打造的远程工作助手。
维护多台 SSH 机器,然后在「选择工作区」时选一个远程工作区(或本地工作区),Agent 就能在不离开 harness 的情况下直接操作——列文件、读代码、在远程主机上跑构建/命令,并把远程目录镜像成一个真实的本地工作区对象。
DSH 的 Web 界面刻意只监听 127.0.0.1(CLI 为安全拒绝 --host 0.0.0.0)。本插件反过来:由你主动连出到你维护的机器,选一个工作区,然后通过 DSH 原生的工作区 + 文件流来工作——不改动 dsh-workspace 核心。
反过来也成立:你可以把远端那台机器的 DSH 网页界面,当成本机浏览器里的一个页面打开——同样不需要在远端开放任何端口(详见 在本地打开远程机器上的 DSH 界面)。连不上时还有一键体检与部署,它会替你把远端环境修好并验证。
界面预览
设置 → 远程工作区 —— 多机列表、高级配置(私钥/跳板机/agent)、连接体检、远程 DSH 界面、端口转发、审计日志、更新:
原生 「Add workspace / 选择工作区」 流程 —— 居中弹窗、两个 tab,默认落在「本机」;切到**「远程」**:
- 路径框实时补全;Windows 主机根级显示「此电脑」多盘视图;「浏览…」浮层选中只回填、不直接提交。
- 确定后创建真实本地镜像并被 harness 收养,同时通过 SFTP 保持同步;所选工作区持久化到该机器。
功能
上图是能力总览;下面只列上图没说清、但用起来需要知道的部分。
其余要点:
- 22 个模型工具(便于复制/检索):
rw_info、rw_connect、rw_machines、rw_pick_workspace、rw_list_dir、rw_stat、rw_read_file、rw_write_file、rw_edit、rw_append、rw_mkdir、rw_remove、rw_move、rw_exec、rw_search、rw_download、rw_upload、rw_sync、rw_push、rw_forward、rw_disconnect、rw_deploy_probe。 - 会话列表里区分本地/远程(
0.8.43+)—— 远程会话的行首有一个绿点,悬停显示user@host:port与远端路径;打开该会话后,标题栏还会常显一个主机标签(本地会话两者都没有)。判定只看会话 cwd 是否落在$DSH_HOME/remote-workspaces/…镜像里,所以「保存过但没在用」的机器不会给本地会话打标。 - 把远端机器的 DSH 界面挂到本机(
0.8.36+)—— 不用在远端开任何端口:插件主动 SSH 连过去,在远端只监听127.0.0.1地起一个dsh web,再把端口经隧道搬回本机的一个 loopback 端口。地址带一次性登录令牌,只在本机这次跳转里用一次。 - 连不上时一键体检与部署(
0.8.36+)—— 连不上大多不是插件的问题,而是远端 dsh 的版本或环境不对。体检(只读)会报出平台/node/npm/dsh 版本、原生模块能否启动、代理与 npm 源,并给出修复建议;「部署并验证」把它装到远端私有目录(不写系统目录、不改 PATH、不覆盖你在用的版本,删目录即回滚)并逐步校验。按钮不再需要先体检——直接点即可(0.8.40+),部署过程自己会重新体检。失败还能交给内置的dsh-remote-deploy技能排查。 - 远端跨平台 —— 文件访问走 SFTP 协议层(不依赖 POSIX shell),Linux/macOS/Windows 远端都能列/读/写/搜索/同步。
- Windows 主机 —— 自动探测平台并定位 Git Bash,命令经
bash -s走 stdin 执行,不受引号/反斜杠转义困扰(config.shell可指定或设native关闭);C:\Users\dev与/c/Users/dev两种写法都接受。 - 长任务异步化 ——
rw_sync/rw_push传async: true返回taskId,可查询进度/结果/取消。 - 数据跟随 Harness 根目录 —— 机器清单与镜像在
$DSH_HOME/remote-workspaces;0.6 之前的数据首次启动自动迁移。 ~/.ssh/config是连接四字段的唯一来源(0.8.50+,issue #50)—— 保存机器时把 主机/用户/端口/私钥 写入~/.ssh/config的受管块(# dsh-remote: managed标记,只动自己的块;你手写的同名 Host 块绝不覆盖,会提示冲突)。之后改这个文件立即生效:任何 Host 块点名的主机(含字面 IP),连接都按文件解析(裸Host *是通用默认,不算点名);机器记录里的副本只做兜底,插件自己的状态(最近工作区/延迟等)仍存注册表。- 不改动
dsh-workspace官方代码 —— 全部作为普通插件实现。
安装
DSH 版本兼容性
同时支持 0.1.x 与 0.2.x 两条 DSH 线。DSH 会在导入 bundle 之前校验所有 @deepseek-ai/dsh-* 的 peer 范围,任一条不匹配就整包丢弃(没有设置页、没有 rw_* 工具):
dsh: skipping profile bundle "dsh-remote": Error: Plugin dsh-remote@… is incompatible …
caret 在 0.x 上会锁死小版本线(^0.1.x 容不下 0.2.x,反之亦然),所以自 0.8.29 起改为跨线区间 >=0.1.0-rc.6 <0.3.0。低于 0.8.29 请在升级 DSH 前先升级本插件。
官方 Desktop 兼容适配(实验性)
对 DeepSeek 官方 Desktop 的适配(以 0.1.5-rc.2 Host 协议验证,不修改 Harness 核心):
…

