dsh-ssh
其他 活跃维护

dsh-ssh

onlca/dsh-ssh

SSH远程开发插件,可将目标主机的指定目录直接映射为本地工作区,无需在远程主机安装任何依赖,本地直接读写操作远程文件,无需手动同步,开箱即用。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
127 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:onlca/dsh-ssh
git clone https://github.com/onlca/dsh-ssh.git
git clone git@github.com:onlca/dsh-ssh.git
README.md main

@onlca/dsh-ssh

DeepSeek Harness 插件:把远程主机的目录设为远程工作区,read/write/edit/glob/grep/bash 全部直达目标主机,与本地目录体验一致。

特性

  • 零目标主机安装:目标主机唯一前提是 sshd 在运行,无需安装任何 agent,首次访问只读探测;
  • 零认证代码:原生读取 ~/.ssh/config(Host 别名、IdentityFile、ProxyJump)与 SSH agent,支持自定义 ssh 命令;
  • 官方 seam:实现 Harness 预留的 ctx.fs / ctx.shell 后端接口并按工作区自动分流,工具层零改动;
  • 可靠终止:超时/中止会终止远端进程组,不留孤儿进程;
  • 名称区分:远程工作区自动命名 SSH · user@host:path,侧栏带地球图标。

安装

npx @onlca/dsh-ssh install

一行完成:插件装进 ~/.dsh/profiles/* 并写入补丁层(替换本机 fs/shell 为路由层),
同时自动修补本机 DSH 前端的按钮/wire 协议(幂等)。重启 dsh 生效。卸载:

npx @onlca/dsh-ssh uninstall

使用

  1. 侧栏点 "添加远程工作区"(地球图标,位于"添加工作区"右侧);
  2. 弹窗输入 SSH 命令与远端路径,如 ssh user@host + /home/user/project;
  3. 进入会话后所有工具直达远端,工具输出路径显示为 ssh://user@host/...

glob/grep 需要目标主机装有 ripgrep(apt install ripgrep / apk add ripgrep);其余工具仅需 sshd。

实现说明

  • 传输层为 OpenSSH CLI 通道(ControlMaster 复用),文件操作为 POSIX/busybox 兼容的
    远端协议脚本(原子写、版本守卫编辑),用户可控数据只经 stdin/stdout,无注入面;
  • Web UI 按钮与 workspace.createRemote wire 通过直接修补已安装 DSH 的 5 个
    bundle 实现(见 patches/webui/),由安装器幂等应用——DSH 升级后重跑安装器即可。

开发

npm install --cache .npm-cache   # 本地缓存,规避全局 npm 缓存权限问题
npm run build                     # 构建全部内部包与可发布单包
npm run test:unit                 # 纯单元测试
npm run test:integration          # Docker Alpine/Debian 双方言集成测试(需 docker)
npm run e2e                       # headless 端到端(需 docker)

结构:packages/{transport,fs-remote,exec-ssh,routing,workspace} 为内部私有包,
packages/dsh-ssh 为发布单包(esbuild 全量内联,零外部 @deepseek-ai/* 依赖);
发布流程见 docs/publishing.md

许可

MIT,见 LICENSE