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

手机访问 lwx071001/dsh-mobile-console

DeepSeek Harness
lwx07100129 天前有提交已提供中文文档扫描:未发现敏感能力

扫码在手机浏览器打开同一份会话界面

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lwx071001/dsh-mobile-console
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/1) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

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

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:27:56

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 3 处,展示前 3 条)
  • 发起网络请求
    plugin/client.js:1028
    const response = await fetch(path, init)
  • 写入剪贴板
    plugin/client.js:1075
    navigator.clipboard.writeText(value).then(() => commit({ copied: true }), () => {})
  • 发起网络请求
    plugin/index.js:162
    const upstream = http.request({
扫描于 2026/10/31(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 扫码手机打开
  • 局域网桥按需开启
  • 同一份会话界面

在手机上打开 DeepSeek Harness(DSH):扫一个二维码,走一条只在开启时才运行的局域网桥,不用 --host 重绑,看到的就是原版 Web 界面——一个 DSH 插件。

README

由 DeepSeek 最新模型翻译生成
mobile-console — DSH 插件:手机访问 在手机浏览器里打开这台电脑上的 DeepSeek Harness:点侧边栏底部的「手机访问」,开启通道,扫二维码——手机上出现的就是同一个界面、同一份会话。 - 桌面端:侧边栏底部一个小按钮 → 一个小窗(不遮挡、不接管界面),里面有一个二维码、一条地址、三步连接说明,以及开关。 - 手机端:系统相机扫二维码 → 打开浏览器 → 就是完整的 DSH Web GUI,可以直接看会话、发消息、处理审批、看任务与目标。 上一版是一个「手机专用控制台」:点开后全屏接管主界面、功能很多、还回不去。 那一版被否决了,也已整体删除——本版只做一件事:把界面递到手机上。
展开完整文档(README 剩余 1 节)
mobile-console — DSH 插件:手机访问

在手机浏览器里打开这台电脑上的 DeepSeek Harness:点侧边栏底部的「手机访问」,开启通道,扫二维码——手机上出现的就是同一个界面、同一份会话。

- 桌面端:侧边栏底部一个小按钮 → 一个小窗(不遮挡、不接管界面),里面有一个二维码、一条地址、三步连接说明,以及开关。
- 手机端:系统相机扫二维码 → 打开浏览器 → 就是完整的 DSH Web GUI,可以直接看会话、发消息、处理审批、看任务与目标。

上一版是一个「手机专用控制台」:点开后全屏接管主界面、功能很多、还回不去。
那一版被否决了,也已整体删除——本版只做一件事:把界面递到手机上。

English — A DeepSeek Harness (DSH) plugin that opens this machine's Harness on a phone. The sidebar gains one capsule button; it opens a small window with a QR code, the address, and a switch. Scanning it loads the same Web GUI and the same sessions — the plugin's own LAN bridge forwards to the loopback server, so there is no --host 0.0.0.0, no server rebind, and no second client to keep in step. Bundles are installed by address: github:lwx071001/dsh-mobile-console#path:/plugin → Harness Plugins → 添加插件 → restart once. MIT licensed. (手机访问 / 手机远程 / 二维码连接)

Keywords: dsh dsh-plugin deepseek-harness deepseek cordis plugin mobile
phone qr-code lan bridge remote-access web-gui.

安装

前置:已经装好 DeepSeek Harness(Desktop 应用,或 dsh 命令行)。

这个插件不在 npm 上,安装 = 把仓库里的 plugin/ 目录作为一个本地 bundle 加进你的 profile。在 Harness 的 Plugins 页面 →「添加插件」里,两种都行:

方式一 · 一行地址(最省事):

github:lwx071001/dsh-mobile-console#path:/plugin

#path:/plugin 是包管理器的「仓库子目录」写法;等价的 https 形式是 https://github.com/lwx071001/dsh-mobile-console#path:/plugin。

方式二 · 本地目录:git clone https://github.com/lwx071001/dsh-mobile-console.git (或在仓库页点 Code → Download ZIP 解压),然后在同一个输入框里填入 plugin 目录的绝对路径。等价的 agent 调用: plugin_manager action: install_bundle target: <…>\plugin

装完都要 重启一次 Harness;刷新页面后侧边栏底部才会出现「手机访问」。

⚠️ 不要直接填仓库根地址(https://github.com/lwx071001/dsh-mobile-console): bundle 在 plugin/ 子目录里,根目录的 package.json 是开发用的(mobile-console-dev,没有 dsh 字段)。这一点实测过——pnpm add github:lwx071001/dsh-mobile-console 装下来的是 mobile-console-dev,装完什么都不会发生。

重启为什么不能省:宿主半体是新的 JS 模块,而 Node 的 ESM 缓存按 URL 命中,在 Harness 里停用/再启用插件行不会重新导入同一个文件(浏览器半体会随页面刷新更新)。

环境要求

| 项 | 要求 |
| Harness | Desktop 应用——本插件是针对它的行为写的:Web 服务只监听回环、ctx.connection 提供 requestRejection / authenticatedUrl、侧边栏存在 sidebar.footer.action 座位。CLI 的 dsh web 理论上同样可用,但未实测。 |
| 手机 | 与电脑在同一局域网;任一现代手机浏览器(用系统相机扫码即可) |
| 开发自检 | Node ≥ 20;pnpm install 只用于装测试依赖 jsqr(plugin/ 本身零运行时依赖) |

插件只使用宿主的公开接口,但不承诺跨版本兼容。换 DSH 版本后,30 秒验收:

1. 重启后访问 http://127.0.0.1:<端口>/api/mobile-console/handoff —— 未携带会话 cookie 时应得到 401,且响应体里不含任何令牌(这条路由只回答已登录的页面);
2. 页面里点「手机访问 → 开启手机访问」,出现二维码即说明两条路由与桥都工作;
3. 离线自检:node tools/verify.mjs && node tools/smoke.mjs(106 + 50 条断言;其中桥的
代理转发与 WebSocket 升级是拿真实上游做的,不依赖 Harness)。

与同类实现的区别

手机访问 Harness 已经有不少实现(公网隧道、反向代理、独立手机客户端都有)。本插件的取舍是:

- 不改服务绑定、不为它重启:桥由插件按需建立,不需要 dsh web --host 0.0.0.0,也不需要为了对外而重启服务;关掉开关即消失。
- 手机上跑的是原版界面:转发的是同一份 Web GUI、同一份会话,不是第二套移动端客户端,也不做屏幕镜像。
- 一条地址安装:以 bundle 形式安装(#path: 子目录写法),装完只需重启一次让宿主半体载入。
- 证据随仓库走:tools/verify.mjs + tools/smoke.mjs(106 + 50 条断言);其中桥的代理转发与 WebSocket 升级是拿真实上游做的,不依赖 Harness 也能复现。

为什么需要一个「桥」

Desktop 版 Harness 用固定的 --port 19387、不带 --host 启动 Web 服务,所以 dsh-host-webserver 只监听 127.0.0.1。也就是说:

- 手机从来连不上那个端口,二维码指向局域网地址只是「永远打不开」;
- 这个绑定是启动期的配置事实,改它要改 profile 补丁 + 重启,而且会让整个部署 永久对局域网开放。

所以本插件的宿主半体自带一个局域网桥:一个只在你说「开启」时才存在的反向代理,监听 0.0.0.0 的 OS 分配端口,转发到回环上的 GUI。转发时把 Host / Origin 改写成回环权威,因此每个请求在 dsh-client-connection 眼里都和桌面窗口自己的请求一样:越过 DNS-rebinding 栅栏、复用同一张签名 cookie。桥自己不持有任何秘密、不做任何认证——没带令牌的手机拿到的就是 GUI 原样的 401。

使用

1. 刷新页面(浏览器半体随页面更新)。
2. 点侧边栏底部「手机访问」→ 小窗打开。
3. 点「开启手机访问」→ 小窗里出现二维码与地址。
4. 手机连同一个 Wi-Fi,用相机扫二维码。
5. 用完点「停止手机访问」;关掉小窗或刷新页面都会让通道消失。

若第 3 步提示「没有找到局域网 IPv4 地址」,说明这台电脑没有接入局域网。

激活需要重启一次 Harness:宿主半体的 JavaScript 换了文件内容,但 Node 的 ESM 模块缓存按 URL 命中,重新启用插件行不会重新导入同一个文件。重启后宿主半体才是新版。

目录

| 路径 | 作用 |
| plugin/ | 被安装的 bundle(package.json + cordis.patch.yml + index.js + client.js) |
| plugin/qr.js | 二维码编码器源码(只被测试导入,实现内联进 client.js) |
| tools/verify.mjs | 101 条断言:清单、补丁、路由、真实代理与 WebSocket 升级、编码器、样式 |
| tools/smoke.mjs | 48 条断言:真实 bundle 装载、座位注册、小窗生命周期与拆除 |
| tools/inline-qr.mjs | 把 qr.js 内联进 client.js(生成物由 verify 复核) |
| tools/qr-decode.mjs | 用独立解码器 jsQR 做可读性回归 |
| plugin/README.md | bundle 的安装说明与宿主路由契约 |

自检

cd dsh-mobile-console # 克隆下来的仓库目录
pnpm install
node tools/verify.mjs
node tools/smoke.mjs

五个关键设计决定

1. 小窗,不是接管。 面板是 position: fixed 的一层,挂在 <body> 上,从不改写 的标记、也不隐藏主界面;唯一占用的座位是侧边栏底部那一行。
上一次的「回不去主界面」正是全屏接管造成的,形态上被彻底去掉。
2. 桥,不是 --host 0.0.0.0。 重新绑定是启动期配置,要改 profile 补丁、要重启、且永久放大整个部署的暴露面;桥只有一个套接字、只在你开启时存在、卸载即消失,并且在没有命令行可用的 Desktop 应用里也能工作。
3. 递过去的是原版界面。 手机加载的是这个部署自己的 Web GUI,走同一套协议。
没有第二套客户端要与上游同步,也没有「手机版缺了什么功能」的问题。
4. 令牌只发给已认证的页面。 handoff 与 bridge 两条路由都先过 ctx.connection.requestRejection;令牌由 ctx.connection.authenticatedUrl() 铸造,而这个接口只在那道门之后被调用。公开路由里绝不出现凭据。
5. 半关闭要显式传递。 Node 里已升级的套接字是 allowHalfOpen,对端 FIN 只会产生 end、永不产生 close——照抄常见写法会让每台关掉标签页的手机在 GUI 侧留下一个上游套接字。verify 对真实上游断言了这件事。

安全边界(请读)

- 开启期间,同一局域网内拿到该地址的人都能打开这个 Harness。地址里的令牌是本进程级的 bearer 凭据;请只在可信网络上开启,用完点「停止」。
- 关闭后端口立即不再监听;桥不会在后台保留任何套接字。
- 手机拿到的是与桌面窗口同等的权限(它就是同一个已认证会话)。
- 插件的宿主半体不做任何超出「转发到回环」的事:无 TLS 终止、无凭据存储、无第二条协议。

验证记录

| 项 | 结果 |
| node tools/verify.mjs | 106 条断言全过(含真实上游的代理转发、Host/Origin 改写、WebSocket 101、关闭后端口不再监听、卸载即关闭桥、侧边栏通栏胶囊与无填充强调色) |
| node tools/smoke.mjs | 50 条断言全过(真实 bundle 装载 → apply → 座位注册 → 开/启/停/关闭 → 收起栏只留状态点 → 全部 effect 拆除干净) |
| cordis_inspect 实时服务契约 | ctx.get("connection") + requestRejection + authenticatedUrl 与代码用法逐项一致 |
| 对着正在运行的 GUI 的在线桥测试 | 用本进程的 plugin/index.js 直接起桥(upstreamPort=19387),以 192.168.71.25:<bridgePort> 为权威发起请求:匿名 GET / → 401;带会话 cookie GET / → 200(36456 字节,含 __DSH_BOOT__);/assets/index-5SrrfWpU.js → 200(633245 字节);/api/remote.mux 匿名 → 401、带 cookie → 101 websocket;close() 后端口拒绝连接 |
| 在线探测(重启前) | GET /api/mobile-console/handoff 仍返回旧版载荷 ⇒ 确认宿主半体需要重启才生效 |

在线桥测试用的会话 cookie,是按本机 ~/.dsh/.credentials.yaml 里 client-connection/browser-session 的签名密钥、针对权威 127.0.0.1:19387 现签的,所以它证明的正是手机将走过的同一条路径:局域网权威 → 桥 → 回环权威 → 签名 cookie。

仍未验证

- 真机:手机上的触控、软键盘、安全区,以及二维码在真实相机下的识别;这里只有 jsQR 的离线解码证据(8 个载荷、版本 1–10)。
- 重启后的插件激活:上面的在线桥测试是直接在进程外调用 plugin/index.js 完成的;插件行本身在重启之后才会加载这份新宿主代码,重启前的在线探测仍返回旧载荷。
- 局域网里存在多张网卡时,二维码默认用第一张网卡的地址(其余地址列在 addresses 里但界面上不显示)。

许可

MIT © 2026 lwx071001
预览分享卡片长什么样 ↓lwx071001/dsh-mobile-console
分享 · DeepSeek Harness Hub
lwx071001/dsh-mobile-console

扫码在手机浏览器打开同一份会话界面

回到顶部