packages/dsh-remote-web-ui
zhu1090093659/dsh-web手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
SSH 远端工作区——在远端机器上执行 bash、文件读写、glob 与 grep(基于 sshd 的 exec + SFTP),远端零安装,纯附加。
中文 | English
Run your DeepSeek Harness workspace on any remote machine over SSH — right from the DSH settings page. Configure a host, pick one of its directories as a workspace, and every bash / file / search tool call runs on that machine instead of your own.
Add SSH hosts in the settings page
Browse a remote directory and pick it as the workspace
Why dsh-ssh
Built entirely on DSH's official public contract for third-party plugins — purely additive, zero changes to DSH core, and zero installation on the remote (it only needs a plain
sshd). Remove it and DSH is exactly as it was. Your local workspaces behave byte-for-byte identically to before.
bash, read, write, edit, read_image, glob, and grep all execute on the remote machine — same names, same arguments, no model-visible difference.run_in_background with the full job_list / job_output / job_kill chain all run on the remote.ssh2 connection for exec + SFTP.dsh plugin --profile web add @dsh-ssh/dsh-ssh
If pnpm reports ERR_PNPM_ADDING_TO_ROOT, append -w (profile dirs are pnpm workspace roots and pnpm 11 requires the flag). A failed cpu-features build log during install is expected — it is an optional native accelerator and falls back to pure JS.
Restart DSH, then open the settings page and add your first host.
In a remote workspace, only the seven routed tools execute on the remote host:
| Capability | Runs on |
|---|---|
bash, read, write, edit, read_image, glob, grep | Remote machine (over SSH) |
| skill tools, MCP tools, and all other host tools | Your local machine |
| Dimension | Status |
|---|---|
| Remote OS | Ubuntu ✅ · macOS ✅ (tested against real hosts) |
| Authentication | Key-based ✅ · Password ✅ |
| Remote needs | Plain sshd only — no agent, service, or kernel module |
| Windows remote | Not supported (Linux / macOS only) |
| Preset | Any preset, including the standard one — independent of presets |
Requirements: Node ≥ 22 · pnpm 11.21.0 · DSH peerDependencies (
@deepseek-ai/cordis@^4.0.1,@deepseek-ai/dsh-*@^0.1.0-rc.6,@deepseek-ai/schemastery@^3.18.1— seepackages/dsh-ssh/package.json)
grep uses GNU grep; ignore rules differ slightly from rg.exec + base64 (works, but slower).sshd is running, and auth (key path / password); the Settings → Test connection does a real handshake + echo, and errors include hostId and remote output.known_hosts once confirmed; host key changed means the remote was reinstalled or a MITM risk — verify and then remove the stale known_hosts entry or re-trust.600/400 (no group/other read); fix file permissions and path (avoid spaces or CJK characters), and ensure DSH can read it.sshd_config to restore speed.~/.dsh/remote/<hostId>/...): a remote workspace is just a local placeholder (plain workspace record, workspaceRegistry does realpath check); it holds no business data but must exist and must not be a symlink — do not delete/move it manually, switch via DSH workspace management.~/.dsh/settings.yaml (dsh-ssh-hosts), DSH console logs, and remote sshd logs (/var/log/auth.log or journalctl -u sshd) and attach sanitized info when filing an issue.Does this affect my local workspaces? No. The plugin is purely additive — local paths still go through DSH's own host implementation, byte-for-byte unchanged.
Are background tasks supported?
Yes. run_in_background and the whole job_list / job_output / job_kill chain execute on the remote machine.
Are my credentials safe? Passwords are stored write-only through DSH's secret mechanism; private keys are referenced by local path and never copied. Unknown hosts are vetted by a TOFU fingerprint confirmation before anything is trusted.
Do I need a special preset? No. Tool routing is independent of presets and works with the standard preset.
How do I uninstall?
dsh plugin --profile web remove @dsh-ssh/dsh-ssh
DSH is fully restored — no trace left behind.
This repository is a pnpm workspace; developer-oriented documentation lives in the root CONTRIBUTING.md. See CONTRIBUTING.md for the package layout, tests, and live verification scripts.
Navigation: Agent entry → AGENTS.md · Developer handbook → CONTRIBUTING.md