← 返回列表
⚠ 装前注意
Deepseek harness SSH插件
基本兼容但装前注意:npm 同名包「dsh-ssh」归属 uynajgi/dsh-ssh,装到的可能不是本插件 · 最近上游提交 2026/9/5 · 已提供中文文档
综合分
29
GitHub 分
29
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dmz2922990/dsh-sshnpm 同名包「dsh-ssh」归属 uynajgi/dsh-ssh,装到的可能不是本插件,改用 GitHub 源安装
信任档位:已验证本站已于 0 天前真实安装成功(L4 · 真实安装)
- 是什么
- dsh 原生插件 · other
- 装得上吗
- 本站已真实安装成功(L4 · 真实安装,非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 20 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/22(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-ssh @ 0.3.0-pre
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
npm 同名包「dsh-ssh」归属 uynajgi/dsh-ssh,装到的可能不是本插件
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 13:50:05
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-ssh
DeepSeek Harness (DSH) 插件:SSH 主机管理 + 远程 Bash 执行。
提供三种形态:
| 形态 | 位置 | 适用 |
|---|---|---|
| Host 插件(dsh plugin 安装,推荐) | index.mjs / client.js | 全局挂载,所有 session 的 agent 直接获得工具;web profile 附带 GUI 设置页面 |
| Agent 预设 | preset/ | 每个使用该预设的新 session 自动获得全部 SSH 工具与服务,重启持久 |
| 动态 Cordis 插件(会话临时) | plugin/ | 在任意会话中通过 cordis_define 粘贴加载,进程内有效 |
截图
Web GUI 设置页面
设置页面
Agent 使用 ssh_bash
Agent 使用 ssh_bash
功能
- 📋 主机管理(增删改查) — 持久化到 ~/.dsh/ssh-hosts.json
- 🔧 模型工具:ssh_host_list / ssh_host_add / ssh_host_update / ssh_host_remove / ssh_host_copy / ssh_bash / ssh_upload / ssh_download
- 🔌 Cordis 服务 ssh.hosts(预设形态下隔离 realm,每挂载一份),其他插件可 ctx.get('ssh.hosts') 调用
- 🔑 三种认证:agent(BatchMode 免交互)/ key(私钥)/ password(SSH_ASKPASS 机制,无需 sshpass、不申请 pty,可在受限沙箱内运行)
- 📦 文件传输:ssh_upload / ssh_download(≤128MB,base64 over ssh,无需 scp,BusyBox 设备可用;父目录自动创建)
- 🐚 自适应远端 Shell:默认优先 bash、无则回落 sh/ash(BusyBox/嵌入式设备),可按主机或按次调用强制指定
正式安装(dsh plugin,推荐)
一键安装到 web profile:
dsh plugin --profile web add https://github.com/dmz2922990/dsh-ssh.git
重启 dsh web,所有 session(任意 preset)的 agent 直接拥有 ssh_bash 等工具,
设置中出现「SSH 主机」管理页面(/dsh-ssh/api 后端由同一插件提供)
插件在 package.json 中声明了 dsh.bundle,dsh plugin add 会自动将其挂载为 profile 的 bundle 层——无需手动编辑 cordis.patch.yml。
正式安装(Agent 预设)
git clone https://github.com/dmz2922990/dsh-ssh.git ~/.dsh/.agent-presets/ssh
若目录已存在,先删除旧的:rm -rf ~/.dsh/.agent-presets/ssh
然后新建 session 时选择 preset「SSH Agent」即可 —— agent 直接拥有上表全部工具,主机配置自动从 ~/.dsh/ssh-hosts.json 读取(agent 无需、也不会直接读该文件)。
预设结构:
ssh/ # ~/.dsh/.agent-presets/ssh/
├── preset.yml # 显示名与描述
├── agent.cordis.yml # 完整组合(standard 副本 + ssh 组行)
└── plugins/
└── ssh.mjs # 静态 Cordis 插件(服务 + 工具,无外部依赖)
组合中的关键行(发布 ssh.hosts 服务,须置于 isolate realm):
- id: ssh
name: cordis:group
group: true
isolate:
ssh.hosts: true
config:
- id: ssh-plugin
name: ./plugins/ssh.mjs
临时安装(动态插件,单会话)
在 DSH 会话中调用 cordis_define:plugin: {"kind":"new","idPrefix":"ssh"},
code.host 粘贴 plugin/host.js、code.client 粘贴
plugin/client.js(额外附带 GUI 设置页面),再 cordis_run 激活。
远程执行原理
ssh -o StrictHostKeyChecking=accept-new -o ConnectTimeout=15 [-i key] [-p port] user@host -- bash -s
脚本经 stdin 传给远端 bash -s;密码认证走 SSH_ASKPASS + SSH_ASKPASS_REQUIRE=force
(辅助脚本 ~/.dsh/.ssh-askpass.sh,权限 700,仅回显环境变量中的密码)。
ssh.hosts 服务 API
const ssh = ctx.get('ssh.hosts')
await ssh.list() // 所有主机(不含密码明文)
await ssh.get(ref) // ref: id | name | user@host | host
await ssh.add({ id, host, port, user, name, note, auth: { type, keyPath, password }, tags })markdown
await ssh.update(id, patch) // 部分字段更新;auth 留空字段保持原值
await ssh.remove(id)
await ssh.bash(ref, command, timeoutMs) // { ok, exitCode, stdout, stderr, timedOut, ... }
await ssh.upload(ref, localPath, remotePath) // { ok, bytes, ... } ≤128MB
await ssh.download(ref, remotePath, localPath) // { ok, bytes, ... } ≤128MB
await ssh.copy(ref, { id, host, name }) // 克隆主机配置(含认证)
安全提示
- 密码以明文存储于 ~/.dsh/ssh-hosts.json,建议优先使用密钥认证
- ssh_host_list 等返回值不含密码,只有 hasPassword 布尔值