DeepSeek Harness Remote Workspace

DeepSeek Harness 远程工作区

像使用本地目录一样使用远程服务器

通过 SSH 连接一台主机,选择其中的文件夹,然后直接在其中工作。Agent 会用已有的 全部工具在远端读取、写入、修改、列目录、搜索并执行 shell 命令。连接由所有会话共享,可同时连接 多台服务器,并可在设置 → 插件中一键启用。

它能做什么

环境要求

安装

curl -fsSL https://raw.githubusercontent.com/cmukanisa/dsh-remote-ssh/main/install.sh | sh

或从克隆安装:git clone https://github.com/cmukanisa/dsh-remote-ssh && cd dsh-remote-ssh && node install.mjs

安装即启用;整个过程是一个事务

它先检查全部环境要求,再安装、验证;只要有任何一步不通过,就会回滚到原先的 确切状态——半安装的插件会让 harness 启动一份禁用了内置 provider、却没有注册替代实现的 组合配置。

  checking
  ✓ node        ·························· v24.14.0 (the harness requires >= 22.19)
  ✓ ssh         ···································· OpenSSH_10.3p1, LibreSSL 3.3.6
  ✓ tailscale   ················ 1.102.3 — the Tailscale SSH transport is available
  ✓ harness     ················································· /Users/you/.dsh
  ✓ writable    ··································· profiles/plugins accepts writes
  ✓ modules     ················· profiles/node_modules/@deepseek-ai/cordis present

  installing
  ✓ copied      ········ dsh-remote-ssh → profiles/plugins/dsh-remote-ssh (8 files)
  ✓ patched     ···································· cordis.patch.yml (8 rows)
  ✓ enabled     ····························· settings.yaml remote-ssh.enabled = true

  verifying
  ✓ files       ······················································ 12 files in place
  ✓ composition ·············································· 8 expected rows
  ✓ setting     ····································· remote-ssh.enabled = true
  ✓ module      ············· registry.js imports and exports RemoteRegistry

  ──────────────────────────────────────────────────────────────────────────────
  Done in 0.1s. Reload the harness page, then workspace "+" → "Serveur distant (SSH)".
参数作用
--keep-off以停用状态安装 — 适用于需要单独审计启用动作的批量部署
--enable即使之前被停用也强制启用
--link以符号链接代替复制(开发用)
--dry-run只运行检查并报告将要发生的改动,不写入任何内容
--no-color纯文本输出(同样遵循 NO_COLOR
--uninstall移除插件包、组合配置行与该项设置
--dsh-home DIR指定另一个 harness 主目录

使用

  1. 刷新 harness 页面。
  2. 点击侧边栏工作区标题中的 + — 或侧边栏底部的 🖥 按钮,两者打开同一对话框。
  3. 选择 远程服务器(SSH)
  4. 点击 + 服务器,填写连接信息:名称、主机、端口、用户、私钥路径或密码。
  5. 浏览到目标文件夹,点击 使用此文件夹

该文件夹会作为普通工作区出现。在其中打开的会话直接作用于服务器,该连接配置也对所有其他 会话可用。

界面会跟随浏览器语言:中文、英文或法文。

Tailscale

“通过 Tailscale 连接”包含两件不同的事,插件不会把它们混为一谈。

连接表单会列出 tailnet 中的节点;当该节点运行 Tailscale SSH 服务端时,一键即可填入 MagicDNS 名称、用户与传输方式。被 Tailscale 标记为离线的节点会在尝试之前指出,而不是表现为 连接超时。

比 harness 活得更久的任务

Agent 循环运行在 harness 进程内,因此关闭它会结束当前回合。能够继续的是命令本身, 关键在于将其分离:插件在服务器上写入一个小型启动脚本,让它在自己的会话中运行,并把输出写到服务端的 日志文件。

无需配置:在远程工作区启动的任务默认分离运行,每个任务在 $DSH_HOME/remotes-sessions.json 中有一条持久记录,由所有会话共享。

更新

重新运行安装器即可。它会重写自己的组合配置块,并在最后一行说明正在运行的 harness 需要哪一种操作:

node install.mjs       # 或再次执行 curl 一行命令

故障排查

现象原因与处理
does not answer as a POSIX host目标是非 POSIX 服务器。请使用 Linux/macOS 主机,或将该机器的 WSL sshd 暴露在独立端口上。
Permission denied (publickey)先手动执行 ssh <主机>;插件使用同一个客户端、agent 与配置。
主机密钥发生变化插件会拒绝,这是正确的。确认无误后从 known_hosts 删除旧条目。
glob/grep 提示程序不存在在服务器上安装 ripgrep(apt-get install ripgrepdnf install ripgrepapk add ripgrep)。
tailnet 节点连接超时Tailscale 已标记其离线,连接表单会事先说明。
某些纯本地工具看不到文件该工具绕过了文件系统抽象层,因此只看到空的本地镜像。请使用工作区文件树。
更新后出现 Failed to load plugins … loaded without registering "…dsh-remote-ssh-ui"正在运行的 harness 仍持有启动时读取的包标识。重启 dsh web;仅刷新页面不够。

需要了解的边界

链接