mrgaoang/dsh-remote 预览 preview

mrgaoang/dsh-remote

Remote control for DeepSeek Harness (dsh web) from any phone browser — secure gateway, mobile web client, full feature coverage (incl. privileged methods). 手机远程控制 DeepSeek Harness

项目介绍Project Overview

dsh-remote 是一个独立的安全反向代理网关,配合本机 dsh web 使用,让手机浏览器通过口令登录后全功能远程控制 DeepSeek Harness,包括发消息、审批工具、改设置、管凭据等特权操作,并支持 PWA、WebSocket 透传、限流与可选 TLS/IP 白名单。适合在局域网或经自有反代公网访问桌面 DSH 时使用。注意:网关是唯一信任边界,切勿直接暴露 dsh web 端口;许可证限个人非商业免费,商业用途需授权。

dsh-remote is a standalone secure reverse-proxy gateway for a local dsh web instance. It lets a phone browser log in with a password and remotely control DeepSeek Harness with full feature coverage, including messages, tool approvals, settings, credentials, WebSocket streaming, PWA use, rate limiting, and optional TLS or IP allowlisting. Use it for LAN access or public access through your own reverse proxy. Caveat: the gateway is the trust boundary; never expose dsh web directly, and commercial use requires a license.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add github:mrgaoang/dsh-remote

mrgaoang/dsh-remote 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-remote

在手机浏览器上全功能远程控制 DeepSeek Harness(dsh web)

Remote control for DeepSeek Harness (DSH) from any phone browser — mobile web client, secure gateway, full feature coverage.

零侵入 · 功能全覆盖 · 端到端直达 · 安全默认

DeepSeek Harness dsh-plugin License Node Platform GitHub stars

📄 License:个人/非商业免费(PolyForm Noncommercial 1.0.0) · 商业用途需商业授权 · 修改须署名

dsh-remote 是一个安全反向代理网关:在运行 dsh web 的电脑上启动它, 手机浏览器即可登录并全功能接管桌面端 DeepSeek Harness —— 发消息、看工具 执行、审批权限、改设置、管凭据,与本地浏览器能力完全一致(含特权操作)。

关键词:DeepSeek Harness · DSH · dsh-plugin · 手机远程控制 · 移动端 · 反向代理 · remote control · mobile web · secure gateway · Cordis


✨ 特性

  • 零侵入:不改 DSH 任何代码/配置;dsh web 仍只监听 127.0.0.1
  • 功能全覆盖:把远程请求"伪装"成本机 loopback,通过 DSH 的信任围栏, 包括 --trusted-host 也拿不到的特权方法(settings.* / credentials.* 等)。
  • 端到端直达:局域网直连即可(零服务器);要公网访问时,经你自己的 反代服务器(NAS / 云主机)+ NAT 即可。
  • 安全默认:强口令登录(scrypt 哈希)、会话 cookie、失败限流、可选 IP 白名单、可选 TLS。
  • 移动端优先:深色终端美学的登录页 + PWA 能力,手机"添加到主屏幕"即用。
  • 零运行时依赖:纯 Node.js 原生模块(node:http / https / crypto), 无 npm install、无外部服务。

🔍 生态与发现

dsh-remote 是 DeepSeek Harness 插件生态的一员,已在以下渠道可被发现:

给 DeepSeek Harness 开发插件?给仓库打上 dsh-plugin topic 即可被社区搜索到,并可提交到上述 awesome 列表。

与同类方案对比

生态中已有若干"DSH 远程访问"方案,多数是加载进 dsh web 的 Cordis 插件。 dsh-remote 采用独立的网关架构,关键差异:

能力 dsh-remote(独立网关) 插件式方案(如 xgone/dsh-remote 等)
特权方法(settings.* / credentials.* / agent 预设等) loopback 伪装,全覆盖 ❌ 受 dsh web 信任围栏限制(仅 loopback 放行)
对 DSH 的侵入 零(不改任何代码/配置) 需安装进 dsh web 的插件体系
WebSocket 事件流 原生透传 走插件通道
登录安全 口令 + 限流 + 可选白名单/TLS 视插件实现
升级影响 与 DSH 版本解耦 随 DSH 插件体系升级

一句话:插件式方案能"给 DSH 加登录";dsh-remote 能让你像坐在电脑前一样 完整操作 DSH(包括改设置、管凭据),这在插件式方案中受信任围栏限制无法实现。

界面预览

f00289aec93e179421ec8fd86373877a 40acf7db474c69cd1ecb1dd52d786d29

📦 快速开始(一键安装)

需要 Node.js ≥ 20。运行下面的命令,按提示设置口令即可:

# macOS / Linux 通用
curl -fsSL https://raw.githubusercontent.com/mrgaoang/dsh-remote/main/install.sh | bash

非交互式(环境变量方式,适合脚本化):

DSH_REMOTE_PASSWORD='你的强口令' \
DSH_REMOTE_PORT=3443 \
bash <(curl -fsSL https://raw.githubusercontent.com/mrgaoang/dsh-remote/main/install.sh)

安装脚本会:

  1. 下载项目到 ~/.dsh-remote;
  2. 生成 config.json(口令以 scrypt 哈希存储,权限 600);
  3. 安装系统服务并开机自启(macOS → launchd,Linux → systemd);
  4. 打印本机/局域网访问地址。

然后手机浏览器打开 http://<电脑IP>:3443/login 输入口令即可。

局域网直连建议启用 TLS(自签证书),或至少使用强口令。详见 安全

🚀 手动启动

git clone https://github.com/mrgaoang/dsh-remote.git
cd dsh-remote

# 生成自签证书(可选,局域网 HTTPS)
./scripts/gen-cert.sh

# 启动(临时)
DSH_REMOTE_PASSWORD='你的强口令' \
DSH_REMOTE_PORT=3443 \
DSH_REMOTE_TLS_CERT=$PWD/certs/server.crt \
DSH_REMOTE_TLS_KEY=$PWD/certs/server.key \
node bin/dsh-remote.js start

⚙️ 配置

配置文件 config.json(参考 config.example.json)或环境变量(DSH_REMOTE_*, 优先级更高):

配置项 环境变量 默认 说明
host DSH_REMOTE_HOST 0.0.0.0 监听地址
port DSH_REMOTE_PORT 3443 监听端口
upstream DSH_REMOTE_UPSTREAM http://127.0.0.1:3080 dsh web 地址
password DSH_REMOTE_PASSWORD 访问口令(明文,不推荐)
passwordHash DSH_REMOTE_PASSWORD_HASH scrypt 哈希(推荐)
sessionTtlHours DSH_REMOTE_SESSION_TTL_HOURS 12 会话有效期(小时)
rateLimit DSH_REMOTE_RATE_LIMIT 5:900000 登录失败限流(次数:窗口ms)
allowIps DSH_REMOTE_ALLOW_IPS [] IP 白名单(空=不限)
tls.cert/key DSH_REMOTE_TLS_CERT/KEY HTTPS 证书/私钥路径
distDir DSH_REMOTE_DIST_DIR 包内 public/ 登录页静态资源目录

生成口令哈希:

node bin/dsh-remote.js hash-password
# passwordHash: scrypt$16384$8$1$<salt>$<hash>

命令行:

node bin/dsh-remote.js start --config ./config.json   # 启动
node bin/dsh-remote.js hash-password                  # 生成口令哈希
node bin/dsh-remote.js --help                         # 帮助

🌐 公网访问

局域网直连之外,可通过一台有公网 IP 的反代服务器(NAS / 云主机)暴露到公网, 手机在任意网络访问。完整指南见 deploy/nas/DEPLOY-NAS.md:

手机 ──TLS──▶ https://<你的域名>:<端口>
              (反代服务器 Nginx,证书终止)
                  │ proxy_pass 直连,或 SSH 反向隧道
                  ▼
              dsh-remote 网关(电脑, 3443)
                  ▼
              dsh web(127.0.0.1:3080)

两种后端连通方式:

  • 局域网直连:反代服务器与电脑同网段 → proxy_pass http://<电脑IP>:3443;
  • SSH 反向隧道:不同网段 → 电脑跑 scripts/tunnel-nas.sh, 反代服务器 proxy_pass http://127.0.0.1:<端口>

🔒 安全

dsh web 能执行任意本地命令(工具如 bash/fs),因此网关是唯一信任边界:

  • 强口令(≥12 位建议),scrypt 哈希存储,恒定时间比较;
  • 会话 cookie:HttpOnly; SameSite=Strict,HTTPS 下追加 Secure,短有效期滑动续期;
  • 登录失败限流(默认每 IP 15 分钟 5 次,429 + Retry-After);
  • 可选 IP 白名单;
  • WebSocket 升级同样必须先通过认证;
  • 公网场景:反代服务器 Nginx 应拒绝未知 Host(返回 444),仅放行你的域名;
  • 切勿dsh web 自身端口(3080)暴露到局域网/公网,只有网关端口对外。

📁 目录结构

dsh-remote/
├── install.sh              # 一键安装脚本(macOS / Linux)
├── uninstall.sh            # 卸载脚本
├── bin/dsh-remote.js       # CLI 入口
├── lib/
│   ├── config.js           # 配置加载与校验
│   ├── auth.js             # 口令哈希、会话、限流
│   ├── proxy.js            # 反向代理(HTTP + WebSocket 升级、头重写)
│   └── server.js           # 主服务(路由/静态/登录/代理挂载)
├── public/                 # 移动端登录页
├── scripts/
│   ├── gen-cert.sh         # 自签证书生成
│   ├── install-macos.sh    # macOS launchd 安装
│   └── tunnel-nas.sh       # SSH 反向隧道(公网反代模式)
├── deploy/
│   ├── com.dshremote.daemon.plist   # launchd 服务模板
│   └── nas/                # 公网反代部署指南 + Nginx 片段
├── config.example.json     # 配置示例
└── DESIGN.md               # 架构设计

🧰 常见问题

Q: 手机提示证书不受信任? 自签证书需要首次信任。把 certs/server.crt 发送到手机安装并信任 (iOS: 设置 → 通用 → VPN与设备管理 → 安装;再 关于本机 → 证书信任设置 → 开启完全信任)。或使用反代服务器的正规证书。

Q: 能同时用手机和电脑控制吗? 可以。dsh web 的事件流是广播制,手机与桌面浏览器可同时在线,实时同步。

Q: 支持哪些系统? 电脑端 macOS / Linux(Node.js ≥ 20);手机端任意现代浏览器(iOS Safari / Android Chrome),建议添加到主屏幕获得全屏体验。

Q: 多人可以用吗? 当前为单口令共享。如需多用户独立账号,可扩展 lib/auth.js 的用户表。

📄 License(双许可 / Fair-code)

dsh-remote 采用 双许可模式(Fair-code / Source-available,非传统 OSI 开源):

场景 许可 费用
个人学习 / 研究 / 非商业用途 PolyForm Noncommercial License 1.0.0 免费
个人修改、二次开发(须署名) 同上 免费
商业用途 商业授权 付费
  • 免费使用:个人、教育、研究、非营利组织的非商业用途,完全免费;
  • 自由改造:个人可自由修改、二次开发,但按 Notices 条款必须保留出处署名: Required Notice: Copyright (c) 2026 dsh-remote contributors (https://github.com/mrgaoang/dsh-remote);
  • 商业付费:任何商业用途(公司生产环境、商业产品集成、SaaS 等)需 购买商业授权

这不是 MIT/Apache 类开源许可证,而是"源码可得 / 公平代码"许可, 以保护作者的商业权益。详见 COMMERCIAL-LICENSE.md

🙏 致谢

上一个 Prev dsh-overdrive 下一个 Next dsh-mermaid