前言¶
做智能体开发的同行经常要回答同一个问题:最近一周哪些项目在涨星。传统做法是打开 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。