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 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 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 无法在启动后从运行时补加。
链接
同类插件
strukto-ai/mirage#dsh★ 3416
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 171
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Jayden-X-L/forkprobe★ 65
同一任务并行试跑多个技能,对比结果选出最优。
vlln/plugin-registry★ 37
插件生态基建:浏览器面板管理官方 repository 插件(0 patch)+ make-dsh-plugin 插件开发引导技能。
forrestchang/dsh-multica-runtime★ 32
让 dsh 运行时跑在 Multica 上。
DietCokewithSugar/dsh-user-experience★ 18
帮你发现项目中可能存在的用户体验问题:自动走查 React/TypeScript 源码,定位问题并给出具体优化建议。