面向 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-sshnpm 源 · @lemoncat7/dsh-ssh 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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.comlib/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、终端、代理和端口转发
最近更新
在 GitHub 查看全部 →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 会话目录不等于下载到浏览器所在电脑。会话浏览状态只在当前页面生命周期内保留,刷新后不保留。首次连接需确认指纹,公开端口监听默认拒绝。 文档 - 使用、工具与配置 - 会话与文件浏览状态 - 聊天临时授权与任务委派 - 架构与终端生命周期 - 版本与发布说明 - 发布维护约定
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
lemoncat7/dsh-ssh
面向 DeepSeek Harness 的远端工作插件。主机管理、浏览器终端、文件传输、代理和 AI…
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目