前言¶
DeepSeek Harness(DSH)的会话必须绑定一个本地目录作为工作区,这导致智能体在远程开发环境里无法直接读写文件。通常要么把整个环境拉到本地(不现实),要么绕过 ctx.fs 自己实现一套文件读写(增加复杂度)。
dsh-remote-workstation 插件通过一个「挂载」层,把远程 SSH/SFTP 服务器上的目录映射成 DSH 的工作区。侧栏出现一个 Remote 面板,你可以浏览远程主机、选择目录并挂载为工作区。挂载后,Files 标签、文件预览、以及 agent 的 read/write/edit 工具都直接操作远程文件,其他路径继续走本地磁盘。
如果你熟悉 VS Code 的 Remote-SSH,这个插件就是同一思路:在侧栏浏览服务器,选中文件夹,让 agent 在那里工作。
核心功能¶
1. 远程探索面板¶
侧栏新增 Remote 面板,提供:
- 主机选择器:列出已配置的 SSH 主机(从插件自己的 ~/.dsh/remote-workspaces-hosts.json 和 DSH 的 ~/.dsh/dsh-ssh.json 合并)
- 目录浏览器:浏览远程文件树,支持点击进入目录或输入路径回车
- 一键挂载:选中目录后点击「Mount as workspace」,将远程目录注册为 DSH 工作区
2. 工作区锚点¶
DSH 要求工作区是真实存在的本地目录。插件在 ~/.dsh/remote-workspaces/<host>/<path> 下创建一个空锚点,并将它映射到远程目录。所有文件操作通过 ctx.fs 的 resolve/listDir/readText/writeText/editText 等接口,底层实际走 SFTP。
3. 可插拔的文件系统¶
插件替换或扩展 ctx.fs,提供 union 文件系统:锚点路径走 SFTP,其他路径走本地文件系统。它基于 SandboxedFileSystem,因此原有的只读/工作区写/完全访问权限边界仍然生效。
4. 主机管理¶
在 Remote 面板中即可管理 SSH 主机:
- 添加主机:别名、主机地址、端口、用户名、认证方式(密码、私钥、或使用 SSH_AUTH_SOCK)
- 编辑主机:修改端口、用户、密钥路径等
- 测试连接:点击测试会连接一次,返回远程 home 目录和延迟,失败时显示原始错误
配置文件 ~/.dsh/remote-workspaces-hosts.json(权限 0600)存储主机的明文凭证(与 DSH 自身的 dsh-ssh.json 类似),插件优先读取自己的配置,再叠加 DSH 的配置。
5. 远程读写与编辑¶
write 和 edit 工具在远程工作区上与本地行为一致:
- 不存在则创建
- 基于版本检查的替换(防止过时写入被覆盖)
- editText 带歧义检测
- 沙箱权限限制仍然适用
6. 远程命令与搜索¶
插件提供了两个 agent 工具:
- remote_exec:在已挂载的服务器上运行命令(构建、测试、git 等)
- remote_search:在远程目录下 grep,返回 path:line 格式的匹配结果
这让 agent 在远程环境里也能执行构建和搜索,无需回退到本地。
7. 远程 Git 操作¶
remote_git 工具可在已挂载的远程仓库中执行只读 Git 命令:status、diff、log、show、branch、rev-parse、ls-files、blame、stash。
8. 实时刷新与预览¶
- 远程 watch 通过轮询文件属性实现(默认间隔 2 秒),外部修改会自动反映到 Files 标签和预览窗口
readByteRange/readBytes直接从 SFTP 读取,因此图片/PDF/Excel/Office 等预览无需先下载
9. 权限与沙箱¶
插件的远程读写和远程命令会遵守调用会话的权限预设和审批策略,自动审核像其他工具一样。
10. 可选远程 Shell¶
通过一个补丁,当 agent 的 cwd 处于锚点内时,其 bash/pwsh 命令会自动路由到远程服务器执行,让构建和测试套件在代码所在环境运行(需要额外补丁,见文档)。
安装与启用¶
插件依赖 DeepSeek Harness >= 0.2.1-rc.2,并需要 Node.js ^22.19.0 || >=24。
从 GitHub 安装:
dsh plugin --profile web add github:MingTXin/dsh-remote-workstation
安装后重启 DSH Desktop 或 dsh web,插件会在启动时挂载,客户端代码支持热重载。
典型用法¶
- 侧栏 → Remote
- 选择一个已配置的主机(或点击 + Add host 填写别名/主机/端口/用户/认证信息)
- 浏览到目标目录(点击文件夹或输入路径回车)
- 点击 Mount as workspace
- 从侧栏打开该工作区,切换到 Files 标签,即可看到远程目录内容
- 启动会话后,agent 的
read/write/edit工具将操作远程文件,remote_exec和remote_search也会走远程
适用场景与注意¶
适合需要通过 DSH 访问远程开发环境、服务器代码库或 CI 构建目录的开发者和 AI 助手。
注意:
- 插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证
- 所有凭证存储在本地配置文件(~/.dsh/remote-workspaces-hosts.json),权限应设为 0600
- 远程 watch 通过轮询实现,高并发写入场景可能有延迟
- 远程 Shell 路由需要额外补丁,并非开箱即用
结尾¶
dsh-remote-workstation 让 DSH 不再局限于本地文件系统,可以在远程服务器上像操作本地目录一样工作。通过挂载、锚点和统一文件系统接口,agent 可以直接读写远程文件、执行远程命令和 Git 操作,从而更自然地融入远程开发流程。
- 插件目录:https://www.skillhub.cn/plugins/MingTXin/dsh-remote-workstation
- GitHub:https://github.com/MingTXin/dsh-remote-workstation