편집자 노트

harryopo/dsh-remote-ide

SSH Remote IDE for DeepSeek Harness: connect via SSH and the IDE goes remote — explorer browses the server, editor reads/writes over SFTP, terminal is a live SSH PTY. Dual-face DSH plugin.

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-remote-ide

npm version License

DeepSeek Harness (DSH) 的 SSH 远程 IDE 插件 —— SSH 连接服务器后,整个 IDE 进入远程模式:资源管理器浏览的是服务器的文件目录,编辑器通过 SFTP 读写远程文件,终端就是 SSH 终端。服务器上无需安装任何 Agent,无需任何远程配置,只要有 SSH 即可。

English: README.md


为什么需要它

DSH 是强大的编码 Agent,但它的 Web GUI 只能操作本地文件。当代码、数据或生产环境在远程服务器上时,你只能另开 SSH 窗口,或依赖各种同步工具。dsh-remote-ide 把整个 IDE 搬进 DSH:

┌──────────────────────────── dsh web GUI ────────────────────────────┐
│  侧边栏: [远程 IDE] → 打开右侧 IDE 工作台                             │
│  ┌─────────── 对话区(保留)────────────┬───────────────────────┐  │
│  │  agent 对话持续进行,边聊边开发      │  远程 IDE             │  │
│  │                                     │  ┌─────────────────┐ │  │
│  │                                     │  │ 远程文件树       │ │  │
│  │                                     │  ├─────────────────┤ │  │
│  │                                     │  │ 编辑器标签栏      │ │  │
│  │                                     │  │ (SFTP 读写)      │ │  │
│  │                                     │  ├─────────────────┤ │  │
│  │                                     │  │ xterm SSH 终端   │ │  │
│  │                                     │  └─────────────────┘ │  │
│  └─────────────────────────────────────┴───────────────────────┘  │
│                    │                    ↑                          │
│                    └── dsh 宿主进程 ────┘  ssh2 连接池             │
└────────────────────────────────────────────────────────────────────┘

功能特性

  • SSH 主机管理 —— 密码 / 私钥认证(支持 passphrase)、ProxyJump 跳板机、从 ~/.ssh/config 一键导入、连接测试。凭据存于 ~/.dsh/dsh-remote-ide.json(0600),密钥永不发送到浏览器。
  • 远程文件资源管理器 —— 基于 SFTP 的懒加载目录树(子树缓存),支持刷新、内联重命名/删除、新建文件/文件夹。
  • 远程编辑器 —— CodeMirror 6,支持 TS/JS/Python/JSON/HTML/CSS/SQL/XML/Markdown;打开文件经 SFTP 读取,Ctrl/Cmd+S 直接保存回服务器;二进制嗅探 + 2MB 读取上限保证安全。
  • 远程终端 —— xterm.js + WebSocket 隧道 SSH PTY,支持自适应尺寸、防丢输入缓冲、背压处理。
  • Agent 工具(路线图) —— 远程 read/write/exec 工具,让 DSH Agent 本身能操作已连接的服务器。
  • better-sidebar 集成 —— 安装了 dsh-better-sidebar 时,自动在其工作台注册「远程 IDE」标签页(加法式;不装也能用独立面板)。
  • 国际化 —— 中 / 英双语,跟随 DSH 语言。

安装

需要 DSH(rc.6+)且已初始化 web profile,Node ≥ 22。

dsh plugin --profile web add dsh-remote-ide
dsh web

安装后重启 dsh web(host 半变更),侧边栏出现「远程 IDE」入口。

源码安装(开发调试)

git clone https://github.com/<you>/dsh-remote-ide.git
cd dsh-remote-ide
pnpm install
pnpm build
dsh plugin --profile web add link:$(pwd)     # Windows 可用 link:C:\path\to\repo
dsh web

快速开始

  1. 从侧边栏打开「远程 IDE」面板。
  2. 添加主机(别名/地址/端口/用户/认证方式)—— 或点击「从 ~/.ssh/config 导入」。
  3. 点击连接。资源管理器切换到服务器主目录。
  4. 浏览、点开文件编辑,Ctrl+S 保存到服务器。
  5. + 新终端 在面板内打开 SSH shell。

工作原理

一个纯官方 SDK(@deepseek-ai/dsh-*)构建的双面 DSH 插件,零 DSH 源码改动:

  • Host 半src/index.ts,Node 进程):SshEngine(ssh2 连接池、跳板机、exec、PTY shell、SFTP CRUD)、/api/dsh-remote-ide/* REST 路由族、/api/dsh-remote-ide/terminal WebSocket 升级。所有路由均有 loopback 信任围栏。
  • 浏览器半src/client/,Web GUI):主机管理、远程文件树、CodeMirror 编辑器、xterm 终端。侧边栏入口采用 DOM 注入 + MutationObserver 自愈(DSH shell 未开放插件槽位),沿袭 dsh-ssh 的做法。
宿主进程                         浏览器(dsh web GUI)
┌──────────────────────┐        ┌──────────────────────────────┐
│ SshEngine (ssh2)     │ REST/WS │ 侧边栏入口(DOM 注入)        │
│  ├─ 连接池            │◄───────►│ 远程 IDE 面板                │
│  ├─ exec / PTY shell │         │  ├─ 主机管理                 │
│  ├─ SFTP CRUD        │         │  ├─ 远程文件树               │
│  └─ 跳板机            │         │  ├─ CodeMirror 编辑器        │
│ store ~/.dsh/…json   │         │  └─ xterm 终端               │
└──────────────────────┘         └──────────────────────────────┘

安全说明

  • 所有 API 路由仅限本机回环(127.0.0.1 / localhost + 同源校验)。dsh web 暴露到局域网时,远程执行面不会被暴露。
  • 密码以明文存于用户目录 0600 权限文件(~/.dsh/dsh-remote-ide.json)——与 dsh-ssh 同一模型;建议优先使用密钥认证。
  • 浏览器永远拿不到已存密钥(只返回脱敏摘要)。
  • 远程文件读取上限 2MB;二进制文件拒绝并给出明确错误。

路线图

  • 主机管理 + ssh-config 导入
  • 远程资源管理器(SFTP 目录树)
  • 远程编辑器(CodeMirror + SFTP 读写)
  • 远程终端(WebSocket SSH PTY)
  • Agent 工具(按官方 defineTool 契约):remote_read / remote_write / remote_exec,带类型化参数 schema、output.schema + 纯函数 presentCall/presentResult 渲染意图、长任务经 ctx.jobs.startrun_in_background —— 让 DSH Agent 在对话里直接操作已连接的服务器。
  • conversation node 集成(官方外部 UI 路径):host 半产出持久 SessionEventMap 事件族(remote-ide/*),浏览器半经 ctx.conversationEvents.register + ctx.slots.inject('conversation.chat.node') 注册 ConversationNodeDefinition + keyed 渲染器,远程执行结果以可回放行渲染进聊天流。
  • 远程 Git 面板(status / diff / commit 走 SSH)
  • 文件搜索 + 带进度的上传/下载
  • 端口转发隧道

致谢

本项目站在 DSH 插件生态的肩膀上:

  • dsh-ssh(Apache-2.0)—— SSH 引擎架构、WebSocket 终端协议、DOM 注入模式均以此为基石。
  • dsh-better-sidebar(MIT)—— 本地 IDE 工作台,本插件通过其服务 API 集成。
  • ssh2(MIT)、xterm.js(MIT)、CodeMirror(MIT)—— 底层库。

许可证

Apache-2.0

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 Apache-2.0 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.