dsh-fixed-launch-token:把 DSH Web 启动 token 固定为配置值

前言

用 dsh web 暴露 Connection 服务时,启动日志里会打印带 ?token=... 的配对链接。官方 @deepseek-ai/dsh-client-connection 每次进程启动都会用 randomBytes(32) 生成新的 launch token,该值同时校验 /connect 与 GET /?token=。要把链接写进书签、脚本或内部文档,就得每次重启后去日志里抄新 token。下面介绍社区插件 dsh-fixed-launch-token(维护者 starskyzheng,分类 admin-security):在显式配置的前提下,把运行中的 browserAuth.launchToken 改为你指定的固定值,启动横幅与访问路径统一使用该 token;默认不配置则不改动官方随机行为。

这是什么

dsh-fixed-launch-token 是 DeepSeek Harness(DSH)生态下的 Cordis 插件,通过 cordis.patch.yml 注入 connection 服务,在随机 token 生成之后把 service.browserAuth.launchToken 覆盖为配置项 fixedLaunchToken。它不替换官方 Connection 提供方,也不跳过 BrowserAuth;与 @iasiv5/dsh-skip-browser-auth 不同,校验逻辑与 Host/Origin 信任栅栏保持不变,错误 token 仍返回 401,伪造 Host 仍 403。

核心功能

  1. 固定启动与访问 token:配置生效后,dsh web 横幅、/connect?token=...、/?token=... 均使用同一固定值。
  2. 默认惰性:未设置 fixedLaunchToken 时插件不修改行为,官方每进程随机 token 照旧;日志会说明插件已加载但未启用。
  3. 配置校验:token 长度 16–256,禁止空白字符及 ?、#;过短或非法值会抛错,避免误以为已固定实则仍随机。
  4. 兼容性门禁:package.json 顶层 engines.dsh 声明为 0.2.1-rc.2 || 0.2.2-rc.1,未验证的 DSH 版本会跳过该 bundle 并给出明确原因。

安装

本地目录安装(README 原文命令):

dsh plugin --profile <你的 profile> add /path/to/dsh-fixed-launch-token

也可在 GUI 插件管理中安装该目录。安装后若不写配置,行为与未装插件时一致。

卸载:

dsh plugin --profile <你的 profile> remove dsh-fixed-launch-token

配置与启用

在你自己的 profile 里按插件 id 覆盖 config(用户 patch 优先级最高),路径示例:

~/.dsh/profiles/<你的 profile>/cordis.patch.yml

- id: fixed-launch-token
  config:
    fixedLaunchToken: "在这里填你的固定值"

可用下列命令生成约 43 字符的 base64url 强随机值(32 字节熵):

head -c 32 /dev/urandom | base64 | tr '+/' '-_' | tr -d '=\n'

修改后重启 dsh web 生效;该值在插件 apply 时读取一次。空串、省略 config、纯空白、null 或非字符串类型均视为不启用;仅非空且合法字符串才会固定 token。

典型用法与场景

适用场景:GUI 配对链接需要长期不变——存书签、嵌入自动化脚本、写入团队文档,无需每次重启翻日志。

访问方式仍为官方语义,例如日志中的:

dsh web: https://<public-url>/?token=<你的固定值>

注意:固定 token 成为长期凭据,泄露后有效期直到你改配置;不像随机 token 那样随重启作废。插件以当前 dsh 进程权限运行,安装与启用前应自行查看 GitHub 仓库 源码与 MIT 许可证。

工作原理(简述)

官方 processLaunchToken 将 token 存在未导出的模块私有结构中;本插件在 ctx.inject(['connection'], ...) 回调里改写 browserAuth.launchToken,使 authorizeConnect、authorizeIndex、authenticatedUrl 读取同一字段。若官方将来改变该字段形状,插件设计为抛错而非静默回退。仅在存在 connection 服务的 dsh web 场景有意义;无 webServer 的 profile 中该行保持 dormant。

测试与版本

仓库内测试:

node --test tests/plugin.test.mjs

请直接传入测试文件;node --test tests/ 传目录可能因 MODULE_NOT_FOUND 失败。

当前包版本 1.0.0,实测兼容 DSH 0.2.1-rc.2 与 0.2.2-rc.1;其他版本可能被兼容性门禁跳过,而非静默降级。

结尾

dsh-fixed-launch-token 在保留官方 BrowserAuth 的前提下,把 launch token 从「每启随机」改为「配置固定」,默认不配置则零影响。目录与源码:

DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;选用插件时请按自身安全要求评估固定凭据的风险。

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

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

小夜