跳到主内容

dsh-easyssh/packages/dsh-easyssh

24Star3Fork0Issue0Watching

让 DSH Web GUI 一键切换至 SSH 模式,在远程服务器上读写代码、跑命令,左侧文件树与 LLM 工具透明跟随。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科

ⓘ 此插件是大仓库 chenw2759-wq/dsh-IDE 的子包,星数与活跃度统计的是整个仓库。

语言
TypeScript
License
BSD-3-Clause
分支
main
dshdsh-plugin

安装

命令web profile
$ dsh plugin --profile web add --allow-build=dsh-easyssh github:chenw2759-wq/dsh-IDE#path:packages/dsh-easyssh

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 chenw2759-wq/dsh-IDE/packages/dsh-easyssh:先查看仓库 https://github.com/chenw2759-wq/dsh-IDE 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

dsh-easyssh 是 DSH Web GUI 的 SSH 远程工作区插件:让用户在聊天界面右侧切换到「SSH 模式」,使本机的 LLM 与 Agent 循环通过 SSH/SFTP 透明地读写远程服务器上的文件、运行命令,而无需切换终端。

核心能力

  • 在会话头部新增两个按钮:配置 SSH 主机(别名 / 主机 / 端口 / 用户名 / 密码或密钥)、一键进入或退出 SSH 模式
  • 进入 SSH 模式后,左侧文件树面板自动切换到远程根目录,支持懒加载、文件名搜索、文本预览与编辑、保存时带 mtime 冲突检测
  • 把模型本机的 read / write / edit / glob / grep 与 bash / 终端工具在 SSH 模式下透明切换到远程主机执行
  • 提供 9 个显式 remote_* 工具(status / ls / read / write / mkdir / rm / rename / glob / grep),路径被限制在远程根目录内
  • 复用 dsh-ssh 的主机配置与持久 SSH 连接池(~/.dsh/dsh-ssh.json),并通过 system-prompt 宣告告知 LLM 当前的工作模式与路径规则
  • 在 Settings 页面提供 SSH 主机管理页(别名、密码/密钥、远程根目录),与头部配置对话框共享同一份数据

技术实现

  • 语言: TypeScript(双半区产物:host 端 Node.js + client 端 React/浏览器 bundle)
  • 关键依赖: @deepseek-ai/dsh-ssh(SSH 引擎与主机存储,工作区 file 依赖)、@deepseek-ai/dsh-fs-sandbox / dsh-subprocess-local(本地后端门面)、@deepseek-ai/dsh-client-runtime / dsh-client-ui-slots(浏览器侧注入与插槽注册)
  • 架构模式: 三行 cordis 插件 + profile patch:主行(easyssh)提供 mode store、路由、agent 工具、提示词宣告与共享 core;patch 禁用 fs-sandbox / subprocess,由 easyssh-fs / easyssh-subprocess 两个接缝行接管 ctx.fs 与 ctx.subprocess,按当前模式路由到本地沙箱实现或 SFTP/SSH 实现
  • 入口文件: packages/dsh-easyssh/src/index.ts(host 半区)、packages/dsh-easyssh/src/client/index.ts(client 半区)、packages/dsh-easyssh/cordis.patch.yml(profile 补丁)

适用场景

适合需要让 AI 直接在自己常用的开发服务器、内网机器或 CI 节点上读写代码、跑命令、又不想离开 DSH 聊天界面的开发者:例如让 Agent 在远程服务器上重构老项目、批量改配置、跑构建与脚本。SSH 模式下文件树、模型工具、提示词自动跟随目标主机,普通用户在网页上点击切换即可。

前置依赖与兼容性

依赖最低版本说明
DSH(peerDependencies)^0.1.0-rc.6需 host/client 同系列 SDK(fs / fs-sandbox / subprocess / subprocess-local / tools / system-prompt / client-runtime / client-connection / client-locale / client-ui-settings / client-ui-sidebar / client-ui-slots / host-webserver / timeout / system-prompt)
Node.js^22.19.0 或 >=24.0.0见 packages/dsh-easyssh/package.json#engines
远程主机SSH 服务 + GNU find/grep/coreutils远程 ls/read/write/grep/glob 走 ssh2 与 SFTP;远程 grep/glob 依赖 -printf / -mz / base64 -w0 等 GNU 工具
客户端平台macOS / Windows / Linux客户端为浏览器(Web GUI),跨平台
原生模块无纯 JavaScript 实现,依赖 ssh2 等纯 JS 包

安装方式

dsh plugin --profile web add github:chenw2759-wq/dsh-IDE/packages/dsh-easyssh

配置项

配置类型说明默认值
enabled布尔总开关;关闭后不再注册路由与工具、模式切换停用(关闭需手动撤销 profile patch)true
announceToAgent布尔是否向模型注入提示词宣告段(说明 SSH 模式语义与路径规则)true

提示:模式状态(local / remote、alias、remoteRoot)在 host 进程内为单例,会话头部按钮随时切换。

常见问题

Q: 这个插件和官方 dsh-ssh 是什么关系?

A: dsh-easyssh 复用 dsh-ssh 的 SSH 引擎与主机存储(同一份 ~/.dsh/dsh-ssh.json),并在其上加一层「工作区」:自动接缝切换让模型的 read/write/edit/bash 在 SSH 模式下直接作用于远程,而 dsh-ssh 主要负责手动 ssh_exec / ssh_upload / ssh_download 等运维操作。

Q: 安装后还需要手动改配置文件吗?

A: 不需要。插件自带的 cordis.patch.yml 会在安装时作为 profile bundle layer 自动应用:禁用 fs-sandbox / subprocess 行并插入 easyssh-fs / easyssh-subprocess 两条接缝行,重启 DSH 即生效。

Q: SSH 模式下模型的普通工具会受影响吗?

A: 会。read/write/edit/glob/grep 与 bash/终端在 SSH 模式下透明切换到远程主机执行;路径以远程根目录(默认登录用户 ~)为基准,相对路径以 remoteRoot 为锚点。显式的 remote_* 工具与 dsh-ssh 的 ssh_* 工具仍可用作精确操作。

Q: 配置文件存在哪里?是否安全?

A: SSH 主机与凭据存放在 dsh-ssh 的 ~/.dsh/dsh-ssh.json(权限 0600/0700);HTTP API(/api/dsh-easyssh/*)仅接受 127.0.0.1 / localhost loopback 请求并校验同源,禁止跨站访问与 LAN 暴露。

Q: 支持哪些平台?Windows 远程主机可以吗?

A: 客户端跨平台(macOS / Windows / Linux 浏览器均可);远程主机需要 SSH + SFTP + GNU find/grep/coreutils(-printf / -mz / base64 -w0)。POSIX 主机(Linux / macOS)支持最完整;SSH 模式下不要使用 Windows 本机路径(C:\、M:\ 等),请改用 ssh_exec 走远端 shell。

Q: 有哪些使用限制?

A: 模式状态为 host 进程内单例(多标签页共享,P2 才按 sessionId 隔离);左侧预览仅 80KB 以下文本,二进制/超大文件请用 ssh_exec / ssh_download;远程 grep/glob 限深 4~6 层、限 200 条;SSH 模式下本机沙箱不对远程执行生效。

Q: 如何卸载?

A: 通过 dsh plugin remove 卸载并重启 DSH 即可恢复原 fs-sandbox / subprocess 行;若之前手动应用过 patch,需把 profile 的 cordis.patch.yml 恢复为 []。

上手难度

入门 — 安装一行命令即生效,会话头部出现 SSH 按钮,无需任何额外配置;首次使用只需在对话框里填主机、用户名、密码/密钥即可进入远程工作区。

已知问题与限制

  • 模式状态为 host 进程内单例,多标签页共享同一状态(P2 才按 sessionId 隔离,见 README §已知限制)
  • 文件预览仅限 80KB 以下文本,二进制文件(含 NUL 字节)和超大文件会被拒绝,建议改用 ssh_exec / ssh_download
  • 远程 grep/glob 依赖 GNU find/grep/coreutils(-printf / -mz / base64 -w0),最大深度 4~6 层、最多 200 条
  • 远程命令 printf %s "$HOME" 用于解析登录用户家目录,仅在远程 shell 支持此语法时有效(默认 POSIX)
  • SSH 模式下本机内核沙箱不对远程进程生效,remote_* 工具描述明确要求「先确认再执行」
  • pwsh 工具在 POSIX 远程主机上不可用,应改用 bash 语义命令或 ssh_exec
  • /api/dsh-easyssh/* 路由接收的 JSON 请求体上限 4MB(routes.ts:16 MAX_JSON_BODY_BYTES),超大将返回 400
  • 真实路径解析对符号链接有 32 跳上限保护,超过会抛 outside-root 错误

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/chenw2759-wq/dsh-IDE/packages/dsh-easyssh)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录