前言¶
智能体开发中,经常需要操作远程机器上的文件或执行命令。如果目标机器在内网或通过 NAT 访问,直接连接往往比较困难。DeepSeek Harness(DSH)虽然提供了强大的插件生态,但针对“远程机器即本地工作空间”这一场景,通常需要集成 E2B 等外部服务。
dsh-anywhere 插件解决了这个问题。它将“到达层”(Fleet)和“执行世界层”(World)合二为一,让你能把 DeepSeek Harness 的工作空间部署在任何一台机器上,无论是公网服务器、内网盒子,还是处于 NAT 后的设备。
这是什么¶
dsh-anywhere 是一个由 tangwenhao616-netizen 维护的 DSH 插件,旨在通过 SSH 协议,将远程机器变成本地会话的文件系统和子进程运行时。
它不依赖外部 npm 包,而是直接利用系统的 SSH CLI 进行文件读写和命令执行,同时通过 OpenSSH 的 ControlMaster 复用机制优化性能。
核心功能¶
- Fleet 模式(到达层):通过一次性令牌和反向隧道,将位于 NAT 后的机器注册到你的 DSH 集群中,使其表现为一个
dsh-ssh主机。 - World 模式(执行世界层):将任意可 SSH 访问的机器提升为会话的
ctx.fs(文件系统)和ctx.subprocess(子进程),让模型原生的read、write、bash、grep操作直接作用于远程。 - 原生 SSH 执行:完全基于系统 SSH CLI,无额外依赖,路径和内容通过 base64 传输,无需担心 Shell 注入问题。
- 高性能文件操作:利用 OpenSSH 的
ControlMaster复用连接,文件微操作延迟可控制在约 40ms。 - 可取消长命令:支持中断正在执行的长命令,通过终止连接实现。
安装与启用¶
安装插件时,必须使用 --profile 指定配置文件,并且不要使用 link: 软链接方式,因为 --patch 的名称是相对于配置文件目录解析的。
dsh plugin --profile <your-profile> add dsh-anywhere
安装后,插件会提供 /fleet 面板和 dsh-anywhere/world 入口。依赖项 @deepseek-ai/dsh-fs 和 @deepseek-ai/dsh-subprocess 由 DSH 运行时提供。
典型用法¶
安装完成后,你可以通过以下命令将远程机器纳入工作空间。
示例:运行远程命令并写入文件
假设你已配置好 workspace-on-machine.patch.yml,可以使用 -patch 参数指定配置:
dsh --profile headless --patch ./workspace-on-machine.patch.yml "run 'uname -n' and write MERGED-WORLD-OK to /tmp/selftest.txt"
示例:安装插件
dsh plugin --profile <your-profile> add dsh-anywhere
在 World 模式下,建议设置环境变量以获得完全访问权限:
DSH_PERMISSION_MODE=danger-full-access \
dsh --profile <your-profile> --patch ./workspace-on-machine.patch.yml "work on this machine"
工作模式¶
dsh-anywhere 提供了两种互补的模式:
1. Fleet 模式:让不可达的机器可达¶
Fleet 模式主要用于解决网络拓扑问题。
- 流程:在 Relay VPS 上运行初始化脚本,生成 rendezvous 点;在目标机器上运行 curl <base>/join | bash;在 Hub 的 /fleet 面板中验证配对码并批准。
- 安全:机器的 sshd 仅绑定到 Relay 的 loopback 地址,Token 是一次性、可过期且可撤销的。
- 使用:此时机器显示为 fleet-* 的 dsh-ssh 主机,你可以使用 ssh_exec、ssh_upload 等工具操作它。
2. World 模式:让机器成为工作空间¶
World 模式主要用于提升生产力。
- 机制:通过 ctx.fs 和 ctx.subprocess 桥接,让 Agent 的所有原生文件和 Shell 工具在远程运行。
- 能力:支持 read、write、edit、bash、grep 以及 LSP 等工具,无需修改工具代码即可自动作用于远程。
- 限制:必须满足“一个世界不变量”,即 fs.cwd 必须等于 subprocess.cwd(通常由 patch 配置中的 cwd 指定),否则相对路径会失效。
适用场景与注意¶
适用场景:
- 开发调试需要频繁操作远程 Linux 服务器。
- 智能体系统需要直接控制位于内网或 NAT 后的边缘设备。
- 需要在没有 E2B 等外部依赖的情况下,构建轻量级的远程开发环境。
注意事项:
- 安装方式:务必使用 dsh plugin add 进行正确安装,避免使用 link: 导致的模块解析错误。
- 权限配置:World 模式下,权限模式建议设置为 danger-full-access。
- 环境一致性:确保本地和远程的文件系统路径配置一致,避免路径错位。
- 操作系统:Windows 远程主机需要安装 OpenSSH 客户端和服务端,并配置 PowerShell。
总结¶
dsh-anywhere 通过 SSH 协议打通了本地 Harness 与远程机器的界限。它既提供了 Fleet 模式的网络穿透能力,又提供了 World 模式的完整工作空间支持,且无外部依赖。对于需要构建跨机器智能体工作流的人来说,这是一个直接、高效的工具。
- 目录页:https://www.skillhub.cn/plugins/tangwenhao616-netizen/dsh-anywhere
- GitHub:https://github.com/tangwenhao616-netizen/dsh-anywhere