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

手机远程网关 Yari-tuber/dsh-remote-gateway

DeepSeek Harnessv0.2.0
Yari-tuber38 天前有提交已提供中文文档扫描:含敏感能力

一键开启,带身份验证,用手机访问 DeepSeek Harness。

36.6/100
综合分
10
GitHub 星标
54
npm 周下载
—/5
用户评分

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

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

状态速览

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

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

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

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

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

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

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 34 处,展示前 34 条)
  • 读取本地文件
    lib/index.js:38
    const raw = JSON.parse(readFileSync(join(resolveGatewayDir(), "config.json"), "utf8"));
  • 读取本地文件
    lib/index.js:64
    if (!existsSync(join(gatewayDir, "scripts", "start.js"))) {
  • 读取本地文件
    lib/index.js:65
    if (!existsSync(sourceDir)) {
  • 写入本地文件
    lib/index.js:69
    mkdirSync(gatewayDir, { recursive: true });
  • 写入本地文件
    lib/index.js:73
    mkdirSync(join(gatewayDir, "runtime"), { recursive: true });
  • 读取本地文件
    lib/index.js:74
    const marker = existsSync(join(gatewayDir, "scripts", "start.js"));
  • 发起网络请求
    lib/index.js:89
    const response = await fetch(url, { ...options, signal: controller.signal });
  • 读取本地文件
    lib/index.js:164
    const raw = JSON.parse(readFileSync(stateFile, "utf8"));
  • 写入本地文件
    lib/index.js:173
    mkdirSync(dirname(stateFile), { recursive: true });
  • 写入本地文件
    lib/index.js:174
    writeFileSync(stateFile, JSON.stringify({ autoStart }, null, 2));
  • 写入本地文件
    lib/index.js:214
    mkdirSync(dirname(logFile), { recursive: true });
  • 写入本地文件
    lib/index.js:363
    mkdirSync(join(dir, "runtime"), { recursive: true });
  • 发起网络请求
    lib/client.js:127
    fetch(API, { cache: "no-store" })
  • 发起网络请求
    lib/client.js:160
    fetch(API, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(Object.assign({ action: action }, extra)) })
  • 写入本地文件
    sidecar/src/config.js:40
    mkdirSync(RUNTIME_DIR, { recursive: true })
  • 读取本地文件
    sidecar/src/config.js:41
    if (!existsSync(CONFIG_PATH)) {
  • 写入本地文件
    sidecar/src/config.js:42
    writeFileSync(CONFIG_PATH, `${JSON.stringify(DEFAULT_CONFIG, null, 2)}\n`, 'utf8')
  • 读取本地文件
    sidecar/src/config.js:97
    return JSON.parse(readFileSync(CONFIG_PATH, 'utf8'))
  • 读取本地文件
    sidecar/src/config.js:125
    return candidates.find((candidate) => isAbsolute(candidate) && existsSync(candidate)) ?? candidates.at(-1)
  • 执行外部命令来自配置/变量
    sidecar/src/dsh.js:15
    const child = spawn(command, {
  • 发起网络请求
    sidecar/src/index.js:69
    const res = await fetch(config.upstream.origin.toString(), { signal: controller.signal, redirect: 'manual' })
  • 写入本地文件
    sidecar/src/share.js:16
    await mkdir(SHARE_DIR, { recursive: true })
  • 写入本地文件
    sidecar/src/share.js:30
    await writeFile(textPath, text, 'utf8')
  • 写入本地文件
    sidecar/src/share.js:45
    await writeFile(htmlPath, html, 'utf8')
  • 执行外部命令固定命令
    sidecar/src/share.js:66
    ? execFile('cmd.exe', ['/c', 'start', '', target], { windowsHide: true })
  • 执行外部命令固定命令
    sidecar/src/share.js:68
    ? execFile('open', [target])
  • 执行外部命令固定命令
    sidecar/src/share.js:69
    : execFile('xdg-open', [target])
  • 读取本地文件
    sidecar/src/share.js:79
    return await readFile(textPath, 'utf8')
  • 读取本地文件
    sidecar/src/tunnel.js:17
    await access(path)
  • 执行外部命令来自配置/变量
    sidecar/src/tunnel.js:33
    const child = spawn(config.tunnel.cloudflaredPath, ['tunnel', '--url', `http://${config.server.bindAddress}:${String(config.server.bindPort)}`], {
  • 读取本地文件
    sidecar/src/whitelist.js:21
    const parsed = JSON.parse(readFileSync(WHITELIST_PATH, 'utf8'))
  • 写入本地文件
    sidecar/src/whitelist.js:31
    mkdirSync(dirname(WHITELIST_PATH), { recursive: true })
  • 写入本地文件
    sidecar/src/whitelist.js:33
    writeFileSync(tmp, JSON.stringify({ devices }, null, 2) + '\n', 'utf8')
  • 写入本地文件
    sidecar/src/whitelist.js:34
    renameSync(tmp, WHITELIST_PATH)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-subprocess@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

4 张 · 点击查看大图

功能亮点

  • 一键开启手机访问
  • 带身份验证
  • 托管隧道接入

一键为 DeepSeek Harness 提供带认证的手机访问,走托管 Cloudflare Quick Tunnels

README

由 DeepSeek 最新模型翻译生成
DSH Remote Gateway 一键开启,带身份验证,用手机访问 DeepSeek Harness。 简体中文 · CLI installation · AI-assisted installation · Security DSH Remote Gateway 在 DeepSeek Harness 设置里加了一个精致的远程访问页面。它能检测或安全安装 cloudflared,创建一个临时 HTTPS 地址,并在代理 HTTP 和 WebSocket 流量之前,用专用登录保护 Harness。 [!WARNING] DeepSeek Harness 能运行 shell 命令、访问文件。远程访问等同于远程控制你的电脑:请用独立密码,让 Harness Web 服务器始终绑定 127.0.0.1,不要分享隧道 URL,不用时关掉隧道。 预览 远程访问设置 DSH Remote Gateway desktop settings 手机端体验 自适应设置页面带身份验证的登录页 截图使用隔离的测试配置档和虚构凭据,不含任何个人账号、文件系统路径或 Harness 会话数据。
展开完整文档(README 剩余 1 节)
DSH Remote Gateway

一键开启,带身份验证,用手机访问 DeepSeek Harness。

简体中文 · CLI installation · AI-assisted installation · Security

DSH Remote Gateway 在 DeepSeek Harness 设置里加了一个精致的远程访问页面。它能检测或安全安装 cloudflared,创建一个临时 HTTPS 地址,并在代理 HTTP 和 WebSocket 流量之前,用专用登录保护 Harness。

[!WARNING]
DeepSeek Harness 能运行 shell 命令、访问文件。远程访问等同于远程控制你的电脑:请用独立密码,让 Harness Web 服务器始终绑定 127.0.0.1,不要分享隧道 URL,不用时关掉隧道。

预览

远程访问设置

DSH Remote Gateway desktop settings

手机端体验

自适应设置页面带身份验证的登录页

截图使用隔离的测试配置档和虚构凭据,不含任何个人账号、文件系统路径或 Harness 会话数据。

亮点

- 在 Harness 设置里一键完成配置并启动隧道
- 界面自适应,支持英文和简体中文
- 带身份验证的 HTTP 和 WebSocket 反向代理
- 安全 Cookie、登录限流、临时封禁来源地址
- 自动发现 cloudflared,或由插件托管安装
- 锁定 Cloudflare 版本,校验文件大小和 SHA-256
- 支持 Windows x64/ARM64、Linux x64/ARM64、macOS x64/ARM64
- 已注册隧道的公开登录页无法访问时,自动替换
- 随 Harness 一起干净关闭隧道和进程树

工作原理

Phone browser
│ HTTPS
▼
Cloudflare Quick Tunnel
│ HTTP on loopback
▼
DSH Remote Gateway :3088
│ authenticated HTTP + WebSocket proxy
▼
DeepSeek Harness Web on 127.0.0.1

Quick Tunnel 每次重建,公开地址都会变。不需要路由器端口转发,不需要 Cloudflare 账号,也不需要自定义域名。

环境要求

- DeepSeek Harness,需支持配置档包和 dsh plugin
- Harness Web 服务器服务 @deepseek-ai/dsh-host-webserver >= 0.0.1-rc.1,或兼容的旧版 httpServer 服务
- Node.js ^22.19.0 或 >=24.0.0
- dsh plugin 命令能调用 pnpm
- Windows 安装需要系统自带的 curl.exe,受支持的现代 Windows 版本都包含它,用于公开可达性检查本项目目前面向预发布版 DeepSeek Harness API。升级任一项目前,请先查看发布说明。

安装

dsh plugin --profile web add github:Yari-tuber/dsh-remote-gateway

Git 依赖会运行本包的 prepare 构建。pnpm 10 及更新版本默认阻止依赖构建脚本,除非显式放行。如果第一条命令报出 allowBuilds,把下面这项加进 Harness 打印的配置档文件,通常是 ~/.dsh/profiles/web/pnpm-workspace.yaml:

allowBuilds:
dsh-remote-gateway: true

再次运行安装命令,然后启动 Harness:

dsh --profile web

打开 Settings → Remote Access,选一个唯一的用户名和密码,然后点 Set up and start。本地检出安装、卸载和故障排查见完整命令行指南。

AI 辅助安装

把AI 辅助安装里经过审计的提示词交给你的编码智能体。它会指示智能体只安装这个包,保留现有 Harness 设置,避免打印凭据,并在不把 Harness 直接暴露到网络的前提下验证插件。

配置参考

这个包在 cordis.patch.yml 里提供了安全的默认值。当部署相关的值需要持久保留时,配置档补丁可以替换整个 dsh-remote-gateway 配置。

| 字段 | 默认值 | 用途 |
| enabled | true | 随 Harness 启动带认证的网关。 |
| listenHost | :: | 在支持双栈的地方接受局域网 IPv4/IPv6。 |
| port | 3088 | 带认证的网关端口。 |
| username | admin | 初始登录用户名。 |
| password | 空 | 启动时在内存中生成强密码。 |
| maxFailedAttempts | 5 | 触发临时封禁前的登录失败次数。 |
| banDurationMinutes | 15 | 临时封禁时长。 |
| cloudflaredPath | cloudflared | 可执行文件名或绝对路径。 |
| autoInstallCloudflared | true | 缺失时安装经过验证的固定版本构建。 |
| autoStartQuickTunnel | false | Harness 启动期间开启公网隧道。 |
| tunnelProtocol | http2 | Cloudflare 连接器传输方式:auto、http2 或 quic。 |
| tunnelStartupTimeoutMs | 30000 | 单次分配的注册超时。 |
| tunnelStartupAttempts | 3 | 失败前尝试的分配次数。 |
| tunnelReachabilityTimeoutMs | 10000 | 公网登录页探测超时。 |
| processGraceMs | 5000 | 进程树关闭宽限期。 |
| webServerStartupTimeoutMs | 30000 | Harness Web 服务发现超时。 |

运行时修改用户名、密码、端口和启用状态会立即生效。需要持久保留的部署值请写进配置档补丁;密码留空会在重启后有意生成新密码。

托管的 cloudflared

当没有可用的已配置可执行文件或系统可执行文件时,插件会下载 Cloudflare 官方发行版到 $DSH_HOME/tools/dsh-remote-gateway。资源版本、字节长度和 SHA-256 摘要都固定在源码里。安装使用私有临时存储,并以原子方式替换可执行文件和安装清单。

Windows ARM64 通过 Windows 模拟运行 Cloudflare 的 x64 可执行文件,因为 Cloudflare 没有为固定版本发布 Windows ARM64 Quick Tunnel 资源。

Cloudflare 可能会临时限制频繁创建 Quick Tunnel。插件在遇到第一次明确的 HTTP 429/错误 1015 或非 JSON 分配拒绝后就停止;等一会儿再重试,不要反复点击启动。

安全与隐私

- 让主 Harness Web 服务器保持在回环地址上。把它绑定到局域网或公网接口会绕过这个网关。
- 认证状态、登录失败计数器和生成的凭据都只存在内存中。
- 插件没有遥测。托管安装会访问 GitHub Releases;Quick Tunnel 运行会访问 Cloudflare。
- Quick Tunnel 不保证可用性,只适合个人临时访问,不适合生产环境或多用户部署。

启用远程访问前,请阅读 SECURITY.md 和 PRIVACY.md。

开发

pnpm install
pnpm run typecheck
pnpm run test
pnpm run prepare

贡献和验证要求见 CONTRIBUTING.md。

许可证

MIT。这个社区项目不是 DeepSeek 或 Cloudflare 的官方产品。产品名称和商标归各自所有者所有。
预览分享卡片长什么样 ↓Yari-tuber/dsh-remote-gateway
分享 · DeepSeek Harness Hub
Yari-tuber/dsh-remote-gateway

一键开启,带身份验证,用手机访问 DeepSeek Harness。

这是你的仓库?认领条目

回到顶部