🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

远端工作台 lemoncat7/dsh-ssh

DeepSeek Harnessv1.14.0
lemoncat74 天前有提交已提供中文文档扫描:含敏感能力

面向 DeepSeek Harness 的远端工作插件。主机管理、浏览器终端、文件传输、代理和 AI…

39.2/100
综合分
6
GitHub 星标
1,598
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @lemoncat7/dsh-ssh
npm 源 · @lemoncat7/dsh-ssh 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@lemoncat7/dsh-ssh @ 1.14.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 19:57:16

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 57 处,展示前 48 条)
  • 写入本地文件
    lib/store.js:20
    await mkdir(dirname(path), { recursive: true });
  • 读取本地文件
    lib/store.js:23
    const parsed = JSON.parse(await readFile(path, 'utf8'));
  • 写入本地文件
    lib/store.js:112
    await rename(temporary, this.path);
  • 删除本地文件
    lib/store.js:117
    await rm(this.path, { force: true });
  • 写入本地文件
    lib/store.js:118
    await rename(temporary, this.path);
  • 删除本地文件
    lib/store.js:121
    await rm(temporary, { force: true }).catch(() => { });
  • 读取本地文件
    lib/store.js:305
    await readFile(path);
  • 发起网络请求
    lib/ftp-adapter.js:200
    response = await ftp.request('EPSV');
  • 发起网络请求
    lib/ftp-adapter.js:204
    response = await ftp.request('PASV');
  • 发起网络请求
    lib/gist-sync.js:115
    const response = await this.request(file.raw_url, { headers: this.headers(), signal: AbortSignal.timeout(15_000) });
  • 发起网络请求
    lib/gist-sync.js:121
    const response = await this.request(url, {
  • 请求外部主机api.github.com
    lib/gist-sync.js:205
    const response = await this.githubHttp.request('https://api.github.com/meta', {
  • 发起网络请求
    lib/gist-sync.js:205
    const response = await this.githubHttp.request('https://api.github.com/meta', {
  • 读取本地文件
    lib/gist-sync.js:725
    content = await readFile(path, 'utf8');
  • 写入本地文件
    lib/gist-sync.js:753
    const preserved = await rename(path, backupPath).then(() => true, () => false);
  • 写入本地文件
    lib/gist-sync.js:768
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    lib/gist-sync.js:779
    await rename(temporary, path);
  • 删除本地文件
    lib/gist-sync.js:784
    await rm(path, { force: true });
  • 写入本地文件
    lib/gist-sync.js:785
    await rename(temporary, path);
  • 删除本地文件
    lib/gist-sync.js:788
    await rm(temporary, { force: true }).catch(() => { });
  • 发起网络请求
    lib/github-http.js:22
    agent = new ProxyAgent(value);
  • 发起网络请求
    lib/github-http.js:31
    return await fetch(input, init);
  • 发起网络请求
    lib/github-http.js:32
    return await undiciFetch(input, {
  • 读取本地文件
    lib/local-workspace.js:7
    const target = await resolveInside(await realpath(root), requestedPath);
  • 读取本地文件
    lib/local-workspace.js:8
    const attributes = await stat(target);
  • 读取本地文件
    lib/local-workspace.js:13
    const boundary = await realpath(root);
  • 读取本地文件
    lib/local-workspace.js:15
    const targetStat = await stat(target);
  • 读取本地文件
    lib/local-workspace.js:18
    const entries = await Promise.all((await readdir(target, { withFileTypes: true })).map(async (entry) => {
  • 读取本地文件
    lib/local-workspace.js:20
    const attributes = await lstat(entryPath);
  • 删除本地文件
    lib/local-workspace.js:94
    await rm(target.path, { recursive: target.recursive, force: false });
  • 读取本地文件
    lib/local-markdown-file.js:7
    const boundary = await realpath(root);
  • 写入本地文件
    lib/local-markdown-file.js:58
    commit: async () => { await rename(temporary, target); staged = false; },
  • 删除本地文件
    lib/local-markdown-file.js:60
    await unlink(temporary); },
  • 发起网络请求
    lib/github-device-auth.js:88
    const response = await this.request(url, {
  • 读取本地文件
    lib/session-file-download.js:35
    const root = await realpath(request.sessionDirectory);
  • 读取本地文件
    lib/session-file-download.js:36
    if (!(await lstat(root)).isDirectory())
  • 读取本地文件
    lib/session-file-download.js:52
    parent = await realpath(path.dirname(candidate));
  • 写入本地文件
    lib/session-file-download.js:84
    const output = createWriteStream(partial, { flags: 'wx', mode: 0o600 });
  • 读取本地文件
    lib/session-file-download.js:104
    if (await realpath(request.sessionDirectory) !== root || await realpath(parent) !== parent)
  • 删除本地文件递归
    lib/session-file-download.js:127
    await rm(temporary, { recursive: true, force: true }).catch(() => { });
  • 读取本地文件
    lib/session-file-download.js:150
    await lstat(target);
  • 读取本地文件
    lib/session-file-upload.js:26
    const root = await realpath(request.sessionDirectory);
  • 读取本地文件
    lib/session-file-upload.js:27
    const filename = await realpath(path.resolve(root, relative));
  • 读取本地文件
    lib/session-file-upload.js:31
    const original = await fileStat(filename);
  • 读取本地文件
    lib/session-file-upload.js:39
    if (await realpath(filename) !== filename || await realpath(request.sessionDirectory) !== root)
  • 发起网络请求
    lib/client-api.js:29
    const response = await fetch(`${SSH_API}${path}`, {
  • 发起网络请求
    lib/client-download.js:12
    response = await fetch(url, { credentials: 'same-origin', cache: 'no-store', redirect: 'error', signal });
  • 写入剪贴板
    lib/sync-panel.js:225
    onClose(); }, children: _jsxs("form", { ref: form, className: "dsh-ssh-sync-wizard", onSubmit: event => { event.preventDefault(); void advance(); }, c
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:api.github.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-api-workspace-controller@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • SSH会话
  • SFTP文件传输
  • 终端与端口转发

为 DeepSeek Harness 提供 SSH 会话、SFTP、终端、代理和端口转发

v1.14.12026-10-30
· 1.14.1 已验证 DSH 0.2.1-rc.5,保留 rc.2 最低支持基线。宿主范围限定为 >=0.2.1-rc.2 <0.2.2-0,不宣称兼容 0.2.2-alpha。 更新兼容说明:运行逻辑和现有数据格式保持不变。构建、回归和隔离宿主验证已通过。
v1.14.02026-10-30
· 1.14.0 适配 DeepSeek Harness 0.2.1-rc.2,Node.js ^22.19.0 或 >=24.0.0。 · 修复 #5:设置里可调默认 SSH 连接超时,主机编辑器可单独覆盖;新建主机时也生效。区分握手和已校验指纹后的认证超时。 · 可选终端连接复用,默认关闭。并发新建共用一个认证,独立 shell/目录/输出与关闭;会话隔离、空闲回收、配置/钩子变更失效、失败淘汰和取消保护。 · 原 20 个 SSH/文件操作收拢为 ssh 一个宿主工具,按需 list / describe / call,执行仍使用原参数校验、会话权限与审批策略。 · 设置保存串行合并,失败保留反馈,沿用插件现有布局与中英文文案。 迁移注意:自定义工具白名单需将原 SSH/文件工具名改为 ssh。旧会话中的操作名称仍可作为 tool 参数,但不再单独注册。挂载与授权数据无需迁移。连接复用不加开箱一次认证,且共享连接断开会影响其上的终端。 附件与 npm @lemoncat7/dsh-ssh@1.14.0 使用同一安装包。
v1.13.02026-10-27
设置增加「配置导入与导出」。无需连接 GitHub,即可下载由密码保护的 JSON 备份,或解密文件、预览数量后导入。 · 整个备份文件使用 scrypt 派生密钥和 AES-256-GCM 加密,包含地址及凭据;密码至少 8 位,文件最大 1 MB。备份密码不会改变同步密码。 · 备份范围:SSH、FTP/FTPS、项目目录、密钥库、代理库、分组代理和常用命令。会话授权、端口转发、本机运行设置及 GitHub 授权不包含在备份中。 · 导入为独立副本,保留现有配置;重新建立凭据、代理、跳板与项目引用,分组使用独立名称。重复导入会产生另一份副本。 · 导入先验证密码、文件和引用,再写入凭据与配置;配置提交失败时清理新增凭据。导入与云同步排队执行,已开启的自动同步会处理新增条目。 · 自动同步卡片恢复完整留白:桌面左右 24px、上下 20px,窄屏 18px;说明可换行,开关不挤压文字。 适配 DSH 0.2.1-rc.2,Node.js ^22.19.0 或 >=24.0.0。现有配置无需迁移,生产依赖未增加。 验证:199 项测试通过,包含文件加密往返、错误密码、文件篡改、导入引用、冷启动读取、写入失败清理、云同步排队及 HTTP 管理请求保护。真实组件在 375/1024/1600px、深浅色共六组隔离浏览器流程通过,覆盖下载、密码校验、解密预览、确认导入与既有同步配置流程。 浏览器测试使用隔离 API fixture,不修改生产 SSH 主机或触发真实 GitHub 同步。 · 本次 npm 升级同时包含 1.12.0 同步界面改版 同步从设置中独立为一级页面。智能同步、自动同步、冲突策略和备份数量直接显示在页面上;账号授权、同步空间和加密密码通过弹窗中的三步向导配置。 · 提供清晰的 Token 与浏览器授权入口,不再把首次授权必填项藏进高级设置。 · 使用基于 React Bits Stepper 适配的引导,支持返回修改、字段校验、错误重试、授权等待、键盘操作与减少动态效果。 · 已连接账号通过“管理配置”维护;切换工作台页面保留未保存的同步偏好。 · 账号验证独立于旧 Gist 的读取和解密,避免旧同步空间故障阻断重新授权。 · 自动更新同步状态;代理配置归入同步页,保存时保留当前实例的其他运行设置。 · 同步方式列表目前仅 GitHub Gist 可用,WebDAV、S3 明确标注尚未接入。 · 明确说明凭据加密范围:密码、私钥等凭据加密上传;主机地址等配置在非公开 Gist 中保持明文。 验证:TypeScript/客户端构建,195 项回归测试(新增授权与存储故障解耦用例),375/1024/1600px 明暗主题共六组浏览器流程,包括空值阻止提交、授权失败重试、返回保留输入、保存失败重试、OAuth、同步策略和代理设置。 界面测试使用隔离 API fixture,不连接或修改生产 SSH 主机,不触发真实 GitHub 同步。React Bits 授权声明见 docs/third-party/react-bits.md。 使用文档 · React Bits 授权声明 发布附件与 npm、已部署验证的安装包一致。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
DSH SSH 面向 DeepSeek Harness 的远端工作插件。主机管理、浏览器终端、文件传输、代理和 AI 会话授权都在同一个工作区里。 功能 - SSH 主机与分组、固定目录、密码 / 私钥 / SSH Agent 认证,以及分组代理。 - 多标签与分屏终端,SFTP 目录浏览,FTP / FTPS / SFTP 跨端点文件传输。 - 连接超时与主机覆盖值可配置;终端 SSH 连接复用可选(默认关闭),新标签共享认证,但各自保持独立 shell。 - AI 只加载一个 ssh 工具,通过 list / describe / call 按需发现、查询和执行操作,减少常驻工具占用的上下文。 - 支持文本、SQL、配置、图片、PDF 与静态 HTML 预览;无法安全预览或超出限制时提供下载。 - 按会话保留右栏标签、主机、目录、预览和滚动位置;打开面板时定位到当前挂载的主机。 - 远端命令、AI 终端与文件工具按会话授权,支持核验聊天授意后的临时 SSH 授权,也支持指定看板任务授权。 - 支持 HTTP CONNECT、SOCKS5、SSH 跳板与端口转发,提供凭据库,并支持加密 Gist 配置同步。 - 在设置中导入、导出密码加密的配置备份;导入前预览数量,导入后作为新副本添加。
展开完整文档(README 剩余 1 节)
DSH SSH

面向 DeepSeek Harness 的远端工作插件。主机管理、浏览器终端、文件传输、代理和 AI 会话授权都在同一个工作区里。

功能

- SSH 主机与分组、固定目录、密码 / 私钥 / SSH Agent 认证,以及分组代理。
- 多标签与分屏终端,SFTP 目录浏览,FTP / FTPS / SFTP 跨端点文件传输。
- 连接超时与主机覆盖值可配置;终端 SSH 连接复用可选(默认关闭),新标签共享认证,但各自保持独立 shell。
- AI 只加载一个 ssh 工具,通过 list / describe / call 按需发现、查询和执行操作,减少常驻工具占用的上下文。
- 支持文本、SQL、配置、图片、PDF 与静态 HTML 预览;无法安全预览或超出限制时提供下载。
- 按会话保留右栏标签、主机、目录、预览和滚动位置;打开面板时定位到当前挂载的主机。
- 远端命令、AI 终端与文件工具按会话授权,支持核验聊天授意后的临时 SSH 授权,也支持指定看板任务授权。
- 支持 HTTP CONNECT、SOCKS5、SSH 跳板与端口转发,提供凭据库,并支持加密 Gist 配置同步。
- 在设置中导入、导出密码加密的配置备份;导入前预览数量,导入后作为新副本添加。

安装

最低支持 DeepSeek Harness 0.2.1-rc.2,已在 0.2.1-rc.5 上完成构建与回归测试(宿主仍为 RC),需要 Node.js ^22.19.0 或 >=24.0.0。使用其他宿主版本时,请先查阅兼容说明和对应版本的发布说明。

dsh plugin --profile web add @lemoncat7/dsh-ssh@latest

安装或升级后重启对应的 DSH Profile;web 请按你实际使用的 Profile 调整。

打开「远端 → SSH 面板」添加主机,测试连接并确认主机指纹。浏览主机不会自动授予 AI 访问权限;先为当前会话挂载主机或文件端点,再选择命令、终端和传输权限。

使用边界

凭据由 DSH 凭据服务保存,管理界面不返回明文。SSH 与文件端点授权相互独立,文件下载到 DSH 会话目录不等于下载到浏览器所在电脑。会话浏览状态只在当前页面生命周期内保留,刷新后不保留。首次连接需确认指纹,公开端口监听默认拒绝。

文档

- 使用、工具与配置
- 会话与文件浏览状态
- 聊天临时授权与任务委派
- 架构与终端生命周期
- 版本与发布说明
- 发布维护约定
预览分享卡片长什么样 ↓lemoncat7/dsh-ssh
分享 · DeepSeek Harness Hub
lemoncat7/dsh-ssh

面向 DeepSeek Harness 的远端工作插件。主机管理、浏览器终端、文件传输、代理和 AI…

这是你的仓库?认领条目

回到顶部