🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

LHN-xiao-hai-tun/dsh-mobile

DeepSeek Harnessspec-screened扫描:无法判定在 GitHub 查看 ↗
需源码安装

极简 WebView 容器约 3 MB:在手机/平板上像原生 App 一样访问你自己部署的 DeepSeek…

暂不能直接安装(需源码编译或环境不满足):仓库缺少 package.json,无法用 dsh 插件安装命令安装。 · 最近上游提交 2026/9/25 · 已提供中文文档

极简 WebView 容器(约 3 MB):在手机/平板上像原生 App 一样访问你自己部署的 DeepSeek Harness。不含运行时、不预置地址、不采集数据。

综合分
30.8
GitHub 分
30.8
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add LHN-xiao-hai-tun/dsh-mobile
仓库缺少 package.json,无法用 dsh 插件安装命令安装,改用 GitHub 源安装
信任档位:已验证本站已于 2 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · tool
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 0 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/23
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/25(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

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

✗npm 包dsh-mobile(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

仓库缺少 package.json,无法用 dsh 插件安装命令安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 00:09:56

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
DSH Mobile

在平板 / 手机上像原生 App 一样使用你自己部署的 DeepSeek Harness。

Build
License: MIT
Security Policy
Release
Platform-brightgreen.svg)
APK

一个极简 WebView 容器(约 3 MB)。不含 DSH 本体,也不内置任何服务器地址 —— 填入你自己的服务地址即可。

界面预览

| 全屏主界面(平板 · 无浏览器地址栏) | 服务器设置(手机) |
|---|---|
| 主界面 | 设置页 |

截图取自真机:平板 HONOR CHG-W60(横屏)· 手机(竖屏,地址已打码)。

特性

| 特性 | 说明 |
|---|---|
| 全屏 | 无浏览器地址栏,与原生 App 一致 |
| 启动页 | 官方 SplashScreen API,深色底 + DSH 图标,不再白屏 |
| 返回键 | 网页后退 / 双击退出 |
| 麦克风·摄像头 | 自动授权(语音输入可用) |
| 登录态持久 | Cookie 自动保存,不必反复登录 |
| 浮动 ⚙ / ⌘(可拖动) | 两个按钮合成一个小栈,默认停在右下角;可拖到任意边缘并记住位置,只在自己区域内接管触摸 |
| 连接历史 | 记住最近 5 个地址,点一下填入(只存本机) |
| ⌘ 快捷指令 | 3 条可编辑的常用提示,一键填入输入框(只填入,不发送) |
| 关于页 | 版本 / 许可 / 致谢 / 检查更新 |
| 首次引导 | 未填地址时自动进入设置页 |
| 连不上有提示 | 不会静默白屏 |

前置:先跑起 DSH

本 App 只是「客户端」。你需要先有一个可访问的 DSH 服务。

依赖总览(先搞清「发现」需要哪些东西)

| 你要的能力 | 需要什么 | 在哪装 |
|---|---|---|
| 手机能连上 DSH | dsh-pocket 插件(提供局域网入口 + 8 位 PIN) | DSH 侧(电脑) |
| 手机「秒发现」(mDNS) | 上者 + dsh-mdns-announce(广播 _dsh._tcp.local) | DSH 侧(电脑) |
| 以上都没有 | 只能手动填地址(http://:3081),或 App 内「扫描」扫子网兜底 | — |

App 本身不需要任何前置插件 —— v1.2.7 起已内置 mDNS/NSD 发现 + 子网扫描。
缺了 DSH 侧的插件,App 不会坏,只是「秒发现」退化成「扫子网」或「手填地址」。

方式 A · 电脑跑(推荐,性能好)

npm i -g @deepseek-ai/dsh
dsh web --port 3080 --no-open

让手机与电脑处于同一局域网。若要手机能访问,装 dsh-pocket 插件并打开「局域网访问」(默认端口 3081):

dsh plugin --profile web add dsh-pocket

⚠️ 强烈建议开启访问密码(PIN) —— 否则同一网络下的任何设备都能操作你的电脑。

可选 · 让手机「秒发现」电脑(mDNS)

App 有两种找服务的方式:扫子网(默认,约 3~5 秒、只能同一子网)和 mDNS/NSD 发现(即时)。
后者需要服务端先广播 _dsh._tcp.local,而 DSH 本体不广播任何服务。仓库里带了一个零依赖的广播脚本,直接跑即可:

在跑 DSH 的那台电脑上(需要 Node ≥ 18)
node tools/mdns-announce.mjs            # 前台运行;Ctrl+C 退出
node tools/mdns-announce.mjs --quiet    # 静音
node tools/mdns-announce.mjs --port 3082 --name my-dsh --no-pin   # 自定义

⚠️ 脚本默认广播 3081(dsh-pocket 的默认端口)。若你的 pocket 实际端口漂了(3081 被占会自动 +1),用 --port 手动对齐。
想让广播「随 DSH 启停、端口自动跟随 pocket」,可以把它包成 DSH 插件(思路见脚本顶部注释)—— 本仓库未发布该插件,需要你自建或自行实现。

跑起来后,手机打开「设置 → 扫描局域网上的 DSH」就会几乎立刻出现该地址(不再等全子网扫完)。
不跑它也不影响使用 —— 子网扫描会兜底。

自己实现也行,但注意三个坑(脚本注释里也写了):
① 必须过滤 QR 位,否则自己的应答会经组播回环被当成查询 → 自环放大成群播风暴;
② PTR 应答的 additional 段要带 SRV+TXT+A,只回 PTR 时部分解析器收得到却不触发发现;
③ 多网卡要按网卡分别应答,否则客户端可能拿到一个自己不可达的地址。
④ mDNS 跨不了网段:电脑和设备必须在同一网段(如都在 192.168.1.x),否则组播到不了,只能靠「扫子网」或手填地址。

方式 B · 手机/平板本机跑(离线可用,较慢)

DSH 依赖 Linux 的 flock,而 Termux 的 Node 报告 platform=android,故需用 proot 容器:

apt install -y proot-distro
proot-distro install docker.m.daocloud.io/library/debian:12
proot-distro login debian
容器内:
apt install -y nodejs npm && npm i -g @deepseek-ai/dsh
dsh web --port 3080 --no-open

地址填 http://127.0.0.1:3080。

安装

1. 从 Releases 下载 APK
2. 系统设置里允许「安装未知来源应用」
3. 安装并打开
4. 在设置页填入你的 DSH 地址

装一次,以后自动更新(Obtainium)

不想每次手动下载重装,可以用 Obtainium 订阅本仓库 ——
它盯着 GitHub Release,有新版本会通知你,并可后台静默安装(静默需 Android 12+,且 App 由 Obtainium 装的)。

Get it on Obtainium

手动添加也行:Obtainium → Add App → 源选 GitHub → 填 https://github.com/LHN-xiao-hai-tun/dsh-mobile。

资产命名约定(Obtainium 靠文件名挑 APK,故固定下来):

| 资产 | 说明 |
|---|---|
| dsh-mobile-vX.Y.Z.apk | ✅ 要装的就是它 —— 已签名(与历史版本同一个密钥,可直接覆盖安装) |
| dsh-mobile-vX.Y.Z.apk.sha256 | 它的 SHA-256(下载后可核对) |
| dsh-mobile-vX.Y.Z-unsigned.apk | ⚠️ CI 出的未签名占位包(仅用于校验/留痕),别装 —— 正式签名包上传后它会被自动删掉,所以正常情况下你看不到它 |

因此 v1.3.10 起资产名与旧版不同(旧版是 DSH-Mobile-vX.Y.Z.apk):Obtainium 会自动用新版,
手动下载的话按上表认名字即可。

🔒 安全部署(先读这段)

本 App 只是一个客户端 —— 安全与否,主要取决于你如何暴露 DSH 服务。

最短清单(完整版见 docs/SECURITY_DEPLOY.md):

| 项 | 做法 |
|---|---|
| 暴露方式 | ⭐ 用 Tailscale / ZeroTier / WireGuard 组网,不要把 DSH 暴露公网 |
| DSH 密码 | 🔴 必设强 PIN / 密码 —— 否则同一网络下的任何设备都能操作你的电脑 |
| 传输 | 尽量启用 HTTPS;不要在公共 WiFi 下明文连接 |
| 别做的事 | 不要 frp 裸奔 · 不要把地址 / PIN 截图发公开渠道 · 不要关锁屏密码 |
| 发现结果 | mDNS / 扫子网的结果不代表可信 —— App 不会自动连接,连之前请核对主机名 / IP |
| 手机丢了 | 立刻改 DSH 的 PIN,或在路由器 / 组网层吊销该设备 |

⚠️ 当前版本仍允许明文 HTTP(这是局域网 http://:3081 的前提),
但已加分级策略:私有网段首次确认一次、公网明文默认拦下。

v1.3.0 起:混合内容不再放行(NEVER_ALLOW)、本机敏感配置已加密
(AES-256-GCM + Keystore)、证书走 TOFU 首次信任。完整现状见
SECURITY.md 第五节的「连接安全机制与取舍」。

🔒 报告漏洞请勿公开披露细节 —— 渠道见 SECURITY.md。

自己构建

需要 JDK 17+ 与 Android SDK(platform-34 + build-tools 34.0.0)
仓库自带 gradle wrapper(Gradle 8.9)
./gradlew assembleDebug
产物:app/build/outputs/apk/debug/app-debug.apk

也可用系统 Gradle:gradle assembleDebug。
打 Release 包:./gradlew assembleRelease(当前用 debug 签名,如需正式分发请自行配置签名)。

推送 / PR 会自动跑一次 assembleDebug(见 .github/workflows/build.yml)。

与同类项目的区别

dsh-mobile 这个名字在社区被多个项目使用,本项目与它们的定位不同(下表数据核验于 2026-09-21):

| 项目 | 技术栈 | 定位 | 本项目 |
|---|---|---|---|
| 本项目 LHN-xiao-hai-tun/dsh-mobile | Java + Android SDK | 极简 WebView 遥控器:约 3 MB,不含任何运行时,连接你自己电脑/设备上的 DSH | — |
| saya-ch/dsh-mobile | TypeScript | Android App + 安全远程访问插件,高度自定义的移动界面与扩展能力 | 不采用(依赖与体积更重) |
| Thanksgiver233/dsh-mobile | Kotlin | 内置 Node.js ARM64 与 dsh CLI 的手机本地运行方案,APK 即跑 | 不采用(本机跑 DSH 另有 proot 路线) |
| jayantTang/DSH_Mobile | Swift | iOS 客户端,WSS 经公网中转 | 不采用(平台不同) |

为什么走极简路线

- 体积:约 3 MB,不占用手机存储,也不携带 Node.js 运行时
- 隐私:不预置服务器地址、不采集数据、无广告统计、无第三方 SDK
- 职责单一:只负责「让手机像原生 App 一样访问你的 DSH」;DSH 本体与插件生态留在你自己的机器上,升级互不影响

隐私

- 不采集、不上传任何数据
- 只在本机 SharedPreferences 保存:你填的服务器地址、最近 5 条连接历史、快捷指令模板、浮动按钮位置
- App 自身唯一的网络行为就是访问你填的那个地址;「检查更新」只在你点它时才查一次 GitHub(不会自动查、不会自动下载)
- 无广告、无统计、无第三方 SDK
- 清单里 5 条权限:基础 3 条 —— INTERNET · ACCESS_NETWORK_STATE · CHANGE_WIFI_MULTICAST_STATE(mDNS 组播锁用);
另有 2 条属于「要用才开」的可选功能(v1.3.9 起)—— POST_NOTIFICATIONS(下载完成时通知)· CAMERA(网页拍照上传):
两者默认关闭,只有你在设置里打开对应开关时才会申请、系统也才可能弹窗;关着时功能不启用、也不会打扰你
(打包后清单里另有一条 androidx 自动生成的应用自有权限,不涉及用户数据 —— 见 PRIVACY.md)

完整口径(含加密存放与「仍然要注意的」那几条)见 PRIVACY.md。

贡献

欢迎提 Issue / PR —— 动手前请先读 CONTRIBUTING.md,尤其是隐私与体积红线(不引第三方 SDK、不上报、不预置地址、保持 Java、注意体积)。

- 参与本项目即视为同意 行为准则(CODE_OF_CONDUCT.md)
- 安全问题不要开公开 Issue —— 走 SECURITY.md

许可

本项目采用 MIT 许可。

变更记录见 CHANGELOG.md。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群