在设置中扫描二维码,通过 cloudflared 快速隧道在手机上于当前会话中打开 DeepSeek Harness 网页端。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-remote-tunnel-easy
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Raiyan007-gb/dsh-remote-tunnel-easy
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
该插件的 README 只有英文版本。
dsh-remote-tunnel-easy
Open your DeepSeek Harness session on your phone — by pointing the camera at it.
Scan the QR in Settings → Plugins and the harness opens in your phone's
browser, inside the session you are already working in. Same workspace, same
chat. No typing a URL. The dsh web terminal prints nothing.
⚠️ Renamed from
qrcode-hassle-free— previouslyRaiyan007-gb/dsh-qrcode-hassle-free(npmqrcode-hassle-free). Nowdsh-remote-tunnel-easy(Raiyan007-gb/dsh-remote-tunnel-easy, npmdsh-remote-tunnel-easy@1.4.2). If you installed the old name, migrate first — remove the old bundle, then add the new one.
A one-command DeepSeek Harness web bundle that brings QR-based remote
handoff to the Settings page. It starts a cloudflared quick tunnel, loops
your phone into the exact session the desktop is using, and draws the QR code
plus settings right next to your other plugins — no terminal noise, no
database, no Firebase, no app install.
- Scan to open — a real QR code in Settings → Plugins, fresh every run
- Same session — the phone lands inside the chat and workspace you are already in
- Self-installing — detects
cloudflared, and downloads it (SHA-256 verified) when missing - Regenerate — one click mints a fresh tunnel URL for the same session, without restarting
- Editable settings — tunnel target,
cloudflaredpath, and session handoff from the page - Nothing stored — the tunnel URL is random per run; nothing is saved anywhere
- Everywhere — Windows (x64/x86), macOS (Intel/Apple Silicon), and Linux (x64/arm64)
At a Glance
| Question | Answer |
|---|---|
| What is it? | A dsh bundle that shows a scannable QR code and access link in the Settings page, so a phone opens the harness inside the active session. |
| Who is it for? | Anyone running dsh web who wants their phone on the same session without typing tunnel URLs and tokens. |
| What do I get? | A loopback edge proxy, a cloudflared quick tunnel, same-session handoff, and a live QR + settings card in Settings → Plugins. |
| What does it run on? | Windows, macOS, and Linux — anything dsh runs on. |
| Is cloud required? | No account or signup. cloudflared is used, and auto-downloaded on first run when missing; the tunnel is public, and the token in the link is the gate. |
Get Started
Run dsh web once so a profile exists — that is the only prerequisite.
cloudflared is no longer something you install by hand: on first tunnel start
the bundle probes your PATH, and when no cloudflared is found it downloads
the official pinned binary (SHA-256 verified), caches it under your user cache
directory, and reuses it from then on. Prefer your own install? Put it on
PATH, or set the cloudflared path field in the card to an absolute path —
an explicit path disables both probing and downloading.
The simplest path — install from the npm registry with the plugin name:
dsh plugin --profile web add dsh-remote-tunnel-easy@latest --config.minimumReleaseAge=0
The --config.minimumReleaseAge=0 flag bypasses pnpm's ~24-hour release-age
gate, so a freshly published version installs immediately. Without it, a plain
dsh plugin --profile web add dsh-remote-tunnel-easy still works but may hold off
until the freshness window lapses.
Or, if you prefer, install straight from the GitHub repository URL:
dsh plugin --profile web add https://github.com/Raiyan007-gb/dsh-remote-tunnel-easy
For a local checkout instead, clone it and add the folder:
git clone https://github.com/Raiyan007-gb/dsh-remote-tunnel-easy
dsh plugin --profile web add \./dsh-remote-tunnel-easy
These initialize the profile if needed, link the package, and register the
bundle. No build step — the package ships plain ESM with zero runtime
dependencies (the QR encoder and cloudflared resolver are vendored in-tree),
so add and remove stay fast and never run install scripts.
Security note: installing from a git URL asks for permission to run the package's install scripts. This package has none (plain ESM, no
postinstall), but pin a commit —#<sha>on the URL — to freeze what runs. To skip install permissions entirely,pnpm packa tarball anddsh plugin --profile web add ./dsh-remote-tunnel-easy-1.1.0.tgz.
Then restart dsh web — the QR and settings appear on Settings →
Plugins → DSH Remote on every start.
What it does
On every dsh web start the bundle:
- Spawns a loopback edge proxy (127.0.0.1, ephemeral port) that forwards every
request and WebSocket upgrade to the harness, rewriting
HostandOriginto the loopback authority. This is what makes the harness's/apibrowser-trust fence accept tunneled traffic — the fence requiresOrigin == Host, and a phone'sOriginis the tunnel hostname, which--http-host-headerrewriting alone can never satisfy. Without the proxy the app loads but every API call 403s. - Locates
cloudflared— the configured cloudflared path override, else a binary onPATH, else a pinned download (2026.8.2) SHA-256 verified and cached under the user cache directory. It then spawnscloudflared tunnel --no-autoupdate --url http://127.0.0.1:<proxy-port>pointed at that proxy. - Waits for cloudflared to print the random
https://<name>.trycloudflare.comURL. - Resolves this process's launch token via the harness connection service
(
authenticatedUrl— the same mint the console line prints). - Seeds the most recently active session id into every served index page (via
the webserver's index-injection table), gated to non-loopback origins and
once per tab — so any tunnel entry lands inside the session the desktop is
working in. The id is resolved on the Host at render time (cached, refreshed
every 15s); the phone makes no
/apicall for the seed itself. - Registers a token-gated
/remote-handoffroute as a fallback entry path: same seeding, then the normal token→cookie login (SHA-256 constant-time compare). Prefix-matched, so/remote-handoffand/remote-handoff/both work. - Registers a
remote-handoffsettings namespace and a loopback-only bridge (/api/dsh-remote-handoff-settings). The card in Settings → Plugins → DSH Remote reads the tunnel status (QR matrix + access link) from that bridge and draws them in the page, alongside the editabletunnelTarget/cloudflaredPath/sessionHandoffsettings. The Regenerate button restarts the tunnel in place for a brand-new URL on the same session, and an empty tunnel target auto-fills the harness's own loopback address. Thedsh webterminal prints nothing.
Requirements
- No manual
cloudflaredinstall — downloaded automatically when missing (Windows x64/x86, macOS Intel/Apple Silicon, Linux x64/arm64); any other platform needs acloudflaredonPATHor an explicit cloudflared path. - Network access on first run (to reach GitHub for the binary download)
- Node — already present where
dshruns - Phone on any network — the tunnel is public; the token in the URL is the only gate, so treat the shown link like a password.
Migrating from qrcode-hassle-free
Previously this plugin was named qrcode-hassle-free (Raiyan007-gb/dsh-qrcode-hassle-free on GitHub, qrcode-hassle-free on npm). It is now dsh-remote-tunnel-easy (Raiyan007-gb/dsh-remote-tunnel-easy, dsh-remote-tunnel-easy@1.4.2). The old npm package is unpublished.
If you installed the old name, remove it first, then add the new one and restart dsh web:
dsh plugin --profile web remove qrcode-hassle-free
dsh plugin --profile web add dsh-remote-tunnel-easy@latest --config.minimumReleaseAge=0
Restart dsh web — the QR and settings now appear under Settings → Plugins → DSH Remote as before.
Removing
dsh plugin --profile web remove dsh-remote-tunnel-easy
and restart dsh web.
License
MIT — use it, modify it, ship it. See LICENSE.
Citation
If you use dsh-remote-tunnel-easy in your research or project, please cite:
@software{dsh_remote_tunnel_easy,
title = {dsh-remote-tunnel-easy: Hassle-free remote tunnel for DeepSeek Harness},
author = {Raiyan},
url = {https://github.com/Raiyan007-gb/dsh-remote-tunnel-easy},
year = {2026},
version = {1.4.2}
}
Built for the DeepSeek Harness — scan, open, keep working.
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-remote-web-ui★ 8707
手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
zhu1090093659/dsh-web#packages/dsh-ssh★ 8707
SSH 远程运维面板:Web 终端、SFTP 传输、本地端口转发与一条命令并发集群执行,Agent 与面板共用同一份主机配置。
saya-ch/dsh-mobile★ 449
通过 Android App 或手机浏览器访问 DeepSeek Harness,支持安全局域网连接、远程访问、持久设备配对和可自定义移动界面。
liguobao/ds-harness-remote★ 327
DeepSeek Harness 多端远程访问:从手机、平板、浏览器或另一台电脑继续进行中的会话,端到端加密通道(Noise IK + 自适应 Relay/WebRTC 传输),设备授权管理;远程端仅开放 ApiProxy 能力,支持 dsh-file-viewer 只读文件预览,不提供 Shell、远程桌面或写入权限。
ZSeven-W/dsh-ios★ 322
在对话里直接操作 iOS 模拟器或 USB 连接的 iPhone:22 个 Agent 工具用于启动、构建、按无障碍标识或 OCR 文本驱动 UI、列表行操作与 SwiftUI 预览热重载,并附带可点击拖拽的流式侧边栏面板。
wenbin-wb/dsh-bridge★ 195
DeepSeek Harness 远程与移动端接入插件:提供局域网扫码直连、Cloudflare 与自建公网隧道,以及微信、QQ、飞书、Telegram 机器人交互,内置安全认证与访问控制。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。