dsh-uriauth: Provides a configurable fixed URI entry point for the DSH Web UI

前言

跑 dsh web 时,浏览器要能进控制台,通常得先拿到日志里的一次性 launch token,再带着 ?token=… 访问根路径,服务端才会下发长期 cookie。换浏览器、清 cookie、换端口或换访问地址、另一台机器首次访问,以及 cookie 约 30 天过期后,都得回到终端日志里找新 token。DSH 本身没有「关闭 Web 鉴权」的开关,这些场景里反复翻日志很烦。

下面介绍社区插件 dsh-uriauth(维护者 hsushjk),它在服务端进程内完成「当前 launch token → 会话 cookie」的交换,让你通过一条固定路径进 Web UI,而不必每次从地址栏拼 token。装好插件后默认关闭,需要在设置里手动开启并确认警告——因为这条入口等价于把本机 DSH 进程的使用权交给拿到链接的人。

这是什么

dsh-uriauth 是 DeepSeek Harness(DSH)的宿主 + 客户端插件:在 Web 侧注册可配置的单段路径(默认 /trustme),访问该路径时用当前进程的 launch token 完成鉴权并写入 cookie。服务重启后会生成新 token,入口仍读进程内最新 token,不必再改书签里的 query。插件归属社区仓库 hsushjk/dsh-uriauth,在 SkillHub 插件目录 中分类为客户端相关能力(含 Web 设置页)。

DSH Web 鉴权在做什么(背景)

dsh web 的鉴权流程大致是:

  1. 每次启动生成随机 launch token,只在日志里打印:dsh web: http://<host>:<port>/?token=<随机串>
  2. 带 token 访问一次 /,服务端返回 303 并 Set-Cookie: dsh-auth-<id>=…(HttpOnly、SameSite=Strict,约 30 天)
  3. 之后靠 cookie 通行;cookie 与访问的 authority 绑定

本插件不取消上述模型,而是多一条「固定 URI → 自动完成第 2 步」的通道。

核心功能

  • 可配置入口路径:默认路径名为 trustme(即 /trustme),可在设置或配置文件中修改;保留名(如 api、plugins 等)不可用。
  • 两种模式:exchange(推荐)不在浏览器地址栏暴露 token;redirect 用 302 跳到带 token 的 URL,兼容旧习惯,但 token 可能留在访问记录里。
  • 总开关默认关:enabled 为 false 时不注册入口路由,对应路径返回 404;开启前需在设置页阅读警告并确认。
  • 设置页集成:路径为「设置 → URI 入口 → 开启入口 → 读警告 → 确认开启」;修改会写回 <DSH_HOME>/uri-auth.json。
  • 跨站导航:可选 allowCrossSiteNavigation,控制是否允许被浏览器视为跨站或 PWA 启动的导航走入口。

插件依赖 Host 的 webServer 与 connection 服务,使用 requestRejection、authenticatedUrl、authorizeIndex 等既有 API;开发与验证环境为 @deepseek-ai/dsh 0.2.1-rc.5、Node 22+(package 要求 Node >=22.13.0)。

安装与启用

插件装在 DSH 的 profile 里(以下以 web profile 为例)。

  1. 克隆到本地插件目录:
git clone https://github.com/hsushjk/dsh-uriauth.git ~/plugins/dsh-uriauth
  1. 以 file 依赖装进 profile:
cd ~/.dsh/profiles/web
pnpm add file:~/plugins/dsh-uriauth
  1. 在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中追加包名 dsh-uriauth,例如:
{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-web-app",
        "dsh-uriauth"
      ]
    }
  }
}
  1. 重启 DSH。

经过上面的步骤,插件已加载但入口仍关闭。要到 Web UI 里按下一节开启,入口才会生效。

典型用法

在 DSH Web UI 中:

设置 → URI 入口 → 开启入口 → 读警告 → 确认开启

之后在可信网络内访问形如 http://<host>:<port>/<entry> 的地址(默认 entry 为 trustme),即可完成 cookie 交换并正常使用界面,无需手动复制日志里的 ?token=…。

若需直接改配置,可编辑 <DSH_HOME>/uri-auth.json:

字段 默认值 说明
enabled false 入口总开关;改为 true 时除设置页确认外,API 需带 "confirm": true
entry trustme 单段路径名,1–64 字符,仅字母数字及 . _ ~ -
mode exchange exchange 或 redirect
allowCrossSiteNavigation false 是否允许跨站/PWA 类导航使用入口

删除 uri-auth.json 会恢复上述默认值(包括关闭开关)。

适用场景与注意

适合:内网或本机长期开 dsh web、经常换浏览器或设备、希望书签固定为一条 URI 而不是每次改 token 的开发者。

不适合:需要用户名密码账号体系的场景——README 建议改用认证网关类插件;本插件不提供账号体系。

安全:入口链接持有者与 DSH 进程权限等价。只在可信网络使用;若暴露到公网,应在前面加反代 Basic Auth、VPN、Cloudflare Access 等真正认证。安装前请自行查看 源码与 MIT 许可证,确认与您的 threat model 一致。

DeepSeek Harness 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。

结尾

dsh-uriauth 把「翻日志找 token」换成「固定 URI + 设置里一次性开启」,并默认关闭以降低误暴露风险。更多说明见 GitHub README 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye