前言¶
在 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。