前言¶
用 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。
核心功能¶
- 固定启动与访问 token:配置生效后,
dsh web横幅、/connect?token=...、/?token=...均使用同一固定值。 - 默认惰性:未设置
fixedLaunchToken时插件不修改行为,官方每进程随机 token 照旧;日志会说明插件已加载但未启用。 - 配置校验:token 长度 16–256,禁止空白字符及
?、#;过短或非法值会抛错,避免误以为已固定实则仍随机。 - 兼容性门禁:
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 从「每启随机」改为「配置固定」,默认不配置则零影响。目录与源码:
- 社区目录:https://www.skillhub.cn/plugins/starskyzheng/dsh-fixed-launch-token
- GitHub:https://github.com/starskyzheng/dsh-fixed-launch-token
DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;选用插件时请按自身安全要求评估固定凭据的风险。