DeepSeek Harness Web 的多机远程桌面插件,由 Apache Guacamole 驱动。
30.3/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add andarmworld/dsp-rdp该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 24 处,展示前 24 条)
- 写入本地文件lib/index.js:17
mkdirSync(directory, { recursive: true, mode: 448 }); - 读取本地文件lib/index.js:18
if (lstatSync(directory).isSymbolicLink()) throw new Error("Private key directory must not be a symlink"); - 写入本地文件lib/index.js:19
chmodSync(directory, 448); - 写入本地文件lib/index.js:20
if (!existsSync(file)) writeFileSync(file, randomBytes(32), { flag: "wx", mode: 384 }); - 读取本地文件lib/index.js:20
if (!existsSync(file)) writeFileSync(file, randomBytes(32), { flag: "wx", mode: 384 }); - 读取本地文件lib/index.js:21
if (lstatSync(file).isSymbolicLink()) throw new Error("Private key must not be a symlink"); - 写入本地文件lib/index.js:22
chmodSync(file, 384); - 读取本地文件lib/index.js:23
this.key = readFileSync(file); - 发起网络请求lib/index.js:216
response = await fetch(`${this.baseUrl}/api${path}`, { ...options, redirect: "error", signal: AbortSignal.timeout(8e3) }); - 发起网络请求lib/index.js:246
const reply = await this.request("/tokens", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", ...passwordLogin ? {} : - 发起网络请求lib/index.js:254
return this.request(`${DATA}${path}`, { ...options, headers: { "Guacamole-Token": token, ...options.body === void 0 ? {} : { "Content-Type": "applicat - 发起网络请求lib/index.js:479
return { path: `/api/rdp/${endpoint}`, methods: ["POST"], requestBody: "buffered", async fetch(request) { - 写入本地文件server/credentials.mjs:8
mkdirSync(directory, { recursive: true, mode: 0o700 }); - 读取本地文件server/credentials.mjs:9
if (lstatSync(directory).isSymbolicLink()) throw new Error('Private key directory must not be a symlink'); - 写入本地文件server/credentials.mjs:10
chmodSync(directory, 0o700); - 写入本地文件server/credentials.mjs:11
if (!existsSync(file)) writeFileSync(file, randomBytes(32), { flag: 'wx', mode: 0o600 }); - 读取本地文件server/credentials.mjs:11
if (!existsSync(file)) writeFileSync(file, randomBytes(32), { flag: 'wx', mode: 0o600 }); - 读取本地文件server/credentials.mjs:12
if (lstatSync(file).isSymbolicLink()) throw new Error('Private key must not be a symlink'); - 写入本地文件server/credentials.mjs:13
chmodSync(file, 0o600); - 读取本地文件server/credentials.mjs:14
this.key = readFileSync(file); - 发起网络请求server/fetch.mjs:5
return { path: `/api/rdp/${endpoint}`, methods: ['POST'], requestBody: 'buffered', async fetch(request) { - 发起网络请求server/guacamole.mjs:16
response = await fetch(`${this.baseUrl}/api${path}`, { ...options, redirect: 'error', signal: AbortSignal.timeout(8000) }); - 发起网络请求server/guacamole.mjs:38
const reply = await this.request('/tokens', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', ...(passwordLogin ? {} : - 发起网络请求server/guacamole.mjs:46
return this.request(`${DATA}${path}`, { ...options, headers: { 'Guacamole-Token': token, ...(options.body === undefined ? {} : { 'Content-Type': 'appl
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-storage-domain@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsp-rdp:DSH 多机器远程桌面插件
适配 dsh Web 0.2.0-rc.2,通过 Apache Guacamole 1.6.0 提供多机器远程桌面。0.2.0 的机器配置与完整连接记录保存在本 DSH 实例;不同浏览器访问同一实例时使用相同记录。
表单依次为机器名称、Windows 登录名、密码、连接地址、连接和添加机器。连接地址填写主机名、IPv4 或方括号 IPv6,以及可选端口(默认 3389),例如 192.168.1.10:3389。添加只保存配置;连接保存配置后打开网关。密码可留空,在网关的 NLA 登录界面手动输入。只有勾选“在服务器加密记住密码”才会持久保存密码;在已有机器中取消勾选并保存可清除已记住的密码。
机器可按名称、地址或登录名查找、编辑与删除。切换保留已打开的 iframe;点击“断开连接”关闭该嵌入视图。连接历史逐次显示尝试、桌面就绪、断开与失败,支持当前机器筛选、刷新及加载更早记录。错误详情由服务端生成,客户端只上报固定原因代码。
连接状态来自 Guacamole 客户端:只有处于 CONNECTED、没有待填登录参数,且桌面宽高均有效时才记录成功。等待 NLA 的连接或零尺寸共享画面不会被标记为成功。独立窗口按钮在桌面就绪后启用,通过当前隧道 UUID 加入同一会话;无法复用时显示错误。
展开完整文档(README 剩余 1 节)
dsp-rdp:DSH 多机器远程桌面插件 适配 dsh Web 0.2.0-rc.2,通过 Apache Guacamole 1.6.0 提供多机器远程桌面。0.2.0 的机器配置与完整连接记录保存在本 DSH 实例;不同浏览器访问同一实例时使用相同记录。 表单依次为机器名称、Windows 登录名、密码、连接地址、连接和添加机器。连接地址填写主机名、IPv4 或方括号 IPv6,以及可选端口(默认 3389),例如 192.168.1.10:3389。添加只保存配置;连接保存配置后打开网关。密码可留空,在网关的 NLA 登录界面手动输入。只有勾选“在服务器加密记住密码”才会持久保存密码;在已有机器中取消勾选并保存可清除已记住的密码。 机器可按名称、地址或登录名查找、编辑与删除。切换保留已打开的 iframe;点击“断开连接”关闭该嵌入视图。连接历史逐次显示尝试、桌面就绪、断开与失败,支持当前机器筛选、刷新及加载更早记录。错误详情由服务端生成,客户端只上报固定原因代码。 连接状态来自 Guacamole 客户端:只有处于 CONNECTED、没有待填登录参数,且桌面宽高均有效时才记录成功。等待 NLA 的连接或零尺寸共享画面不会被标记为成功。独立窗口按钮在桌面就绪后启用,通过当前隧道 UUID 加入同一会话;无法复用时显示错误。保持原页面打开,关闭独立窗口不会关闭嵌入视图。刷新整个宿主页会卸载嵌入视图,重新选择机器时由服务器检查是否有已确认就绪的活动会话可加入。 独立窗口放大、缩小或最大化时自动适配远程画面,并向同一会话请求相应分辨率。更新插件后,刷新 DSH 并重新打开独立窗口,即可启用新版行为。 旧版浏览器入口仍保留在原存储中。同站点连接 ID 匹配服务器导入机器后使用服务器配置;未匹配或外部入口列于“旧版浏览器入口”,可单独打开。 界面预览 下图来自真实面板组件的本地预览,使用模拟 RPC 与通用示例数据,展示机器表单、列表及连接历史入口;截图不连接远程机器,也不表示已完成真实远程桌面登录验收。 多机器远程桌面面板的本地界面预览 查看 375px 窄屏预览 构建与安装 dsp-rdp 已发布到 npm,可通过以下命令安装到 DSH Web profile: dsh plugin --profile web add dsp-rdp 应用内插件中心的展示仍取决于社区目录扫描;npm 发布成功不代表商城已同步。维护者流程见 npm 发布说明。 也可从 GitHub 仓库安装源码版本: dsh plugin --profile web add github:andarmworld/dsp-rdp 从本地源码构建安装: npm ci npm run typecheck npm test npm run build DSH_HOME=/path/to/isolated/dsh-home dsh plugin --profile web add /absolute/path/to/dsp-rdp 服务器端随 DSH 插件加载,客户端通过 DSH 原生 connection.rpc 使用现有 /api 通道,调用 rdp/ 方法;服务端在现有 DSH Web 服务中注册对应的 /api/rdp/ 路径。所有机器管理和历史请求复用现有 DSH 服务、地址和认证,不需要独立 API 进程、监听端口或管理接口反向代理。客户端依赖清单包含 @deepseek-ai/dsh-client-connection。 网关与存储 插件需要运行中的 Guacamole 1.6.0 PostgreSQL 数据源,通过同站点 /guacamole/ 路径访问;反向代理应支持 WebSocket Upgrade。网关主机须能访问目标机器的 TCP 3389。gateway/compose.yaml 提供 Guacamole、guacd 和 PostgreSQL 模板。 插件使用 DSH 原生存储域保存机器与历史,不另建 SQLite 数据库。服务端配置字段如下: | 字段 | 默认值 | 用途 | | guacamoleUrl | http://127.0.0.1:18081/guacamole | 仅服务端访问的网关地址 | | gatewayUser | dshadmin | 导入和连接时使用的网关用户 | | adminUser | guacadmin | 管理连接及权限的本机可信头部身份 | | keyFile | <DSH_HOME>/secrets/rdp.key | 独立的密码加密密钥文件 | 可通过 Web profile 的插件配置设置这些字段,例如: - id: ligoo-rdp name: dsp-rdp config: guacamoleUrl: http://127.0.0.1:18081/guacamole gatewayUser: dshadmin adminUser: guacadmin keyFile: /private/dsh-home/secrets/rdp.key 网关使用本机可信头部身份;网关服务必须限制为本机受信调用,不能让外部请求自行指定管理身份。密钥文件必须在本仓库及发布包外。服务端导入网关用户已获授权的连接,并管理新建连接的权限。DSH 实例中的操作人员共享本插件数据,请使用 DSH 自身的认证保护访问。 可选的记住密码使用 AES-256-GCM 加密,密钥单独保存并受文件权限保护。列表和历史不返回密码,只有显式连接时交接临时登录密码。密码不会写入浏览器存储、连接 URL 或日志。浏览器仅对同源网关的可见 NLA 密码表单自动提交一次,错误密码不会自动重试。 本地界面预览 npm run preview 预览只绑定 127.0.0.1:4173,渲染真实的 RdpPanel,并明确标记为模拟 RPC 数据。你可以验证表单、机器列表和历史的布局与交互;预览不启动管理 API、不代理网关、不连接远程机器,也不包含硬编码密码。真实 RPC、持久化、NLA 与远程桌面验收必须在 DSH 中进行。 验证与发布 本地检查覆盖地址校验、加密存储、网关接口契约、真实客户端标识、NLA 与零尺寸画面的就绪判定、表单错误恢复、iframe 保留、历史分页与终态去重、原生 RPC 初始化。实际浏览器需在 375、768、1280px 检查布局,并在输入登录信息后验证真实画面、键盘鼠标、同会话独立窗口与跨浏览器数据恢复。 面板卸载会尝试上报断开记录;浏览器进程被直接关闭或网络中断时,最终请求可能无法送达。 每个发布版本先完成本仓库本地 Git 提交,信息包含版本号与实现内容,并更新 CHANGELOG.md。发布包从对应提交构建;记录目标环境、版本、提交哈希和验证结果。未经明确授权不向任何远程环境部署,不推送远端。 许可证 本项目采用 MIT 许可证,版权归 andarmworld 所有。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
andarmworld/dsp-rdp
DeepSeek Harness Web 的多机远程桌面插件,由 Apache Guacamole 驱动。
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,125已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,465已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,457已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,710已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,378已汉化DSH
70.2
这是你的仓库?认领条目