dsh-plugin-source-link:在 DSH 插件面板显示来源链接

前言

DSH Web 的「插件」侧栏用于管理第三方插件,但插件详情页通常不显示来源地址。要确认一个插件的仓库位置、排查问题或追踪更新,需要自行在文件系统或文档中查找。这增加了维护成本,也容易在多插件场景下遗漏信息。

插件简介

dsh-plugin-source-link 是一个为 DSH Web 插件面板扩展的功能模块,在插件详情页底部显示该插件的 GitHub 仓库 URL(超链接)或本地仓库路径。如果无法自动提取,则提供输入框手动填写并持久保存。

插件由 TowardsDawn 维护,已收录于 DSH Market。

核心功能

自动提取

插件会按优先级从数据目录中提取来源信息:

  1. profile 的 package.json 里的依赖 spec,包括 github:owner/repo、git+https://…、git+ssh://…、git@host:owner/repo.git,归一化为 https://…;file: / link: 解析为本地绝对路径;
  2. node_modules/<包>/package.json 的 repository / homepage / bugs.url 字段;
  3. 本地源码目录 .git/config 的 origin 配置(覆盖 link: 依赖、本地开发中的插件;.git 为 worktree 文件时同样处理)。

渲染与交互

  • URL 以超链接形式显示(<a target="_blank">),附带「复制」按钮;
  • 本地路径以等宽文本显示,完整路径放在 title 中,同样附带「复制」按钮;
  • 区块内提供「没有?我自己填」展开区域,可输入仓库 URL 或本地路径;
  • 保存后覆盖自动结果,并显示「手动填写」徽标,提供「清除手动值」回到自动推断。

持久化与安全

  • 手动值写入 <profile 目录>/plugin-source-links.json,换浏览器也能保留;
  • /api/plugin-source-link/* 接口只接受 loopback 来源(socket 远端 + Host 头双重校验);
  • URL 仅接受 http/https/git 形态,拒绝 javascript: / data: / file:;
  • 包名经严格校验后才拼入 node_modules 路径;
  • 插件只读推断,不修改被管理插件的文件,唯一写入是 <profile>/plugin-source-links.json。

安装与启用

在终端中执行:

dsh plugin --profile web add "github:TowardsDawn/dsh-plugin-source-link"

安装后重启 DSH Web(或等待热重组),在侧栏「插件」中打开任意插件详情页,底部会出现「插件来源」区块。

接口说明

插件提供以下 API 路由:

  • GET /api/plugin-source-link/one?name=<包名>:解析单个包;
  • GET /api/plugin-source-link/list:获取 profile 全部依赖的解析结果;
  • POST /api/plugin-source-link/set:保存手动值,请求体为 { name, url?, path? }(空串表示清除该项);
  • POST /api/plugin-source-link/clear:清除指定包的全部手动值。

返回格式为 { ok: true, entry: { name, version, spec, url, path, resolvedFrom, manual, auto, installed, profileDir } }。

典型用法

  1. 在 DSH Web 侧栏「插件」中打开某个插件详情页;
  2. 底部「插件来源」区块自动显示仓库 URL 或本地路径;
  3. 如显示「数据目录里没有找到仓库地址」,点击「没有?我自己填」,输入 GitHub URL 或本地路径并保存;
  4. 下次打开同一插件时,自动结果会被手动值覆盖,并显示「手动填写」徽标。

适用场景与注意

  • 适合需要在 DSH Web 中快速定位插件来源、进行调试或追踪更新的用户;
  • 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证;
  • 只能在本机浏览器中使用:从 LAN 打开 Web GUI 时 host 端返回 403,区块会显示「仅在本机浏览器中可用」;
  • 官方随附的 bundle(@deepseek-ai/dsh-*)通常没有 repository 字段或依赖 spec,会显示「数据目录里没有找到仓库地址」,需使用手动填写。

卸载

如需卸载,执行:

dsh plugin --profile web remove dsh-plugin-source-link

手动值文件 <profile>/plugin-source-links.json 不会被自动删除,如需清理可手动移除。

总结

dsh-plugin-source-link 在插件面板详情页底部补全了来源信息,通过自动推断与手动填写相结合的方式,减少在文件系统与文档间切换的成本,适合需要频繁定位和追踪插件来源的开发者。

  • 目录页:https://www.skillhub.cn/plugins/TowardsDawn/dsh-plugin-source-link
  • GitHub:https://github.com/TowardsDawn/dsh-plugin-source-link
羽毛球分组比赛记分
小程序二维码

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

小夜