前言¶
DSH Web 的「插件」侧栏用于管理第三方插件,但插件详情页通常不显示来源地址。要确认一个插件的仓库位置、排查问题或追踪更新,需要自行在文件系统或文档中查找。这增加了维护成本,也容易在多插件场景下遗漏信息。
插件简介¶
dsh-plugin-source-link 是一个为 DSH Web 插件面板扩展的功能模块,在插件详情页底部显示该插件的 GitHub 仓库 URL(超链接)或本地仓库路径。如果无法自动提取,则提供输入框手动填写并持久保存。
插件由 TowardsDawn 维护,已收录于 DSH Market。
核心功能¶
自动提取¶
插件会按优先级从数据目录中提取来源信息:
- profile 的
package.json里的依赖 spec,包括github:owner/repo、git+https://…、git+ssh://…、git@host:owner/repo.git,归一化为https://…;file:/link:解析为本地绝对路径; node_modules/<包>/package.json的repository/homepage/bugs.url字段;- 本地源码目录
.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 } }。
典型用法¶
- 在 DSH Web 侧栏「插件」中打开某个插件详情页;
- 底部「插件来源」区块自动显示仓库 URL 或本地路径;
- 如显示「数据目录里没有找到仓库地址」,点击「没有?我自己填」,输入 GitHub URL 或本地路径并保存;
- 下次打开同一插件时,自动结果会被手动值覆盖,并显示「手动填写」徽标。
适用场景与注意¶
- 适合需要在 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