DSH Web GUI 反向隧道:通过 frp 把 `dsh --profile web` 发布到公网地址,目录选择器改用应用内浏览器,手机或远程机器可直接打开并管理工作区。
安装
# npm 包(预构建)
dsh plugin --profile web add @froststarinquire/dsh-remote-access-web
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:wikkd/dsh-remote-access-web#path:/packages/bundle/remote-access-web
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
English | 中文
dsh 浏览器 surface 的远程访问 bundle。cordis.patch.yml 叠加在官方 dsh-web-app 表层之上:它插入 @froststarinquire/dsh-remote-access host 行,由该插件管理一条出站反向隧道,使远程设备能访问 harness web 服务。隧道后端由 provider 配置决定;随附的驱动是 frp provider(provider: 'frp'),运行一个兼容 frpc 的客户端。浏览器 surface(含手机抽屉布局与 remote-auth 配对门禁)由 dsh-web-app 承载;本 bundle 只负责隧道管理,并说明把隧道准入 /api browser-trust 围栏的启动契约。
host 插件改编自 DeepSeek Harness 源码里的 @deepseek-ai/dsh-remote-access(MIT),本仓库以 @froststarinquire scope 发布。
profile 在 dsh.profile.bundles 里把本 bundle 放在 dsh-web-app 之后。因为 bundle patch 替换整行的 config,插入的行全部从部署环境(DSH_REMOTE_ACCESS_*)读取,绝不写死字面量。未配置的安装保持惰性:插件的 provider 默认为 none,所以一个还没有隧道凭据就添加本 bundle 的 profile 不会启动任何子进程。
本 patch 还会把目录选择器固定为应用内 -browse 交互。通过反向隧道时原生 OS 对话框不可用,dsh-web-app 的自适应选择器会让远程操作者无法添加工作区。本 bundle 禁用它,改挂 dsh-host-directory-picker-browse 及其 dsh-client-ui-directory-picker-browse 表层。
配置
该行遵循部署环境变量(全部可选;provider 默认为 none):
| 环境变量 | 含义 |
|---|---|
DSH_REMOTE_ACCESS_PROVIDER |
隧道后端;frp 通过兼容 frpc 的客户端挂载隧道,缺省保持 schema 默认 none(惰性)。该字段为部署可配置,便于后续接入其它后端 |
DSH_REMOTE_ACCESS_FRPC_PATH |
frpc(或兼容程序)的绝对路径;provider 为 frp 时必填 |
DSH_REMOTE_ACCESS_FRP_ARGS |
传给 -f 的 frp 快速启动值,即 <访问密钥>:<隧道ID> |
DSH_REMOTE_ACCESS_CWD |
隧道子进程的工作目录;缺省为进程 cwd |
DSH_REMOTE_ACCESS_PUBLIC_URL |
隧道就绪后对用户展示的公网 URL;插件的 trustedAuthority() 会将其规范化为信任围栏所需的权威值 |
当 provider 为 frp 但 frpcPath/frpArgs 缺失时,所属插件会响亮拒绝激活,而非静默地在没有隧道的情况下运行。
隧道的连接地址由你自己提供——插件从不内置默认端点。请用上方环境变量设置你自有提供方的公网主机(DSH_REMOTE_ACCESS_PUBLIC_URL)与启动凭据(DSH_REMOTE_ACCESS_FRP_ARGS);不设置时,安装保持惰性。
启动契约
隧道的公网权威值必须在启动时进入 /api browser-trust 围栏——围栏只在 dsh-web-app 提供 webRuntime 时采样一次,运行期插件无法事后补挂。请把 <your-tunnel-host:port> 换成你自己的隧道权威值,以可信 host 启动(并按需开启远程 facade):
dsh --profile web \
--trusted-host <your-tunnel-host:port> \
--allow-remote-privileged \
--remote-auth
--allow-remote-privileged 让 loopback 锁定的方法(settings、credentials、原生对话框)也接受该可信权威值;--remote-auth 在非 loopback 的 /api 上强制配对会话门禁。部分隧道服务商(包括典型的 frp 边缘)只支持 HTTPS(对 http:// 返回 501),因此手机应通过 https:// 公网 URL 访问。
Known Limitations and Deferred Work
- 本 bundle 不对远程 surface 做认证——
--remote-auth在dsh-web-app中启用配对门禁;若不启用,隧道会把 harness 暴露给任何能访问公网权威值的人。只应在你信任的隧道上运行。 - 信任围栏是启动时快照——隧道权威值必须通过启动时的
--trusted-host传入;本 bundle 无法在启动后从运行时补加。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-remote-web-ui★ 8121
手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
zhu1090093659/dsh-web#packages/dsh-ssh★ 8121
SSH 远程运维面板:Web 终端、SFTP 传输、本地端口转发与一条命令并发集群执行,Agent 与面板共用同一份主机配置。
saya-ch/dsh-mobile★ 333
通过 Android App 或手机浏览器访问 DeepSeek Harness,支持安全局域网连接、远程访问、持久设备配对和可自定义移动界面。
ZSeven-W/dsh-ios★ 308
在对话里直接操作 iOS 模拟器或 USB 连接的 iPhone:22 个 Agent 工具用于启动、构建、按无障碍标识或 OCR 文本驱动 UI、列表行操作与 SwiftUI 预览热重载,并附带可点击拖拽的流式侧边栏面板。
liguobao/ds-harness-remote★ 234
DeepSeek Harness 多端远程访问:从手机、平板、浏览器或另一台电脑继续进行中的会话,端到端加密通道(Noise IK + 自适应 Relay/WebRTC 传输),设备授权管理;远程端仅开放 ApiProxy 能力,支持 dsh-file-viewer 只读文件预览,不提供 Shell、远程桌面或写入权限。
wenbin-wb/dsh-bridge★ 177
DeepSeek Harness 远程与移动端接入插件:提供局域网扫码直连、Cloudflare 与自建公网隧道,以及微信、QQ、飞书、Telegram 机器人交互,内置安全认证与访问控制。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。