GitHub 隱藏寶石獵人 是做什麼的?
目的
針對特定領域,通過廣泛搜索主題圖以及深入搜索星星與日期區間,發掘 GitHub 上高價值、低可見度的儲存庫。
使用時機
- 使用者要求尋找某個技術領域中的「隱藏寶石」、「被低估的」、「錯失的機會」或「我錯過了什麼」。
- 使用者希望進行探索,而非找到單一最知名的儲存庫。
- 使用者提供了一個主題、程式語言或問題陳述。
不應使用時機
- 使用者想要最受歡迎的儲存庫(直接按星星數搜尋即可)。
- 使用者想要程式碼搜尋(應使用程式碼搜尋,而非儲存庫搜尋)。
- 使用者沒有 GitHub Token 且期望深度結果(應警告限制)。
執行流程
階段 0 — 身份驗證檢查
- 偏好使用已驗證的
ghCLI;否則需要GITHUB_TOKEN。 - 若未驗證,則警告:搜尋上限約為每分鐘 10 次請求,結果將很淺。
階段 1 — 主題擴展(廣度)
- 查詢
/search/topics?q=<使用者提供的主題>以尋找相關主題名稱。 - 建立一個包含 3–8 個相關主題的主題集群。
- 為集群中的每個主題,使用
topic:限定詞建構儲存庫查詢。
階段 2 — 星星數區間切片(深度)
對於集群中的每個主題,執行以下不重疊的區間:
stars:1..10、stars:11..50、stars:51..200、stars:201..1000、stars:1001..5000。
在每個區間內進行分頁,直到達到 1,000 筆結果的上限。
階段 3 — 更新時間篩選
對於返回超過 1,000 筆結果的區間,遞迴地分割 pushed: 日期範圍,直到每個時間窗口的結果低於上限。
階段 4 — 低星星數寶石掃描
為每個主題執行一個專用的 stars:1..20 查詢,並加上 pushed:>YYYY-MM-DD(6 個月前)。單獨收集這些結果。
階段 5 — 去重與豐富化
- 根據
full_name進行去重。 - 獲取後設資料:星星數、分支數、開放問題數、最後推送時間、建立時間、主題、授權、README 長度(透過內容 API)。
- 排除分支,除非使用者要求包含它們(
fork:true)。
階段 6 — 評分與排序
應用寶石分數:
- 星數增長速度(星星數 / 自建立以來的月份數)
- 距離上次推送的天數(越少越好)
- README 長度與結構
- 主題相關性密度
- 問題回應速度(若有資料)
將結果分組:
- 活躍的寶石(近期提交、增長速度上升)
- 預起步的寶石(低星星數、近期活躍)
- 填補空白(連接兩個主題集群的儲存庫)
階段 7 — 輸出
返回一個排名的 Markdown 表格,欄位為:
儲存庫 | 星星數 | 年齡 | 最後推送 | 為何是寶石
包含一個簡短的方法說明以及關於 API 速率限制的注意事項。
錯誤處理
- 遇到 HTTP 403(次要速率限制):暫停並以指數退避策略重試。
- 遇到 HTTP 422(查詢過於複雜):透過移除最不重要的限定詞來簡化查詢,然後重試。
- 若某個星星區間無結果:跳過該區間並繼續。
限制
- GitHub 搜尋將每個查詢的上限定為 1,000 筆結果;切片可以緩解但無法完全消除此問題。
- 對於非常新的儲存庫(少於 30 天),星數增長速度可能不準確。
- README 長度僅為近似指標,無法保證品質。