DeepSeek Harness Hub
← 返回列表

SSH 远程工作区chai1110/dsh-ssh-remote

DeepSeek 客户端兼容 / 相关生态spec-screened在 GitHub 查看 ↗
未验证

并行连接多台服务器,直接查看编辑执行远程文件

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/10 · 已提供中文文档

DeepSeek Harness SSH 远程工作区插件(多机并行):同时连接多台服务器,Agent 直接查看/编辑/执行远程文件。基于 flymysql/dsh-remote (MIT) 适配 0.1.1-rc.2

综合分
30.2
GitHub 分
30.2
用户评分
★ Stars
1
周下载量
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/chai1110/dsh-ssh-remote.git
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-ssh-remote
📖 English

DeepSeek Harness (DSH) 的 SSH 远程工作区插件——多机并行版:管理多台服务器、同时保持多个 SSH 连接,在每台上选择远程工作区,Agent 可直接查看 / 编辑 / 执行远程文件。

⛔ 维护状态:已暂停(2026-09-10)

本仓库后续不再跟进 DSH 官方新版本的适配。

- 最后一次适配基准:@deepseek-ai/dsh@0.1.2-rc.1。
- 未验证版本:0.1.5-rc.1 及以后。仓库不会再针对这些版本做适配、修复或发版。
- 代码与安装脚本保持现状可用(仍是 MIT,仍可自行 fork 继续维护),但在 0.1.5+ 上不保证工作。

为什么停下来:DSH 0.1.5-rc.1 引入了一批与本插件直接相关的破坏性变更,跟进成本不再划算——

| 官方变更(0.1.5-rc.1) | 对本插件的影响 |
|---|---|
| Session 格式升级至 V3(单向迁移) | 会话日志读取路径需重测 |
| 新增 session 锁(同一 session 至多一个进程持有) | 远程/本地双实例并存模型受影响 |
| 移除 ctx.agent,调用方需显式传 Agent | host 侧注入需改 |
| Inbox 改为 type-only(hasPending/claim 不再公开) | 需改 |
| Web 面板 API 变更:新增 sidebar.panellist / main,conversation slot 迁至 main.conversation,Detail 面板移除 | 前端挂载点需整体重做 |
| persona 拆分为前缀 + 后缀 | systemPrompt.section 用法需重测 |

如果你需要 SSH 远程工作区能力:可以 fork 本仓库,或改用上游 flymysql/dsh-remote,
或参考 chenw2759-wq/dsh-IDE(本仓库 vendor/ 下 3 个包的来源)。

适配版本:@deepseek-ai/dsh@0.1.2-rc.1(历史基准,见上方维护状态)(profile 上运行的 DSH Web)。
⚠️ 本插件以「同名用户 preset 覆盖」机制挂载,DSH 官方升级后重跑一次安装脚本即可继续使用(已有用户实测在 rc.2 → rc.1 架构重构版下正常工作);老版本 DSH 用户同样适用,见「🔄 适配其他 DSH 版本」。

📌 上游项目与版权声明

本项目是 dsh-remote 的 fork + 改造

本项目基于以下开源项目开发(非完全原创),遵守其 MIT License:

- 上游原版:flymysql/dsh-remote
- npm 包:dsh-remote
- 上游作者:flymysql()
- 上游版本:0.5.10 → 本仓库 0.6.0
- 许可:MIT License,版权见 LICENSE(Copyright (c) 2026 dsh-remote contributors)

本仓库的改造内容

| 维度 | 上游 dsh-remote | 本仓库 dsh-ssh-remote |
|---|---|---|
| 连接模型 | 单连接池(切换机器时断开旧连接) | 多池并行(每台机器独立 SshPool,可同时连接) |
| 目标选择 | 仅 current 机 | 所有工具/路由支持 machineId 参数(不传 = current 机) |
| 状态查看 | 单机状态 | rw_info / /dsh-ssh-remote/status 列出全部机器及各自连接状态 |
| 新增工具 | — | rw_switch(切换 current)、rw_disconnect(断开指定机) |
| rc.2 适配 | ❌ peerDeps 仍为 ^0.1.0-rc.6,装上会破坏 scope 链 | ✅ 按 rc.2 用户 preset 挂载,进入 agent scope,不破坏核心功能 |

贡献归属

- 底层 SSH 引擎、SFTP 同步、机器注册表、多数 rw_ 工具与前端设置面板:来自 flymysql/dsh-remote
- 多池并行改造、machineId 参数、rw_switch、rc.2 preset 适配:本仓库(chai1110)的增量修改
- 上游如有新版本,欢迎优先参考上游变更并合并:

vendored 组件(vendor/ 目录)

本仓库同时收录了 chenw2759-wq/dsh-IDE(BSD-3-Clause)的两个已构建包,用于在同一个安装里提供 IDE 风格右侧面板与 SSH 引擎:

| 目录 | 包名 | 来源 | 协议 |
|---|---|---|---|
| vendor/dsh-aionui-panel | @deepseek-ai/dsh-client-ui-aionui-panel | chenw2759-wq/dsh-IDE | BSD-3-Clause |
| vendor/dsh-ssh | @deepseek-ai/dsh-ssh | chenw2759-wq/dsh-IDE | BSD-3-Clause |

说明:
- dsh-aionui-panel 提供右侧面板(文件树 / 预览 / 编辑 / 终端 / diff)。其面板设计参考 iOfficeAI/AionUi(Apache-2.0)重新实现,详见其 LICENSE。
- dsh-ssh 提供 SSH 引擎(连接池、隧道、网页终端)与 ssh_ agent 工具。
- 每个 vendored 目录都保留了 dsh-IDE 原始的 BSD-3-Clause LICENSE。完整声明见 THIRD_PARTY_NOTICES.md。

与主插件一起安装:

dsh plugin --profile web add file:$(pwd)/vendor/dsh-aionui-panel
dsh plugin --profile web add file:$(pwd)/vendor/dsh-ssh

✨ 功能

- 多机 SSH 注册表:任意多台服务器(host/port/user + 密码或私钥 + 口令),存于 ~/.dsh/remote-workspaces/machines.json
- 同时连接多台:每台机器独立连接池,互不干扰
- 远程工作区:为每台机器选择远程目录(自动补全/浏览),本地镜像 ~/.dsh/remote-workspaces//...
- 双向 SFTP 同步:rw_sync(远程→镜像)、rw_push(镜像→远程)
- Agent 远程操作工具(rw_ 系列):
- rw_info — 查看全部已注册机器及连接状态、当前工作区
- rw_connect / rw_switch — 注册 / 连接 / 切换机器
- rw_pick_workspace — 为指定机器设置远程工作区目录
- rw_list_dir / rw_read_file / rw_write_file / rw_exec — 浏览、读、写、执行远程文件/命令
- rw_sync / rw_push — 远程↔本地镜像 双向 SFTP 同步
- rw_disconnect — 断开指定机器(其他机器不受影响)
- 设置面板:Settings → 远程工作区(多机增删改查、当前机、测试连接)

🚀 安装(一键脚本,推荐)

适配 DSH 0.1.2-rc.1(老版本 0.1.1-rc.2 等同样适用,见「🔄 适配其他 DSH 版本」)。在一台装好 DSH 的机器上,只需三步:

1) 克隆本项目
git clone https://github.com/chai1110/dsh-ssh-remote.git
cd dsh-ssh-remote

2) 一键安装(自动装依赖 + 注册 symlink + 创建 SSH 增强预设)
bash install.sh

3) 重启 DSH
kill $(pgrep -f 'dsh web') 2>/dev/null; dsh web

然后重启 DSH、打开 DSH Web → 新建会话 → 选你平时用的模式即可(standard / code / minimal / cordis 都已内置 rw_ 工具,无需切换新模式)。

install.sh 自动做了什么:
1. 定位 DSH 全局安装目录(npm root -g)
2. 在本仓库目录安装依赖(ssh2 / schemastery 等),使插件自包含
3. 将插件 symlink 到 ~/.dsh/profiles/web/node_modules/dsh-ssh-remote(让 preset 的 bare name 可解析)
4. 增强每个官方模式:对 standard / code / minimal / cordis 各建同名用户 preset(首次复制官方原版 agent.cordis.yml + preset.yml,再追加 dsh-ssh-remote 插件行;first-root-wins:用户 preset 覆盖官方,模式名不变)——SSH 工具直接出现在你现有的每个模式里
5. 移除旧的「SSH 增强模式」(首个版本遗留,现已不需要单独模式)

脚本幂等:重复运行不会重复添加;卸载用 bash install.sh --uninstall(会从各模式移除 SSH 行并删除 symlink)。

🛠 手动安装(想自己控制每一步时)

与 install.sh 等价,分步如下:

第 1 步:克隆并安装插件依赖
git clone https://github.com/chai1110/dsh-ssh-remote.git
cd dsh-ssh-remote
npm install --no-save     # 安装 ssh2 / schemastery 等依赖

第 2 步:注册进 profile 的 node_modules
让 preset 的 bare name dsh-ssh-remote 能被解析(baseUrl = profile 目录):
mkdir -p ~/.dsh/profiles/web/node_modules
ln -sfn "$PWD" ~/.dsh/profiles/web/node_modules/dsh-ssh-remote

第 3 步:增强每个官方模式(SSH 工具加入现有模式)
对你要用的每个模式(standard / code / minimal / cordis)逐个执行:把官方 preset 复制到用户 preset 目录 ~/.dsh/.agent-presets//,再追加插件行。以全部四个为例:
GLOBAL_ROOT=$(npm root -g)
for p in standard code minimal cordis; do
mkdir -p ~/.dsh/.agent-presets/$p
首次:复制官方原版(之后保留,不覆盖)
[ -f ~/.dsh/.agent-presets/$p/agent.cordis.yml ] || \
cp "$GLOBAL_ROOT/@deepseek-ai/dsh/config/agent-presets/$p/agent.cordis.yml" \
~/.dsh/.agent-presets/$p/agent.cordis.yml
[ -f ~/.dsh/.agent-presets/$p/preset.yml ] || \
cp "$GLOBAL_ROOT/@deepseek-ai/dsh/config/agent-presets/$p/preset.yml" \
~/.dsh/.agent-presets/$p/preset.yml
追加 SSH 插件行(幂等)
grep -q "name: 'dsh-ssh-remote'" ~/.dsh/.agent-presets/$p/agent.cordis.yml || \
cat >> ~/.dsh/.agent-presets/$p/agent.cordis.yml  原理与 install.sh 第 4 步一致:用户 preset 与官方同名(first-root-wins 覆盖),模式名不变、工具自动多一组。

第 4 步:重启bash
kill $(pgrep -f 'dsh web') 2>/dev/null; dsh web
打开 DSH Web → 新会话直接选你平时用的模式(standard / code / minimal / cordis 任选,均已含 rw_* 工具)。

🛠 使用示例

对话方式(模型直接驱动 SSH)

我在 192.168.1.10 和 192.168.1.20 有两台服务器,帮我:
1. rw_connect 添加 192.168.1.10(root,密钥 /Users/me/.ssh/id_rsa)
2. rw_connect 添加 192.168.1.20(root,密码 xxx)
3. rw_pick_workspace (machineId=, path=/srv/app)
4. rw_exec (machineId=, command='docker compose ps')
5. rw_list_dir (machineId=, path=/srv/app) 看文件
6. rw_read_file (machineId=, path=/srv/app/src/main.py)
7. rw_write_file (machineId=, path=/srv/app/config.yml, content='...')
8. rw_sync (machineId=) 把远程工作区镜像到本地 ~/.dsh/remote-workspaces/

工具一览(都支持 machineId 指定目标机,不传 = 当前机)

| 工具 | 作用 |
|---|---|
| rw_info | 查看全部已注册机器及连接状态、当前工作区 |
| rw_connect | 注册/连接一台机器(新机器传 host/user/password/privateKeyPath) |
| rw_switch | 切换当前机器(后续不传 machineId 时默认用它) |
| rw_pick_workspace | 为指定机器设置远程工作区目录 |
| rw_list_dir / rw_read_file | 浏览 / 读取远程文件 |
| rw_write_file | 直接写远程文件(自动建父目录) |
| rw_exec | 在远程执行 shell 命令 |
| rw_sync / rw_push | 远程↔本地镜像 双向 SFTP 同步 |
| rw_disconnect | 断开指定机器(其他机器不受影响) |

设置面板方式

浏览器 DSH Web → 设置 → 远程工作区:增删改查机器、测试连接、切换当前机。

🔄 适配其他 DSH 版本 / 其他设备

本插件适配最新 @deepseek-ai/dsh@0.1.2-rc.1,同时兼容更早的 0.1.1-rc.2 等版本(以 ~/.dsh/.agent-presets/ 下同名用户 preset 覆盖机制挂载进现有模式)。换到其他版本时:

1. DSH 官方升级后:通常 preset 机制不变,bash install.sh --uninstall && bash install.sh 重装即可(脚本幂等,会检测版本)。
2. 其他设备部署:任意机器上 git clone → bash install.sh → 重启 DSH 即可,无需手动复制任何文件(依赖、symlink、preset 全部自动完成)。
3. 多台机器:插件的机器注册表存在 ~/.dsh/remote-workspaces/machines.json,每台设备独立维护;如需多设备共享同一批机器,可手动把该文件复制到新设备。

版本管理方式:本仓库用 git tag 标记适配点(如 v0.1.2-rc.1)。由于 preset 挂载机制跨 DSH 版本通用,同一套代码即可适配各版本——升级 DSH 后重跑 install.sh 即可,无需 checkout 不同 tag。

↩️ 卸载
bash
一键卸载(推荐)
bash install.sh --uninstall

或手动:删除 symlink,再从各模式 preset 移除 SSH 插件行
rm -f ~/.dsh/profiles/web/node_modules/dsh-ssh-remote
然后用编辑器在各 ~/.dsh/.agent-presets//agent.cordis.yml 中删除
末尾的「SSH 远程工作区」插件块;模式本身保留(其余行是官方原版)

🔗 相关

- 补丁集仓库(输入历史 + 编辑重发):
- 上游 dsh-remote:
- DeepSeek Harness 官方:

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群