dsh-port-token:在 Web 界面右下角查看端口与远程令牌

前言

用 dsh web 或 DeepSeek Harness 桌面端打开本地 Web 界面时,启动日志里会打印带 ?token= 的连接地址;页面用该令牌换 HttpOnly Cookie 并重定向到无 query 的 URL 之后,前端脚本无法再读到令牌。若启动时用了 --port 0,实际监听端口也只有宿主进程知道。日常开发里要核对端口、复制远程访问令牌或完整连接地址,往往得回到终端或启动输出。下面介绍社区插件 dsh-port-token(维护者 CAOGGL,分类:客户端):在界面右下角提供一把钥匙徽标,点开即可查看并逐行复制端口、远程令牌与连接地址,再点收起;展开时钥匙会旋转为叉号。

这是什么

dsh-port-token 是 DSH(DeepSeek Harness)的 Web GUI 客户端插件(npm 包名 dsh-port-token,当前版本 v0.1.0,MIT 许可证)。它不替代宿主鉴权,而是通过宿主提供的一条只读路由,在已登录会话内把 ctx.webServer.port 与 ctx.connection.authenticatedUrl() 上的信息展示给操作者。插件清单与说明见 SkillHub 目录页,源码在 GitHub:CAOGGL/dsh-port-token。SkillHub 为社区独立目录,与 DeepSeek / 幻方无官方从属关系。

核心功能

面板展开后固定三行:端口、远程令牌、连接地址,每行有独立「复制」按钮,复制后按钮会短暂显示「已复制」(英文界面为 Copied)。

交互上,点击右下角钥匙打开面板,钥匙原地旋转为叉号;再次点击徽标、按 Esc,或点击面板旁空白区域均可收起。每次展开都会向宿主重新请求数据,避免实例重启后界面仍显示旧端口。

数据来源与宿主一致:端口来自 ctx.webServer.port(含 --port 0 由系统分配的情况);令牌与 dsh web 启动时打印的 ?token= 一致,取自 ctx.connection.authenticatedUrl()。

安全方面,GET /dsh-port-token/info 由 ctx.connection.admit(req) 把关,与 /api 共用 Host/Origin 与会话校验:无 Cookie 返回 401,跨站来源 403,非 GET 返回 405,响应带 no-store。插件不额外放宽权限。

界面跟随宿主设计令牌与明暗主题,文案中英双语并跟随页面语言。浏览器侧无单独构建步骤:React 来自页面平台模块表,客户端脚本为普通 JS 直接加载;实现上服务端为 lib/index.js,徽标为 lib/client.js。

安装与启用

DSH 插件在 profile 启动时组合 bundle,安装后需重启 DeepSeek Harness(桌面端)或对应 profile 下的 Web 进程后生效。

桌面端(desktop profile,推荐)

desktop profile 由 Electron 应用管理,npm 全局安装的 dsh 不能直接改该 profile,需使用安装目录自带的 CLI:

$dsh = "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
& $dsh plugin --profile desktop add github:CAOGGL/dsh-port-token

其他 profile(如 web)

除 desktop 外可用 npm 版 CLI(需 pnpm 在 PATH 上):

dsh plugin --profile web add github:CAOGGL/dsh-port-token

本地开发(link 安装)

改插件源码时可将 profile 指向工作副本,刷新页面即可验证,无需反复 add:

& $dsh plugin --profile desktop add link:C:\path\to\dsh-port-token-plugin

卸载示例(桌面端):

& $dsh plugin --profile desktop remove dsh-port-token

卸载后同样需重启;profile 内依赖与 bundle 条目会清除,profile 目录外无改动。

运行环境要求(来自 package.json):Node >=20,peer 依赖 @deepseek-ai/cordis ~4.0.4。

典型用法

安装并重启后,打开 DSH Web 界面即可在右下角看到钥匙徽标。

操作 结果
点钥匙 面板打开,钥匙旋转成叉号
再点一次 / 按 Esc / 点面板旁边的空白 收起,叉号转回钥匙
点某行的复制 只复制该项,按钮短暂显示「已复制」

需要把远程访问地址发给本机其他工具或同事核对时,优先用面板中的「连接地址」行复制,避免手工拼接端口与令牌。

适用场景与注意

适合经常在浏览器里操作 DSH、又不想反复切回终端查启动日志的开发者;也适合使用 --port 0 动态端口时确认当前实例实际监听端口。

安装前建议自行阅读 仓库 README 与许可证;插件随当前 DSH 进程权限运行,只应安装你信任来源的插件。面板能展示远程令牌,请勿在不可信环境截图或共享未脱敏的界面。

结尾

dsh-port-token 把「端口 + 远程令牌 + 连接地址」收进右下角一次点击即可展开的面板,并在宿主既有栅栏内只读暴露信息,补上了 Web 前端无法直接读 HttpOnly 会话与动态端口的那一段空白。

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

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

小夜