前言¶
DSH 的理念是「一切皆插件」。插件目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,不应理解为官方应用商店。
对智能体开发者来说,一个具体问题是:如何把本机的 DeepSeek Harness Web GUI 发布到公网,同时避免公网请求直接落到 Web server,并且不直接修改 deepseek-harness 源码。ai-eks/dsh-auth-tunnel 的做法是在 Web server 前加一个 loopback 密码门,再由 cloudflared 建立 Cloudflare Tunnel。下面介绍它的安装和用法。
这是什么¶
ai-eks/dsh-auth-tunnel 是 ai-eks 维护的 MIT 许可插件。它包含两个部分:
- 一个 loopback password gate,提供登录页和 HMAC cookie;
- 一个通过
cloudflared启动的发布通道,支持 quick 或 named-tunnel 模式。
插件目标是在不修改 deepseek-harness 本身的情况下,把 DeepSeek Harness Web GUI 暴露到公网。
核心功能¶
公网暴露¶
- 通过 Cloudflare Tunnel 暴露 DeepSeek Harness Web GUI。
- 在 Web server 前添加 loopback 密码门,包含登录页和 HMAC cookie。
- tunnel 就绪后打印公网 Cloudflare tunnel URL。
两种发布模式¶
- Quick 模式。
- Named/tunnel token 模式。
设置与维护¶
- 在
Web Settings → Plugins → Plugin configuration下提供Auth Tunnel设置卡。 - 支持
allowRemoteSettings,允许认证后的公网页面更新设置,并单独更新 write-only 的访问密码。 - 支持
passwordRef与sessionTtlHours的原地更新。
安装与启用¶
前置条件¶
1、dsh CLI 和 pnpm 在 PATH 中。
2、cloudflared 在 PATH 中,或在插件中配置为绝对可执行文件。
3、准备一个较长的随机共享密码,并保存为 DSH credential。
4、package.json 声明的 Node 要求是 ^22.19 || >=24。
安装¶
从 npm 安装最新发布的 prerelease bundle:
dsh plugin --profile web add dsh-auth-tunnel@next
也可以从 Git 安装当前源码:
dsh plugin --profile web add github:ai-eks/dsh-auth-tunnel
当前分支面向 DeepSeek Harness 0.1.1-rc.2。如果使用 0.1.0-rc.8 或更早版本,需要固定一个兼容的 immutable tag 或 revision。
如果使用 pnpm 10 或更高版本,可能需要在 profile 的 pnpm-workspace.yaml 中允许构建。
保存访问密码¶
将访问密码保存为 DSH credential:
DSH_WEB_PASSWORD: 'replace-with-a-long-random-password'
保存位置:
$DSH_HOME/.credentials.yaml
启动 Web profile:
dsh web
典型用法¶
Quick 模式¶
启动并建立 tunnel 后,终端会打印:
cloudflare tunnel: https://<random>.trycloudflare.com
打开这个 URL,在登录页输入 DSH_WEB_PASSWORD。
Named tunnel / token 模式¶
如果配置 publicHostname,使用 token 模式。示例中使用 DSH_TUNNEL_TOKEN,并在 cordis.patch.yml 中配置:
mode: token
tokenRef: DSH_TUNNEL_TOKEN
publicHostname: gui.example.com
gatePort: 7677
publicHostname 只填写 DNS hostname,不要包含 https://、端口或路径。
适用场景与注意¶
适合需要把本地 DeepSeek Harness Web GUI 暴露到公网,同时不希望直接修改 deepseek-harness 的使用者。
使用前注意:
- DSH 插件会以当前
dsh进程权限运行。安装前应检查源码和许可证;本插件许可证为 MIT。 allowRemoteSettings默认启用。如果认证后的公网页面不应管理 tunnel 本身,应关闭它。- 访问密码和配置变更不会合并成一个事务提交;访问密码通过 write-only 按钮单独更新。
- 远程页面不能保存会分配新的随机 Quick URL 的变更;这类变更需要在本地完成。
- 对于认证后的公网页面,gate 会把
settings.*、credentials.*、llm.*代理给 Host;针对auth-tunnelnamespace 的核心设置写入会被拒绝,需要走插件的fenced endpoint。
参考¶
- 插件目录:https://www.skillhub.cn/plugins/ai-eks/dsh-auth-tunnel
- GitHub:https://github.com/ai-eks/dsh-auth-tunnel