dsh-github-hot: View GitHub Star Ranking in DeepSeek Harness

Introduction

Peers in agent development often face the same question: which projects have gained stars in the past week? The traditional approach is to open the GitHub Trending page and manually scroll through star history. The data is scattered across several pages, and the scope for weekly and monthly periods is inconsistent. dsh-github-hot integrates this action into the DeepSeek Harness (DSH) sidebar: it switches between daily, weekly, and monthly lists, displaying the TOP20 star gains for each period, and plots star curves, project descriptions, and multi-project comparisons on the same interface. It is maintained by chiinsight, categorized as an online tool, and targets developers in the DSH plugin ecosystem.

What is it

One-sentence positioning: A GitHub trending stars plugin for DeepSeek Harness. Data comes from Hysen Labs’ public page; no API key is required.

  • Maintainer: chiinsight
  • Version: 0.1.5 (package.json)
  • License: MIT
  • Runtime Requirements: Node.js >= 18.0.0
  • Plugin Type: DSH plugin, includes a web-side frontend (React 18.3.1). After installation, an entry for “GitHub Hot” appears in the sidebar.

It solves the problem of the “Leaderboard + Star Trend + Project Description” being fragmented, visualizing this into DSH instead of opening a new browser tab.

Features & Views

The plugin features three views, all of which perform local interaction after a one-time data fetch, requiring no page refreshes.

  1. Three Leaderboards: A top button to instantly switch between the daily, weekly, and monthly leaderboards. Each displays the TOP20 projects. The daily and monthly lists use CSV data, while the weekly list uses HTML parsing.

  2. Leaderboard View: Each project is displayed on a card containing the star count, a rank badge, language and license tags, and a star curve thumbnail. The card flow is used instead of a table, suitable for quickly scanning 20 items.

  3. Details: Clicking on any project displays the project description, star history curve, stars gained during the period, starting star count, and latest star count. If no description is available, “No description” is shown; model-generated content is not used to replace the original text.

  4. Stats View: The daily list uses an avatar dot plot (scatter plot), where each project is a dot. The height is determined by the exact daily star count, with no connecting lines. The weekly and monthly lists use bars to compare the raw star counts of the leaderboard (defaulting to the top 5, expandable to view all), followed by a comparison of sampling curves within the period. The Y-axis recalculates based on the selected project: linear scale is used for the same magnitude, and a symlog scale is switched when the absolute difference exceeds 10x at the non-zero end. Avatar ends automatically avoid each other, with guide lines connecting the real data points. Supports Top 5, Top 10, Select All, and Clear All.

  5. Dual Theme: Dark mode (blends with DSH) and paper sticker style, toggleable in the top-right corner.

Data Source & Accuracy

Leaderboard data comes from Hysen Labs’ public page. The data is used under the CC BY 4.0 license, and credits and external links are retained at the bottom of the interface and on the details page. There are four ways to fetch data based on content:

Daily / Monthly   /data/star-growth-24h.csv , /data/star-growth-30d.csv (CSV)
Weekly TOP10      /weekly/{YYYY-MM-DD} (HTML parsing)
Star Curve        /chart/{slug}.svg (SVG path parsing)
Project Desc      /projects/{slug} (HTML parsing)

The plugin imposes several hard constraints on the fetch results, which are worth referencing when writing plugins:

  1. No fabrication on failure. If a leaderboard cannot be fetched, clearly display the failure reason and the snapshot time; do not use old data to impersonate new data.
  2. Fail immediately on parse. If the weekly HTML or curve SVG cannot be parsed, mark the entire section as failed; do not use fuzzy inference.
  3. Weekly relies on page structure. Upstream redesigns can cause the weekly list to fail. In this case, simply update parseWeeklyHtml; the daily and monthly lists use CSV, which is more stable.
  4. Separate curve and leaderboard metrics. Curve values are restored from the source SVG and are estimates. Each line starts from the first available sampling day within the period, and the legend displays the start date. No line is drawn if there are fewer than two valid sampling points. Precise star gains for the current period are based on the bar value above.
  5. English mode does not call translation models. The leaderboard and project details display the original text directly. Chinese mode uses the host’s default model for translation.

Installation & Enable

The official installation command uses the DSH plugin installer. The --profile desktop flag specifies the desktop profile:

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

It can also be installed from a local directory, suitable for situations where you have made changes and want to verify locally:

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

After installation, restart DeepSeek Harness. The “GitHub Hot” entry appears in the sidebar. The plugin entry and registration fields are declared in the dsh field of package.json:

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

Cache & Request Frequency

Upstream data is updated once a day. The plugin is designed to cache by natural day rather than minutes to avoid meaningless network requests:

Leaderboard       Disk $DSH_HOME/dsh-github-hot/cache.json, expires cross natural day
Project Details & Curves Same as above, expires cross natural day
Desc Translation  Disk zh.json, re-translate only when original changes
Project Avatars   Disk avatars/ (limit 400), 7 days
Frontend Details  Browser localStorage, expires cross natural day

The interface does not perform minute-level polling; it only performs a silent refresh when the page crosses midnight. Network requests are queued by host and concurrency is limited. Same URLs in transit are deduplicated.

Typical Usage

No API key configuration is needed after installation; simply operate in the DSH sidebar:

  1. Browse the daily TOP20 in the daily list. Switch to the weekly or monthly list for longer periods.
  2. Click on the details of a specific project to see the description, stars gained during the period, and the star curve to determine if it is a short-term spike or long-term growth.
  3. In the stats view, check multiple projects to compare sampling curves within the period. If the growth difference at the end is large, the Y-axis will automatically switch to symlog, preventing small-growth projects from being flattened into a line.
  4. If you are concerned with stable growth rather than single-day spikes, rely on the bar’s raw star count; the curve is for trend reference only.

To modify parsing logic, run tests locally for verification:

npm ci      # Install React dev dependencies required for testing
npm test    # Run all tests (some test cases access upstream sites)

Tests cover areas such as parsers, detail, client, render, visual, baseline, avatar, cache, uicache, persist, smooth, timezone, lang, concurrency, hardening, resilience, interactions, routes, etc. Parsing-related test cases directly validate against real online responses.

Suitable Scenarios & Notes

It is suitable for three types of people: developers in the DSH plugin ecosystem who want to integrate GitHub star tracking into their workflow instead of opening separate webpages; people who need to quickly evaluate the real star trends of a batch of open source projects; and plugin authors who want to learn this implementation (“CSV + HTML + SVG hybrid parsing + natural day caching + fail no fallback”).

Two points need attention:

  1. The plugin runs with the permissions of the current DSH process. Before installing, read the source code, verify the license (MIT) and the content of the cordis.patch.yml patch, and confirm compatibility with the host version before enabling.
  2. The weekly list relies on the upstream HTML structure; upstream redesigns will cause it to fail. This is expected behavior; simply update parseWeeklyHtml according to the README. The curve values are SVG-recovered estimates and should not be used as precise star counts.

Conclusion

The value of dsh-github-hot lies in bringing the trending star leaderboard, star curves, and project descriptions into a single entry in the DSH sidebar, and treating “fail to get data -> error, don’t fabricate” as a clear behavioral contract. Directory: https://www.skillhub.cn/plugins/chiinsight/dsh-github-hot; Source: https://github.com/chiinsight/dsh-github-hot.

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

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

Xiaoye