dsh-mobile

DSH PLUGIN会话与消息

仓库 s17179XTY/dsh-mobile · npm dsh-mobile

会话与消息 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-mobile 是 DeepSeek Harness 的手机连接插件,通过局域网配对桥接,让手机扫码配对后即可在移动端管理会话、发送提示词,并在 Web 界面显示手机连接状态。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 3 复刻 0 · 未关闭 issue 0
最近更新 2026-08-17 创建于 2026-08-16
README 9.1 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:s17179XTY/dsh-mobile
兼容 DSH 版本0.2.0-rc.2 等 12 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名dsh-mobile可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-mobile:让手机通过扫码配对连接 DeepSeek Harness 的 DSH plugin

  • 扫码配对,桌面审批
  • 移动端 DSH 客户端
  • 设置栏手机入口
  • 默认安全,仅局域网

上游标签

deepseek-harnessdeepseek-harness-plugindeepseek-harness-pluginsdshdsh-plugindsh-pluginsplugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
  • L4.4_RESOLVED_ARTIFACT 安装版本已解析 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询
— · 其它检查项
  • L4_0_SANDBOX 沙盒安装判定 方式:沙盒安装执行

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方s17179XTY仓库 dsh-mobile · 默认分支 main
分类会话与消息client
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue3 / 0 / 0收录时的数值,非实时
创建 / 更新2026-08-16 · 2026-08-17最后推送 2026-08-17
本站收录2026-08-16首次进入本站目录的时间

README 全文

9.1 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-mobile — Phone Connect for DeepSeek Harness

dsh-mobile is a DeepSeek Harness (DSH) plugin that brings the official
phone-connect experience to any DSH web profile: a LAN pairing bridge, a
mobile-optimized DSH client for your phone, and a phone entry in the
settings row of the web GUI. It is a faithful port of the
dsh-desktop phone-connect
feature.

This plugin is built for DeepSeek Harness, not for any specific shell
app.
It works in every deployment that runs a DSH web profile — plain
dsh web from the CLI, Bigfish, DSH Desktop-style desktop shells, or any
other wrapper. It contains no Bigfish- or DSH Desktop-specific code.

dsh-mobile 是面向 DeepSeek Harness 本体 的插件:任何运行 DSH web profile
的部署(命令行 dsh web、Bigfish、类 DSH Desktop 的桌面壳、或任何封装)都可以
安装使用,不绑定任何特定应用。

Features

  • QR pairing with desktop approval — your phone scans a QR code (30-minute
    rotating token, timing-safe), the desktop confirms, and the phone gets an
    HttpOnly session cookie.
  • Mobile DSH client — workspaces, session list, chat history, send prompts,
    stop generation; served by the bridge and fully usable over the LAN.
  • Settings-row phone entry — a phone icon sits at the right end of the
    settings row; it shows a green connection dot while a phone is paired,
    and opens the pairing/manage dialog (QR + copy + countdown + approve/deny +
    disconnect).
  • Safe by default — private-network-only listener on a random port,
    loopback-only desktop endpoints, RPC allowlist (workspace.list,
    session.list, session.history, session.create, session.prompt,
    session.cancel), strict CSP headers.

Architecture

Phone ──HTTP──▶ lan-bridge.mjs (LAN, random port)
│  QR pairing / mobile client / allowlisted RPC
│  (RPC forwarded to the harness /api with the
│   client-request envelope)
▼
Harness web UI ──▶ /phone-connect/bridge  (host plugin, same-origin)
│  bridge snapshot: port/status/connected/desktopUrl
▼
/desktop* loopback endpoints (CORS for the GUI origin)
Piece File Role
Bridge lan-bridge.mjs Standalone Node HTTP server on 0.0.0.0 (random port): pairing, mobile client, RPC forwarding, /desktop* JSON/QR endpoints with CORS.
Pages pages.mjs Verbatim ports of dsh-desktop's mobile client and pairing pages (brand name parameterized).
Host plugin lib/index.js Spawns/monitors the bridge (auto-restart, capped), exposes /phone-connect/bridge + /phone-connect/config.
Client plugin lib/client.js __ModuleLoader__ bundle: settings-row phone entry (green dot), pairing dialog, copy/countdown/approve UI.

Install (安装)

Requires a DeepSeek Harness web profile (any deployment — the profile
mechanism is core DSH, so this works on plain dsh web, Bigfish, desktop
shells that mount a web profile, etc.).

dsh plugin --profile web add https://github.com/s17179XTY/dsh-mobile
# or via the DSH plugin market / dshmarket UI

Then restart the harness (or re-boot the profile) so the cordis.patch.yml
row mounts. The package depends on qrcode, installed automatically by the
profile's package manager.

Shell integration (壳侧整合)

"Shell" here means the app that hosts the harness around the web profile. The
plugin integrates with the shell at two levels:

1. Web GUI shell — built in (无需额外工作)

The plugin's browser half registers into the web profile's own slot system:
the settings-row phone entry (with the connected-status dot) and the
pairing dialog appear in any DSH web GUI automatically. A browser-only
deployment needs nothing else.

2. Native desktop shells — integration hook provided by the plugin

For a desktop shell with its own chrome (e.g., a DSH Desktop-style Electron
app), the shell can add a native entry — a "Connect Phone…" menu item or
tray action
— that opens the bridge's desktop pairing page:

  • The host plugin publishes the bridge snapshot at GET /phone-connect/bridge,
    including desktopUrl (http://127.0.0.1:/desktop, loopback-only).
  • That page is the full pairing/manage UI (QR, auto-refresh, approve/deny,
    disconnect) — exactly what dsh-desktop shows in its own Electron window.
  • A shell can therefore discover the URL with one same-origin HTTP call and
    open it in a small window — no configuration, no credentials.
Shell (native chrome) ──GET /phone-connect/bridge──▶ desktopUrl
│                                              │
└──── open http://127.0.0.1:/desktop ◀───┘   (loopback-only page)

Can DeepSeek Harness do this? / DeepSeek Harness 能做到吗?

Yes. Every runtime piece the plugin needs is core DeepSeek Harness
capability available to any profile: the profile-plugin mechanism
(cordis.patch.yml + dsh plugin add), webServer route registration,
the subprocess service, the standalone LAN bridge, and the browser-side
slot system. Nothing in this plugin depends on a particular shell app.

The one thing a plugin cannot do from inside the harness is inject native
menu items into a desktop shell's own menu bar — that chrome belongs to the
shell's code (it is exactly how dsh-desktop ships its "Harness → Connect
Phone…" item natively). For that case the plugin provides the
desktopUrl hook above, and the shell wires a menu/tray item to it.

Usage

  1. Open the web GUI and find the phone icon at the right end of the
    settings row (bottom-left sidebar).
  2. Click it → the pairing dialog opens with a QR code (valid 30 minutes;
    auto-refreshes on expiry; Copy button next to the URL).
  3. On your phone, keep it on the same trusted Wi-Fi, scan the QR with the
    camera (or open the copied URL).
  4. The dialog shows the pending phone — click 允许 / Allow.
  5. The phone opens the mobile DSH client. The connection stays active in the
    background; the icon shows a green dot while connected. Reopen the
    dialog to disconnect or refresh the QR.

> The pairing URL stays valid across dialog sessions for its full lifetime —
> only an expired token is rotated.

Security

  • The bridge binds 0.0.0.0 on a random port and rejects non-private
    clients (10/8, 172.16/12, 192.168/16, ULA/link-local IPv6).
  • /desktop* endpoints are loopback-only; CORS is granted only to the
    harness GUI origin.
  • Pairing token: 32 random bytes, timing-safe comparison, 30-minute TTL.
  • Phone sessions: HttpOnly, SameSite=Strict cookie.
  • The mobile client can only call the allowlisted RPC methods.
  • Keep it on a network you trust. Remove the dsh-mobile row from
    cordis.patch.yml (or uninstall) when you do not need phone access.

Troubleshooting

  • Dialog stuck on "桥已停止,正在自动重试…" (bridge stopped, retrying).
    Refresh the page first. If it persists, verify the bridge is actually up:
    GET /phone-connect/bridge on the harness origin should return
    {"status":"running", ..., "port": }; the bridge's own
    http://127.0.0.1:/desktop/snapshot should return
    {"running": true, ...}. The dialog accepts both liveness fields.
  • The browser tab no longer shows the plugin. The web shell picks a
    random port on each start, so a hand-opened tab keeps pointing at a dead
    port. Reopen the current harness URL (desktop shells reopen their own
    window automatically).
  • Pairing URL says "invalid or expired". The token lives 30 minutes and
    is only rotated when actually expired — a copied URL stays usable for its
    full lifetime. A URL from an older rotation (or before a plugin update
    restarted the bridge) is intentionally dead; open the dialog to get a
    fresh one.
  • Bridge keeps restarting. The host auto-restarts a crashed bridge up to
    5 times (3 s apart); the error field of /phone-connect/bridge carries
    the last exit reason and stderr tail.

Configuration

  • --locale zh|en and --app-name are passed to the bridge by the host; the
    web UI posts its locale automatically to /phone-connect/config.
  • The harness URL is derived from webServer.port, so a changed GUI port
    needs no configuration.

Development

npm install        # dev deps (qrcode etc.)
npm run check      # node --check on all sources
npm test           # end-to-end bridge test (HARNESS_URL overrides the target)

The bridge can also be run standalone:

node lan-bridge.mjs --harness-url http://127.0.0.1:6730 \
--gui-origin http://127.0.0.1:6730 \
--locale zh --port 0

License

MIT — see LICENSE. The phone/mobile pages are ports of code from
dataelement/dsh-desktop
(MIT).

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-mobile 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:s17179XTY/dsh-mobile` 即可。对应的 npm 包名是 `dsh-mobile`。

dsh-mobile 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-mobile 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-mobile 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2、0.1.3-alpha.2。版本较多,只列出前 8 个。

dsh-mobile 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-mobile 有哪些功能?

扫码配对,桌面审批、移动端 DSH 客户端、设置栏手机入口、默认安全,仅局域网。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

8 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

s17179XTY 的其它插件

1 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。