把手机连上自托管主机,随时远程操作终端与文件
38.2/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add citrusli2026/dsh-mobile-shell该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 36 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-mobile-shell @ 0.7.6
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 03:45:57
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 读取密钥环境变量proxy/dsh-remote.mjs:113
const TOKEN = process.env.DSH_REMOTE_TOKEN - 读取密钥环境变量proxy/dsh-remote.mjs:142
const UPSTREAM_TOKEN = process.env.DSH_UPSTREAM_TOKEN - 发起网络请求proxy/dsh-remote.mjs:152
const upstream = http.request({ - 读取密钥环境变量proxy/dsh-remote.mjs:197
const TLS_KEY_PATH = process.env.DSH_TLS_KEY - 发起网络请求proxy/dsh-remote.mjs:611
const upstream = http.request({ - 发起网络请求proxy/dsh-remote.mjs:673
const req = http.request({ host: TARGET_HOST, port: TARGET_PORT, path: '/', method: 'GET', timeout: 2000 }, (res) => { - 发起网络请求proxy/dsh-remote.mjs:1056
const upstream = http.request({ - 读取密钥环境变量proxy/e2e/web-flow.spec.mjs:3
const MASTER_TOKEN = process.env.DSH_REMOTE_TOKEN
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 连接自托管主机
- 远程操作终端
- 远程管理文件
社区移动端外壳(WebView 瘦客户端)+ token 守卫代理,为自托管 DeepSeek Harness 打造——支持 Android 和 iOS。非 DeepSeek 官方产品。
README
由 DeepSeek 最新模型翻译生成dsh-mobile-shell
DeepSeek Harness(dsh)的社区开源移动壳:一个轻薄的 WebView 应用,把你的手机连接到你自己托管的 dsh web 主机;配套一个令牌反代,把主机安全地暴露到局域网。
非 DeepSeek 官方产品。 这是基于 MIT 许可上游构建的社区配套客户端。harness 本体从不在手机上运行:所有工具执行(shell、文件、终端、LSP……)都留在你的主机上,因此移动版天然与桌面 Web 版功能一致。
仓库内容
| 路径 | 说明 |
| app/ | Capacitor 8 双端壳:配对启动页(主机地址 + 设备会话,可记忆),随后 WebView 直接加载主机伺服的原版前端——App 与主机版本永不脱节 |
| proxy/ | dsh-remote:零依赖 Node ≥20 反代。
展开完整文档(README 剩余 1 节)
dsh-mobile-shell DeepSeek Harness(dsh)的社区开源移动壳:一个轻薄的 WebView 应用,把你的手机连接到你自己托管的 dsh web 主机;配套一个令牌反代,把主机安全地暴露到局域网。 非 DeepSeek 官方产品。 这是基于 MIT 许可上游构建的社区配套客户端。harness 本体从不在手机上运行:所有工具执行(shell、文件、终端、LSP……)都留在你的主机上,因此移动版天然与桌面 Web 版功能一致。 仓库内容 | 路径 | 说明 | | app/ | Capacitor 8 双端壳:配对启动页(主机地址 + 设备会话,可记忆),随后 WebView 直接加载主机伺服的原版前端——App 与主机版本永不脱节 | | proxy/ | dsh-remote:零依赖 Node ≥20 反代。dsh web 保持 loopback(上游刻意禁止绑 0.0.0.0),代理负责网络可达、逐请求(含 WebSocket 握手)的常量时间令牌门,并直接伺服启动页(Web 模式,ADR-0007) | | scripts/ | 一键安全局域网启动与验证工具(启动页回归、真实 dsh HTTP/HTTPS/WSS 代理矩阵、CDP 驱动的 Android 端到端) | | docs/ | 架构分析、可行性研究、PoC 实录,以及全部关键决策的 ADR | 移动 UI 插件 dsh-mobile-ui 曾以树外客户端插件形式为主机 Web UI 提供移动导航(底部导航栏、会话抽屉),但原公开仓库当前无法访问,已放入 移动端后移 backlog。在恢复并固定版本前不要按旧链接安装;基础壳和 Web 模式不依赖该插件。 Web 产物:给桌面端或外部主机使用 Web 集成与 Capacitor 工程隔离。根目录脚本只打包运行所需的 Node 代理、启动页和二维码模块,不包含 app/android、app/ios、原生依赖或开发工具: cd dsh-mobile-shell npm run package:web 产物:dist/web/ npm run verify:web dist/web/web-artifact.json 是稳定的集成契约,声明 proxy、launcher 和 pairing 三个入口以及格式版本。桌面端只读取这个 manifest;因此本仓库内部可以继续调整源码目录,桌面端不需要跟着改路径。发布时可直接分发目录,或打成压缩包: tar -czf dist/dsh-mobile-shell-v1.0.2-web.tar.gz -C dist/web . 外部主机只需自行启动 loopback 上的 dsh web,再启动产物中的代理;两者是独立进程: npx @deepseek-ai/dsh web --port 3080 DSH_REMOTE_TOKEN="$(openssl rand -hex 16)" \ DSH_TARGET_PORT=3080 \ node dist/web/start.mjs 默认代理监听 0.0.0.0:3081,会提供 Web 启动页、一次性配对码和二维码所需的配对 URL。可用 DSH_LISTEN_HOST、DSH_LISTEN_PORT、DSH_TARGET_HOST、DSH_TARGET_PORT 覆盖地址;公网使用时还应同时配置 DSH_TLS_CERT、DSH_TLS_KEY 和可信的 DSH_PUBLIC_URL。明文 HTTP 只适用于可信局域网或组网网络,不要做端口转发。 上游认证:0.1.2-alpha.2 起的 dsh web 只向持有单次启动令牌或签名浏览器 cookie 的请求提供 UI 首页文档。把启动令牌通过 DSH_UPSTREAM_TOKEN 传给代理后,代理会用它换取该 cookie 并附在每一条转发请求上——设备仍然只对代理认证。不传该变量时,已认证内核会用自己的 401 拒绝被转发的首页请求。 设备管理:每台配对设备都会登记进 DSH_STATE_FILE(默认 proxy/dsh-devices.json;0600 权限、原子写入,文件损坏时拒绝启动)。浏览器打开 /admin 并输入主令牌,即可查看设备列表(名称、签发时间、最后使用、到期)、单独吊销某台设备、签发新配对码或下载 SVG 二维码。启动页提供「退出当前设备」「忘记此主机」;会话被吊销或过期时会给出明确的重新配对引导,而不是笼统的 401。轮换 DSH_REMOTE_TOKEN 可一次性吊销全部设备。详见 ADR-0010 与反向代理与组网部署指南。 桌面端集成示例:先在本仓库生成 dist/web,再在 dsh-desktop 中执行 DSH_MOBILE_SHELL_WEB_ROOT=/绝对路径/dsh-mobile-shell/dist/web pnpm run build。Electron 安装包只携带这一份 Web 产物,Android/iOS 工程仍属于本仓库的独立发布面。 版本号 当前项目版本为 1.0.2,唯一来源是根目录 package.json。代理包、Capacitor 包、Android 的 versionName、iOS 的 MARKETING_VERSION 和 Web 产物 manifest 都会与它校验一致: npm run verify:version npm run package:web 发布标签统一使用 v 格式;发布前可用 node scripts/verify-version.mjs v1.0.2 显式校验。推送匹配标签后会自动构建并发布 Android、iOS 和 Web 三类产物。已有历史标签不回写。 快速开始:启动 / 扫码 / 确认 推荐只执行这一条命令;它会自动启动 loopback 上的 dsh web 和局域网代理,选择一个私有局域网 IPv4,生成本次运行专用的随机主令牌,并打印离线二维码: node scripts/start-lan.mjs 然后只需三个步骤: 1. 启动:在电脑上运行上面的命令,并保持终端运行。 2. 扫码:手机与电脑连接同一 Wi-Fi,扫描终端二维码。 3. 确认:手机浏览器点击一次“确认配对并连接”,直接进入 Harness。 扫码场景不需要输入 IP、配对码或令牌。脚本拒绝公网 IP、0.0.0.0 和继承的公网/TLS 配置;如果电脑有多个局域网地址,可显式指定:DSH_LAN_IP=192.168.1.23 node scripts/start-lan.mjs。明文 HTTP 仍只适用于可信局域网,不要做路由器端口转发。 高级模式才需要分别启动主机与代理: npx @deepseek-ai/dsh web --port 3080 DSH_REMOTE_TOKEN=$(openssl rand -hex 16) node proxy/dsh-remote.mjs 手机(同一 Wi-Fi)——也可以使用 App: - Web 模式(零安装,ADR-0007):扫描终端二维码后,浏览器会打开启动页、清理扫码 fragment 并预填配对码;确认一次即可进入。主令牌全程不离开电脑。 - App:安装壳,填 http://:3081 与配对码("令牌连接"保留为高级入口)。记忆主机后一键重连。 - Android:从 Releases 直接下载 APK 安装。 - iOS:从源码构建(见下)或等待 TestFlight——苹果没有免签名的直接安装路径。 Web 验证状态(2026-09-04):已通过。 已对真实 dsh web 完成扩展自动化矩阵:HTTP 36/36、HTTPS/WSS 36/36(令牌门禁、WebSocket、跨站、配对,以及设备生命周期的吊销/退出/到期/损坏状态/重启持久化);设备生命周期矩阵独立通过 18/18。Playwright Chromium、WebKit、移动 Chrome、移动 Safari 24/24 通过:二维码深链 → 确认 → Harness → 刷新保持会话、退出登录、服务端吊销与重新配对恢复、/admin 管理台、中英文切换。见 安全加固实录 与路线图。 从源码构建 git clone https://github.com/citrusli2026/dsh-mobile-shell.git cd dsh-mobile-shell/app && npm install Android(JDK 17–21;Gradle 下载已配好国内镜像,见文档) cd android && ./gradlew assembleDebug → app/build/outputs/apk/debug/app-debug.apk iOS(需要 Xcode;完全离线——Capacitor 的 SPM 二进制已 vendor 并通过 sha256 核验,见 docs/decisions/ADR-0005) xcodebuild -project ios/App/App.xcodeproj -scheme App -configuration Debug \ -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' \ -derivedDataPath ios/build build 下载慢?npm / Gradle / Maven / Node 头文件的国内镜像配置汇总在 docs/02-build-and-dependencies.md 第 4 节。 安全模型——暴露之前必读 - 代理对每个请求和每次 WS 握手强制校验;未配置主令牌 DSH_REMOTE_TOKEN 时拒绝启动。配对码签发 30 天有效的签名设备会话:浏览器只得到 HttpOnly Cookie,主令牌不会进入响应正文、URL 或浏览器存储;设备会话不能继续签发配对码。未授权访客只能看到启动页,跨源的已认证 API/WS 请求也会拒绝。 - 默认明文 HTTP:仅限可信局域网或 Tailscale 等组网内使用。公网暴露请启用 TLS,但证书由你提供(DSH_TLS_CERT/DSH_TLS_KEY——真实 CA 签发的域名证书;自签证书在原生 WebView 里不可用,见 ADR-0006)。 - Android/iOS 工程因此放开了明文开关;TLS 落地时必须同步收回(ADR-0004)。 路线图 | 阶段 | 内容 | 状态 | | 1 | PoC:壳 + 令牌代理,双端模拟器局域网验证 | ✅ 已完成(实录) | | 2 | 配对码、代理可选 TLS | ✅ 已完成(实录) | | Web | 浏览器零安装、设备会话与安全加固 | ✅ 已完成并通过端到端验证(实录) | | 3 | Web 二维码、完整设备生命周期、管理/部署体验与国际化 | Web-first 进行中——路线图 | | 4 | Android/iOS 构建、签名、移动 UI 与真机发行门禁 | 后移——真机清单 | | 5 | 推送、完整离线壳等高成本体验功能 | Web 稳定后评估 | 文档 - docs/README.md——总索引:项目分析、构建与依赖指南、可行性研究、PoC 实录 - Web 二维码配对实录——离线二维码、扫码深链与验证结果 - docs/decisions/——ADR-0001…0009,每个关键决策一份 许可证 MIT。vendored 组件(如 app/ios/vendor/ 下的 Capacitor iOS 二进制)保留各自许可证。DeepSeek Harness 本体由 DeepSeek AI 以 MIT 许可发布。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
citrusli2026/dsh-mobile-shell
把手机连上自托管主机,随时远程操作终端与文件
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目