dsh-lighthouse(灯塔):一屏看清已发布作品的状态

前言

在 DSH 里做插件或工具,作品会分散在本地工程、GitHub、npm 和 SkillHub 类插件市场。要判断「市场有没有收录」「下载多少」「收录 PR 等了多久」「本地版本和线上是否一致」,往往要分别打开仓库、市场页和登记表,再自己对照时间。dsh-lighthouse(灯塔)把这些问题收成一块观察面板和同一套只读采集逻辑,数字来自 API 与本地文件,读不到就标明原因,不由模型生成。

这是什么

dsh-lighthouse 由维护者 7gzgn 发布,分类为客户端插件。定位是:对你名册里列出的每个「作品」,汇总本地事实、GitHub 星标与最后推送、市场收录与下载、收录 PR 相对上游中位数的等待情况,并在 DSH 侧栏提供可刷新的观察区。名册外的仓库不会自动发现,避免误把别人的项目算进你的看板。

核心功能

侧栏观察面板

DSH 侧栏增加灯塔图标,点开为观察面板。每个作品一张卡(作品不多时信息最全),右上角可手动刷新;打开面板时会自动拉取一次。数据来自宿主只读接口 /dsh-lighthouse/status,面板、工具与 HTML 卡片共用同一条采集路径,同一指标各处一致。

卡片上可见的典型维度包括:

维度 说明
发布与仓库 是否已发布、仓库是否存在或能否读取
市场 是否已收录(含下载量)、收录中,或读不到
收录 PR 已合并、等待时长,或无 PR
GitHub stars、watchers、open issues
本地与推送 本地版本、文件数、最后推送时间

v0.3.0 起,展示名优先为「英文名 + 中文名」,名称可点击直达仓库;另有「直达」行列出能确定的 GitHub、npm、市场条目链接。中文名来自名册 nameZh,或本地 package.json 的 dsh.displayName。

作品较多时的紧凑视图

当名册中作品超过 12 个时,自动切换紧凑模式:文本回执一行一个作品;HTML 改为按「要不要人管」排序的表格(需处理 → 等收录且久的在前 → 已收录),表头与汇总条可滚动吸顶。表格为纯静态 HTML,无脚本,不能内嵌搜索;需要缩小范围时通过名册工具分组。

多来源、分源汇报

数据源限于 GitHub API、市场登记表与 npm。每个作品按来源分开:本地(版本、文件数、是否有 test/smoke.mjs)、GitHub、npm(默认查询,可关闭)、市场、收录 PR。某一源失败则标「读不到」,不用其他源数字顶替。仅托管在 Gitee / GitLab 等的作品,名册可写 mirrors 链接跳转,但不会假装有那边的 star 或推送数据。

只读与 PR 等待提示

全部为 GET,不改仓库、不开 PR、不写远端。报告会标出等待时间超过上游中位数的收录 PR;未超出的也会说明仍在正常等待区间。

工具与 CLI

  • lighthouse_report:生成汇总文本,并将单文件 HTML 卡片写入 ~/.dsh/lighthouse-reports/lighthouse-<时间戳>.html。
  • lighthouse_fleet:show、init、sync 等,维护名册;滑道发布或改名后可用 sync 回填空的中文名与链接,并报告名册包名与仓库不一致(只报告不改名)。

安装与启用

市场收录后,在 DSH 内搜索 dsh-lighthouse 安装。开发期可用手动链接(README 示例为 Windows 目录联接):

New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-lighthouse" -Target "D:\dsh\projects\dsh-lighthouse"
# profile 的 package.json:dependencies 加 "dsh-lighthouse": "link:D:/dsh/projects/dsh-lighthouse"
# 并把 "dsh-lighthouse" 加进 dsh.profile.bundles(漏了不加载)→ 重启 DSH

插件以当前 DSH 进程权限运行;安装前请自行查看 源码 与 MIT 许可证。运行时 README 记载在 DSH 0.2.1-rc.2 实测;package.json 中 dsh.compatibility 标明与 0.2.0-rc.2、0.2.1-rc.2 兼容。需要 Node >=18。

GitHub 侧更完整的数据可能需要 PAT(repo scope);插件会依次查找 tokenFile、DSH_SLIPWAY_TOKEN_FILE、~/.dsh/.gh-token 等配置。

典型用法

名册

默认文件 ~/.dsh/lighthouse-fleet.json。owner 与 works 必填,localDir 可省略(则只看线上侧)。

{
  "version": 1,
  "owner": "7gzgn",
  "upstream": { "owner": "awesome-dsh-plugin", "repo": "awesome-dsh-plugin", "branch": "main" },
  "works": [
    {
      "name": "dsh-slipway",
      "repo": "dsh-slipway",
      "category": "tools",
      "localDir": "D:\\dsh\\projects\\dsh-slipway"
    }
  ]
}

初始化示例:

lighthouse_fleet action=init owner=7gzgn works='[{"name":"dsh-slipway","repo":"dsh-slipway","category":"tools","localDir":"D:\\dsh\\projects\\dsh-slipway"}]'
dsh-lighthouse init --owner 7gzgn --works '[…]'

报告与名册命令

工具参数概览:lighthouse_report [fleetFile] [html] [includeNpm] [marketUrl] [reportDir];lighthouse_fleet action=show|init …。

dsh-lighthouse report [--fleet <路径>] [--dir <卡片目录>] [--no-npm] [--no-html] [--json]
dsh-lighthouse fleet  [--fleet <路径>]

市场登记表默认向宿主 web 服务的 origin 请求(如 GET <marketUrl>/dsh-market/registry),进程内缓存约 5 分钟。v0.2.4 起若读不到市场地址,整行不报数并说明原因,避免把「未读到」显示成 0 下载。可用 --no-npm 或 includeNpm:false 关闭 npm 查询。

本地自测(假网络,不碰外网):

node test/smoke.mjs

适用场景与注意

适合长期维护多个 DSH 插件或工具、需要定期核对「GitHub — npm — 市场 — 本地」是否同步的开发者。不适合指望插件自动扫描磁盘发现作品,也不覆盖非 GitHub 托管平台的指标。

插件只注册工具、CLI 与客户端注入,不挂前台服务、不后台轮询;调用时才跑一次采集。社区目录 SkillHub 条目页 与 DeepSeek / 幻方无官方从属关系,安装来源以你信任的渠道为准。

结尾

灯塔解决的是「发出去之后看不见」的跟踪问题:名册驱动、多源只读、GUI 与报告同源。当前版本见仓库 package.json(如 0.3.3)。目录页:https://www.skillhub.cn/plugins/7gzgn/dsh-lighthouse;源码与说明:https://github.com/7gzgn/dsh-lighthouse。

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

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

Xiaoye