Blank-not-black/dsh-Remote
DSH Remote · 口袋里的 DSH 控制台 会话 · 审批 · 提问 · 文件传输,局域网 / Tailscale 直连 多服务器自动选优,聊天记录离线可看 带 Token 鉴权,数据只在你的设备之间流动 Sessions · approvals · questions · file transfer over LAN / Tailscale. Automatic fastest-server selection. Chat history available offline. Token-authenticated — your data flows only between your devices.
Listed
8
Remote
Bundle verified
What it does
Mobile remote-control suite: bundle plugin with native sidebar entry and admin drawer, self-healing bearer-token gateway over LAN/Tailscale, Android app (sessions/approvals/questions/goals), /fs/* file transfer (Range resume, 2GB upload), latency-based multi-server auto-switch, offline chat cache.
Best for
- Android users who need remote DSH sessions, approvals, questions, goals, and file transfer from a phone.
- People operating one or more DSH servers over LAN or Tailscale who want latency-based automatic server selection.
- Workflows that need resumable large-file transfer, offline conversation history, and token-authenticated remote access.
Not ideal for
- iPhone or iPad users; the documented mobile application is Android.
- Production use requiring a fully validated macOS gateway binary; the Apple Silicon build is explicitly a preview without real-device verification.
- Workflows requiring exact background polling intervals on Android; Doze and vendor power management may delay or stop polling.
README
📱 DSH Remote
口袋里的 DSH 控制台 —— 手机远程会话 · 审批 · 提问 · 文件互传,局域网 / Tailscale 都能用
中文 · English
躺床上也能批准 DSH 的工具调用、随时查看会话、把手机照片直接传进服务器——安卓 App(Capacitor 混合应用,含相机原生插件),不是 PWA 网页套壳。装 App 即用;Windows / Linux 单文件网关,无需 Node 环境。
插件 + 内置网关 + 手机 App 是一个整体:装插件时网关随插件分发、随 DSH 自动启停,抽屉里直接拿到令牌和主机地址,手机 App 填上即可远程操控 DSH。
📥 下载
| 平台 | 文件 | 说明 |
|---|---|---|
| Android | dsh-remote.apk |
手机远程会话 / 审批 / 提问 / goal / 文件互传,支持扫码配对与 App 内更新 |
| Windows x64 | dsh-remote-win-x64.exe |
单文件网关,双击运行,免 Node 环境 |
| Linux x64 | dsh-remote-linux-x64 |
单文件网关,chmod +x 后运行,免 Node 环境 |
| macOS (Apple Silicon) | dsh-remote-macos-arm64 |
预览版:CI 盲验、未真机验证,功能更新周期较长,见下方说明 |
⚔️ 原生 dsh web vs dsh-remote
| 能力 | 原生 dsh web | dsh-remote |
|---|---|---|
| 手机端 | 无(桌面 UI 不适配窄屏) | 安卓 App + 窄屏 WebUI |
| 访问方式 | 绑定 127.0.0.1 仅本机 | 扫码配对,局域网 / Tailscale / 公网均可 |
| 文件传输 | 无 | 2GB 断点续传 + SHA-256 校验 |
| 多服务器 | 单实例 | 多服务器测速切换 |
| 离线使用 | 依赖桌面在线 | App 离线缓存 |
| 账号要求 | — | 免账号 |
🛡️ 质量保障
- 自动化测试:当前 16 项测试覆盖鉴权 / 路径穿越 / 符号链接逃逸 / Range / 断点续传 SHA-256 / 事件轮询 / Token 统计 / 发布一致性。
- CI 自动构建:APK + Linux/Win 单文件网关 + npm 发布 + 独立仓库同步。
-
Editor Picks 精选:
- 多市场收录:awesome-dsh-plugin / Oh-My-DSH / dsh-suite / dsh-plugins-store / vlln/plugin-registry。
- DSH Compat:每周自动在最新 DSH 上验证插件可安装、可加载(compat workflow)。
✨ 亮点
| 📱 安卓 App(Capacitor) | 不是 PWA 套壳:会话 / 审批 / 提问 / goal / 文件互传,一个 App 全搞定 |
| 🔐 自愈网关 | 插件内置网关随 DSH 自动启停,挂了自动拉起;Bearer token 鉴权,谁拿 token 谁操控 |
| 📦 2GB 文件互传 |
/fs/* 直连传输,断点续传 + 暂停/继续/取消 + SHA-256 完整性校验
|
| ⚡ 多服务器自动切换 | 局域网 / Tailscale 地址全填上,测速自动选当前最快的 |
| 🛡️ 路径安全 | 路径穿越与符号链接逃逸全拒绝,上传根可白名单配置 |
| 📴 离线缓存 | 网关断线时,会话列表和看过的历史仍可离线浏览 |
| 🔔 后台轮询(Android) | App 退后台后由前台服务每 30 秒~15 分钟拉取事件,待办审批/提问不遗漏;灭屏后 Doze 会拉长间隔(平台限制) |
| 🔄 令牌二维码配对 | 抽屉里扫个码,服务器地址 + 令牌一次配好 |
| 🪟 单文件网关 | Windows / Linux 免 Node 单文件二进制,独立部署也成;macOS 提供 Apple Silicon 预览版 |
| 📊 Token 统计 | 管理页 + App 内置统计页:今日四桶 / 费用 / 高峰占比与近 7 日柱状图,按北京时间高峰计费 |
| 🖥️ 桌面端 WebUI | 浏览器打开网关地址自动进入桌面布局(侧栏会话 + 文件 + 设置 + 统计抽屉 + 审批通知卡片栈),手机自动进入 App 界面 |
| 💬 三端反馈 | App 顶栏 / 桌面端侧边栏 / 管理页右上角都有入口;App 内可直接写反馈,网关转发到自建收集器,无需任何 token |
| 🎨 四套皮肤 | 默认深空 / 落日 / 易北爱乐厅 / 草原孤塔,面板一键切换,默认跟随系统深浅偏好 |
🔔 后台轮询(Android)
-
机制:App 退后台后 WebView 会被系统挂起,实时事件收不到;开启后由 Android 前台服务定时调用
GET /api/events.poll?kind=mux|host&since=...拉取增量事件,有新事件时发系统通知。 - 间隔档位:30 秒 / 1 分钟 / 5 分钟 / 15 分钟,默认 1 分钟;在 App「设置 → 后台轮询」里调整。
- Doze:灭屏后系统会冻结后台任务,实际轮询间隔可能被拉长(平台限制,非 App bug)。
- 国产 ROM:小米 / 华为 / OPPO / vivo 等默认会杀后台,请在系统设置里允许 DSH Remote 自启动、后台运行、省电策略不限制,否则前台服务可能被系统清理。
📸 截图
| 手机 App | 手机 App |
|---|---|
![]() |
![]() |
![]() |
![]() |
| 网关管理面板 | |
|---|---|
![]() |
❓ FAQ
Frequently Asked QuestionsFAQ
Use the verified command dsh plugin --profile default add github:Blank-not-black/dsh-Remote in a DSH-enabled shell. The command resolves the public package metadata and keeps the plugin attached to the catalog identity shown on this page.
Compatibility follows the bundle and profile status shown above. If a profile is not detected, keep the plugin disabled there and check the repository documentation before enabling it in production.
The GitHub link and activity metadata are the source of truth for releases and maintenance. Revisit this page after a new release to confirm the catalog has observed the latest version.




