chenw2759-wq
dsh-easyssh
这是一个ssh前端程序,可以让UI体现类似lab的功能!用于远程ssh快速相应,同时可以直接在前端操作/查看远程服务器上的信息与代码。
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
dsh-easyssh — DSH 远程 SSH 工作区插件
在 DeepSeek Harness(DSH)Web GUI 里一键进入 SSH 远程工作区模式:右上角(session log 左侧)配置
SSH 主机(密码 / 密钥,复用 ~/.dsh/dsh-ssh.json),进入后右侧面板(aionui-panel)的文件树自动切换
到远程服务器(上下分栏:上=文件树,下=可编辑代码区),模型本机的
read / write / edit / glob / grep 与 bash / 终端在 SSH 模式下透明地在远程服务器执行,LLM 与 Agent
循环仍在本机——「本地大脑、远程手脚」。右上角一键切回本机。
特性
- 接缝切换:通过 profile 补丁把
ctx.fs/ctx.subprocess切换为模式路由门面——本地模式委托 给部署自带的沙箱化实现,SSH 模式委托给 SFTP/SSH 远程实现(原子写、版本校验、CRLF 处理、流式输出、 PTY 终端)。模型工具零改动地远程执行。 - 远程文件系统:完整
@deepseek-ai/dsh-fs实现,路径/版本/原子写/CRLF/规范路径传输。 - 远程子进程:完整
@deepseek-ai/dsh-subprocess实现,exec + PTY 终端,输出溢出转储到本地。 - Web GUI 前端:右上角 SSH 配置/切换按钮;右侧面板随 SSH 模式自动切换数据源——本地显示会话工作 目录、SSH 模式显示远程目录(上下分栏:上=文件树(懒加载/搜索/变更),下=可编辑代码区,保存带 mtime 冲突检测,宽度/高度折叠按项目持久化)。
- 符号链接跟随:远程文件树正确识别符号链接目录(如 AutoDL 的
/root/autodl-tmp)。 - 显式远程工具:
remote_status/remote_ls/remote_read/remote_write/remote_mkdir/remote_rm/remote_rename/remote_glob/remote_grep,以及ssh_exec/ssh_upload/ssh_download。 - 多主机:GUI 配置多台主机(含 ProxyJump 跳板链、密钥 passphrase),一键切换。
- 设置页主机管理:设置面板内置「SSH 远程工作区」专区,主机增删改 / 测试连接 / 进入退出一键完成,
配置持久化在
~/.dsh/dsh-ssh.json。
界面截图

设置面板中的「SSH 远程工作区」专区:管理主机、测试连接、进入 / 退出 SSH 模式。

连接 SSH 后右侧面板显示远程文件树,下方可打开 .py 等文本文件查看并编辑保存(mtime 冲突检测)。

DSH Web GUI 主界面(深色主题):右上角 SSH 配置/切换按钮,右侧文件面板随会话工作目录展示文件树。

右侧上下分栏面板:上=文件树(文件名搜索定位),下=代码预览/编辑区;本地目录、SSH 远程目录自动切换。
仓库结构
dsh-easyssh/
├── packages/
│ ├── dsh-ssh/ # SSH 引擎:ssh2 连接池、exec/PTY/SFTP/隧道/集群(本插件依赖)
│ └── dsh-easyssh/ # 本插件:模式状态机、接缝门面、远程实现、Web GUI 前端
└── README.md
安装
# 1) 安装两个包到 web profile
dsh plugin --profile web add file:<repo>/packages/dsh-ssh
dsh plugin --profile web add file:<repo>/packages/dsh-easyssh
# 2) 在 <profile>/cordis.patch.yml 写入接缝切换补丁(禁用本地 fs/subprocess,插入门面行):
# - id: fs-sandbox
# disabled: true
# - id: subprocess
# disabled: true
# - insert:
# - id: easyssh-fs
# name: 'dsh-easyssh/fs'
# - id: easyssh-subprocess
# name: 'dsh-easyssh/subprocess'
# 3) 重启 dsh;回滚 = 把 cordis.patch.yml 恢复为 `[]` 重启。
使用
- 会话右上角(session log 左侧)点击 SSH → 填主机(别名/主机/端口/用户名/密码或密钥/远程根) → 保存并测试 → 进入 SSH 模式。
- 右侧面板自动切换到远程文件树;直接对 Agent 说「读/改远程文件」「在服务器上执行命令」——普通工具即远程执行。
- 路径规则:远程绝对路径直接用;相对路径以远程根
remoteRoot(默认~)为基准;不要用 Windows 本机路径。 - 右上角切换按钮随时回到本机模式。
安全
- 路由仅 loopback(同源校验);认证材料存
~/.dsh/dsh-ssh.json(0600)。 - 远程操作消耗真实远程资源,先确认再执行;SSH 模式下本机沙箱不对远程执行生效。
- 远程 grep/glob/realpath 依赖 GNU find/grep/coreutils。
致谢
远程 ctx.fs / ctx.subprocess 实现移植并改编自 UynajGI/dsh-ssh
(MIT,详见各文件头与 NOTICE),在其基础上补全了 Web GUI 前端与运行时模式切换。
License
BSD-3-Clause。远程实现的 MIT 版权归 UynajGI/dsh-ssh 原作者(见 NOTICE)。