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
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
快速开始
- 从侧边栏打开「远程 IDE」面板。
- 添加主机(别名/地址/端口/用户/认证方式)—— 或点击「从 ~/.ssh/config 导入」。
- 点击连接。资源管理器切换到服务器主目录。
- 浏览、点开文件编辑,
Ctrl+S保存到服务器。 - + 新终端 在面板内打开 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/terminalWebSocket 升级。所有路由均有 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.start走run_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)—— 底层库。
许可证
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
저장소가 Apache-2.0 라이선스를 선언했습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.