dsh-github-hot:在 DeepSeek Harness 里看 GitHub 涨星榜

前言

做智能体开发的同行经常要回答同一个问题:最近一周哪些项目在涨星。传统做法是打开 GitHub Trending 页面、再手动翻 star 历史,数据散在几个页面里,周和月的口径也不统一。dsh-github-hot 把这个动作收进 DeepSeek Harness(DSH)侧栏:日、周、月三榜切换,展示每期涨星 TOP20,并把星数曲线、项目简介、多项目对比画在同一个界面里。它由 chiinsight 维护,分类为联网工具,面向 DSH 插件生态开发者。

这是什么

一句话定位:给 DeepSeek Harness 装的 GitHub 涨星榜插件,数据来自 Hysen Labs 的公开页面,不需要 API key。

  • 维护者:chiinsight
  • 版本:0.1.5(package.json)
  • 许可证:MIT
  • 运行要求:Node.js >= 18.0.0
  • 插件形态:DSH 插件,含 web 侧前端(React 18.3.1),安装后左侧栏出现「GitHub Hot」入口

它解决的是「榜单 + 星数趋势 + 项目简介」三者割裂的问题,把可视化做进 DSH,而不是再开一个网页标签。

功能与视图

插件分三种视图,均为一次性取数后本地交互,无需反复刷新页面。

1、三榜切换。顶部一键切日榜、周榜、月榜,每个榜单展示涨星 TOP20。日榜与月榜走 CSV 数据,周榜走 HTML 解析。

2、榜单视图。每个项目一张卡片,包含涨星数、名次徽章、语言与许可证标签,以及涨星曲线缩略图。卡片流而非表格,适合快速扫完 20 项。

3、详情。点开任意项目,展示项目简介、星数历史曲线、期间涨星、起点星数、最新星数。缺简介时显示「暂无简介」,不使用模型生成内容顶替原文。

4、统计视图。日榜使用头像点图,每个项目一个点,按当日精确涨星数决定高低,不连线;周榜与月榜先用横条比较榜单原始涨星数(默认前 5 项,可展开全部),再对比周期内的采样曲线。纵轴随所选项目重算:同量级使用线性,非零末端涨幅的绝对值相差超过 10 倍时切换为对称对数。末端头像自动避让,用引导线连接真实数据点;支持前 5、前 10、全选、清空。

5、双主题。深色(融入 DSH)与纸感贴纸风,右上角切换。

数据来源与准确性

榜单数据来自 Hysen Labs 公开页面,数据按 CC BY 4.0 授权使用,界面底部与详情页均保留署名与外链。取数方式按内容分四种:

日榜 / 月榜   /data/star-growth-24h.csv 、/data/star-growth-30d.csv(CSV)
周榜 TOP10   /weekly/{YYYY-MM-DD}(HTML 解析)
星数曲线     /chart/{slug}.svg(SVG 路径解析)
项目简介     /projects/{slug}(HTML 解析)

插件自身对取数结果有几条硬约束,写插件时值得参考:

1、取数失败不编造。某榜单取不到时明确显示失败原因与快照时间,不用旧数据冒充新数据。
2、解析失败即报错。周榜 HTML 或曲线 SVG 无法解析时整段标记失败,不做模糊推断。
3、周榜依赖页面结构。上游改版可能导致周榜失效,此时更新 parseWeeklyHtml 即可;日榜与月榜走 CSV,稳定性更高。
4、曲线与榜单口径分开。曲线数值由来源 SVG 还原,属于估算;每条线从期内首个可用采样日起算,图例显示起始日期,少于两个有效采样点不画线。精确的本期涨星以上方横条数值为准。
5、英文模式不调用翻译模型。榜单与项目详情直接显示原文;中文模式使用宿主默认模型补译文。

安装与启用

官方安装命令走 DSH 插件安装器,--profile desktop 指定桌面端 profile:

dsh plugin --profile desktop add dsh-github-hot

也可以从本地目录安装,适合改动后又想在本地验证的情况:

dsh plugin --profile desktop add /path/to/dsh-github-hot

安装后重启 DeepSeek Harness,左侧栏出现「GitHub Hot」入口。插件入口与注册字段在 package.json 的 dsh 字段中声明:

{
  "dsh": {
    "bundle": { "patch": "./cordis.patch.yml" },
    "client": { "platform": "web", "immediately": true, "inject": [] }
  }
}

缓存与请求频率

上游数据每天更新一次,插件按自然日而非分钟设计缓存,避免无意义的出网请求:

榜单                       磁盘 $DSH_HOME/dsh-github-hot/cache.json,跨自然日失效
项目详情与曲线             同上,跨自然日失效
简介中译                   磁盘 zh.json,原文变更时才重译
项目头像                   磁盘 avatars/(上限 400),7 天
前端详情                   浏览器 localStorage,跨自然日失效

界面不做分钟级轮询,仅在页面跨过零点时静默刷新。出网请求按 host 分队列、限制并发,同一 URL 在途去重。

典型用法

装好后无需配置 API key,直接在 DSH 侧栏操作即可:

1、在日榜浏览当日涨星 TOP20,需要更长周期时切周榜或月榜。
2、对某个项目点开详情,看简介、期间涨星与星数曲线,判断它是不是短期爆量而非长期增长。
3、在统计视图里勾选多个项目,对比周期内的采样曲线;末段涨幅相差较大时纵轴会自动切对称对数,避免小涨幅项目被压成一条直线。
4、关心稳定增长而非单日爆量时,以横条的原始涨星数为准,曲线只作趋势参考。

若要改动解析逻辑,本地跑测试验证:

npm ci      # 安装测试所需的 React 开发依赖
npm test    # 运行全部测试(部分用例会访问上游站点)

测试覆盖 parsers、detail、client、render、visual、baseline、avatar、cache、uicache、persist、smooth、timezone、lang、concurrency、hardening、resilience、interactions、routes 等面,其中解析类用例直接对线上的真实响应做校验。

适用场景与注意

适合三类人:做 DSH 插件生态的开发者,想把 GitHub 涨星跟踪放进工作流而非另开网页;需要快速评估某批开源项目真实涨星趋势的人;以及想学习「CSV + HTML + SVG 混合解析 + 按自然日缓存 + 取数失败不兜底」这套实现的插件作者。

需要注意两点:

1、插件以当前 DSH 进程的权限运行,安装前应先读源码、确认许可证(MIT)与 cordis.patch.yml 补丁内容,确认与宿主版本兼容后再启用。
2、周榜依赖上游 HTML 结构,上游改版会失效;此时属预期行为,按 README 更新 parseWeeklyHtml 即可。曲线数值是按 SVG 还原的估算,不要当作精确 star 计数使用。

结尾

dsh-github-hot 的价值在把涨星榜单、星数曲线、项目简介收到 DSH 侧栏一个入口里,并把「取不到数据就报错、不兜底编造」当作明确的行为约定。目录页:https://www.skillhub.cn/plugins/chiinsight/dsh-github-hot;源码:https://github.com/chiinsight/dsh-github-hot。

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

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

小夜