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

手机中继桥 conceal123456/dsh-mobile-relay

DeepSeek Harness
conceal12345610 天前有提交已提供中文文档扫描:含敏感能力

一条命令把电脑端 Harness 接到手机 App,扫码即连

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add conceal123456/dsh-mobile-relay
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
  • 发起网络请求
    src/relay.mjs:92
    const req = https.get(
  • 发起网络请求
    src/auth-shim.mjs:78
    const upstream = http.request(
  • 执行外部命令固定命令
    src/config.mjs:98
    const out = execFileSync("netstat", ["-ano", "-p", "TCP"], { encoding: "utf-8", timeout: 5000 });
  • 执行外部命令固定命令
    src/config.mjs:105
    const ps = execFileSync(
  • 执行外部命令固定命令
    src/config.mjs:114
    const out = execFileSync("sh", ["-c", "lsof -nP -iTCP -sTCP:LISTEN 2>/dev/null || ss -ltnp 2>/dev/null"], {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

一条命令搭起桥接,把桌面版 DeepSeek Harness 暴露给 DSH Mobile 应用:扫码 + harness 配对(解决 401)。

README

由 DeepSeek 最新模型翻译生成
dsh-mobile-relay 把电脑上的 DeepSeek Harness(DSH)接到手机上的 DSH Mobile,一条命令跑通,手机扫码即用。 解决的核心问题:DSH 桌面版 / dsh web 自带登录鉴权(整个 /api 面都要签名 Cookie),而 dsh-relay 只会转发、不会登录,所以手机上永远看到 401 / “harness 拒绝了中继”。本项目用一个只监听本机的「鉴权桥」把这层补上,同时保留中继的配对码、设备令牌、TLS 和证书固定。 它做了什么 手机 (DSH Mobile) │ https://<电脑局域网IP>:3443 (自签证书 + 配对码 + 设备令牌) ▼ dsh-relay 中继 ────────────────► 鉴权桥 127.0.0.1:随机端口(配对、设备管理、TLS) (读出 harness 的签名密钥,现签 Cookie,改写 Host/Origin) │ ▼ DeepSeek Harness 127.0.0.1:52761 启动后你会得到: - https://<IP>:3443 的中继地址 - 8 位配对码 + 二维码(pairing-qr.png) - pairing.json(给脚本/自动化读取) 前置条件 | 项目 | 要求 |
展开完整文档(README 剩余 1 节)
dsh-mobile-relay

把电脑上的 DeepSeek Harness(DSH)接到手机上的 DSH Mobile,一条命令跑通,手机扫码即用。

解决的核心问题:DSH 桌面版 / dsh web 自带登录鉴权(整个 /api 面都要签名 Cookie),而 dsh-relay 只会转发、不会登录,所以手机上永远看到 401 / “harness 拒绝了中继”。本项目用一个只监听本机的「鉴权桥」把这层补上,同时保留中继的配对码、设备令牌、TLS 和证书固定。

它做了什么

手机 (DSH Mobile)
│ https://<电脑局域网IP>:3443 (自签证书 + 配对码 + 设备令牌) ▼ dsh-relay 中继 ────────────────► 鉴权桥 127.0.0.1:随机端口(配对、设备管理、TLS) (读出 harness 的签名密钥,现签 Cookie,改写 Host/Origin) │ ▼ DeepSeek Harness 127.0.0.1:52761

启动后你会得到:

- https://<IP>:3443 的中继地址
- 8 位配对码 + 二维码(pairing-qr.png)
- pairing.json(给脚本/自动化读取)

前置条件

| 项目 | 要求 |
| 电脑 | 已安装并运行 DeepSeek Harness(桌面版,或 dsh web) |
| Node.js | ≥ 18.17(推荐 20/22) |
| 手机 | Android 8.0+,安装 DSH Mobile |
| 网络 | 手机与电脑在同一个局域网(同一路由器,或电脑连手机热点) |

快速开始

1. 拉取 & 安装

git clone https://github.com/conceal123456/dsh-mobile-relay.git
cd dsh-mobile-relay
npm install

2. 启动(保持这个窗口别关)

npm start

看到这样的输出就成功了:

[dsh-mobile-relay] harness 端口 52761,本机局域网 IP 192.168.1.20 [dsh-mobile-relay] 鉴权桥已就绪:127.0.0.1:49812 -> 127.0.0.1:52761 [dsh-mobile-relay] 中继已启动:0.0.0.0:3443

================ 手机配对信息 ================ 中继地址 : https://192.168.1.20:3443 配对码 : 04296087 二维码 : ./pairing-qr.png

3. 手机配对

1. 打开 DSH Mobile → 连接方式选 中继;
2. 点 扫描二维码,扫电脑上的 pairing-qr.png;(或手动填:地址 https://192.168.1.20:3443 + 上面的 8 位配对码)
3. 配对成功后回到列表点那台机器,就会同步电脑上的会话。

每台设备只需配对一次,之后自动重连。

常用配置

全部通过环境变量,Windows PowerShell 示例:

$env:DSH_HARNESS_PORT = "52761" # 不填会自动探测 $env:DSH_RELAY_PORT = "3443" $env:DSH_HOME = "D:\dsh-home" # 多份 DSH 家目录时指定
npm start

| 变量 | 默认 | 说明 |
| DSH_HOME | ~/.dsh | DSH 家目录 |
| DSH_CREDENTIALS_PATH | $DSH_HOME/.credentials.yaml | 凭据文件路径 |
| DSH_HARNESS_PORT | 自动探测 | harness 端口 |
| DSH_RELAY_PORT | 3443 | 中继端口(TLS) |
| DSH_RELAY_PLAIN_PORT | 0 | 明文兼容端口,老客户端才需要,建议保持关闭 |
| DSH_RELAY_BIND | 0.0.0.0 | 中继绑定地址 |

不在同一个局域网?

中继默认监听 0.0.0.0:3443,所以只要手机能路由到电脑的某个 IP 就能用。最省事、也最安全的是组一台虚拟局域网:

Tailscale(推荐,免费、不开公网端口)

1. 电脑和手机都装 Tailscale 并登录同一账号;
2. 电脑上 tailscale ip -4 拿到 100.x.y.z;
3. 重启本项目,控制台会把这个地址也列出来(或直接用 https://100.x.y.z:3443 重新配对);
4. 手机在任何网络下(4G / 公司 Wi-Fi)都能连回电脑。

同类方案:ZeroTier、蒲公英、WireGuard 自建。原理相同——给电脑一个手机可达的稳定 IP。

不建议直接把 3443 端口映射到公网:能连上中继就等于能在你电脑上执行命令。确需公网访问,请配 publicHostnames + 真实证书,并把 privilegedMethods 设为 loopback-only(详见 docs/ARCHITECTURE.md)。

常见问题

手机提示「无法连接 …」
1. 先用手机浏览器打开 https://<IP>:3443/relay/health,能返回 ok 说明网络和 TLS 正常(证书警告点继续);
2. 打不开就是网络问题:确认手机和电脑连同一个 Wi-Fi、电脑防火墙放行 3443、路由器没开「AP 隔离」;
3. 能打开但 App 连不上,多半是地址栏里还留着旧 IP —— 手动清空重填。

IP 老是变? 本项目每 15 秒检测一次网络,IP 变化会自动重启监听并重新打印配对信息,看控制台最新那一段即可。

「中继拒绝了该配对码」 配对码一次性、24 小时有效。重启中继会换新码,用最新输出的那个。

手机能看到会话但操作报 401? 说明鉴权桥的 secret 与当前运行的 harness 不匹配(常见于同时装了多个 DSH 家目录)。用 DSH_HOME 指向正确的家目录再启动。

更多见 docs/TROUBLESHOOTING.md。

安全说明

- 鉴权桥只监听 127.0.0.1,局域网和公网都连不到它。
- 中继的 TLS 用自签证书,手机端按证书指纹固定(pinning)校验,扫码配对时自带指纹。
- 配对后的设备持有长期令牌;可在 https://127.0.0.1:3443/relay/devices 查看和吊销。
- 能连上中继的人=能在你电脑上执行命令(Agent 有 shell 权限)。不要把 3443 直接映射到公网;确有需要请套 VPN(Tailscale 等)。
- 本项目不修改 harness 任何文件,也不关闭它的鉴权。

目录结构

src/
relay.mjs 启动器:起鉴权桥 + 中继 + 打印配对信息 + IP 变化看门狗 auth-shim.mjs 鉴权桥:读 secret、签 Cookie、转发 HTTP/WebSocket config.mjs 环境探测:家目录、凭据、harness 端口、局域网 IP scripts/ start.ps1 Windows 一键脚本 docs/ ARCHITECTURE.md 原理与失败模式 TROUBLESHOOTING.md 踩坑合集

发布 / 镜像

仓库自带 scripts/publish-gitee.ps1,一条命令完成「建仓 → 推送 → 写描述 → 改公开」:

$env:GITEE_TOKEN = "你的私人令牌" .\scripts\publish-gitee.ps1 -Name dsh-mobile-relay -Description "一键把 DSH 接到手机" -Public

令牌在 https://gitee.com/profile/personal_access_tokens 生成,勾选 projects 权限;脚本只在内存里用一次。
Gitee 对刚推送的仓库有元数据延迟,脚本会自动重试把仓库改为公开。

致谢

- sorsama/deepseek-harness-relay —— 中继本体
- sorsama/deepseek-harness-mobile —— 手机客户端
- DeepSeek Harness 及其品牌归其所有者,本项目为非官方社区方案。

License

MIT
预览分享卡片长什么样 ↓conceal123456/dsh-mobile-relay
分享 · DeepSeek Harness Hub
conceal123456/dsh-mobile-relay

一条命令把电脑端 Harness 接到手机 App,扫码即连

这是你的仓库?认领条目

回到顶部