在 DeepSeek Harness (DSH) 的插件生態中,開發者常需要獲取 GitHub Trending 的最新數據,但 GitHub 官方並未提供開放 API,依賴第三方爬蟲或手動解析 HTML 既繁瑣又不穩定。下面介紹 wang-junjian/dsh-github-trending 插件,它通過直接抓取 GitHub Trending 頁面,爲模型提供了結構化的數據接口,同時爲 Web Profile 渲染了可視化的側邊欄。
插件定位¶
這是一個 DeepSeek Harness bundle 插件,由用戶 wang-junjian 維護。它主要解決兩個問題:
1. 模型側:提供一個名爲 github_trending 的工具,讓 Agent 能夠按語言和時間窗口獲取 Trending 倉庫的結構化列表。
2. 前端側:在 web profile 中渲染一個可停靠的右側面板,方便開發者直接查看數據。
核心功能¶
該插件實現了以下具體能力:
- 數據獲取與結構化:插件直接抓取 GitHub Trending 頁面,返回包含排名、所有者、倉庫名、絕對鏈接、描述、主要語言、總星標數、Fork 數以及今日新增星標的列表。
- 工具註冊:在 DSH 框架中註冊了
github_trending模型可調用工具。 - Web 可視化面板:在
webprofile 中渲染一個可停靠的右側面板。該面板支持每日/每週/每月的 Tab 切換,支持調整大小,並可摺疊至側邊欄。後臺使用內存緩存,並通過/github-trendingHTTP 路由提供數據。
安裝與啓用¶
安裝該插件需要使用 DSH 的命令行工具。安裝後,bundle 會自動追加到 dsh.profile.bundles 配置中。
若僅需在 Headless Profile 中使用數據獲取能力:
dsh plugin --profile headless add @wangjunjian/dsh-github-trending
若希望在 Web Profile 的瀏覽器界面中看到可視化面板,請使用:
dsh plugin --profile web add @wangjunjian/dsh-github-trending
典型用法¶
模型調用¶
在對話中,可以直接調用註冊的 github_trending 工具。例如:
Show me today's trending Python repositories.
工具參數¶
調用時可以指定以下參數:
| 參數名 | 類型 | 是否必填 | 說明 |
|---|---|---|---|
language |
string |
否 | 編程語言篩選,如 python, typescript, go。 |
since |
string |
否 | 時間窗口,可選 daily(默認)、weekly 或 monthly。 |
maxResults |
integer |
否 | 返回的最大倉庫數量(默認 10,上限 25)。 |
配置調整¶
插件的默認配置位於 cordis.patch.yml。如果需要調整超時時間、最大結果數或緩存刷新間隔,可以在 DSH 的 Profile 配置文件中覆蓋:
- id: github-trending
config:
enabled: true
timeoutMs: 30000
maxResults: 10
refreshIntervalMs: 14400000
| 配置項 | 默認值 | 說明 |
|---|---|---|
enabled |
true |
是否註冊工具、緩存和 Web 路由。 |
timeoutMs |
30000 |
每個 HTTP 請求的協同超時時間(毫秒)。 |
maxResults |
10 |
工具返回的最大倉庫數(上限 25)。 |
refreshIntervalMs |
14400000 |
UI 緩存的後臺刷新間隔(毫秒,即 4 小時)。 |
注意事項¶
- 無官方 API:GitHub Trending 沒有官方 API,插件依賴解析當前服務器渲染的 HTML 佈局。如果 GitHub 更新頁面結構,解析器可能需要更新。
- 速率限制:未認證的請求受 GitHub IP 速率限制約束。
- 直接抓取:插件直接抓取 GitHub,而非通過
ctx.web,因此不繼承 Harness Web 能力的 Fetch 策略。 - 面板實現:右側面板通過
shell.overlay實現,DSH 目前尚未提供原生的右側插槽,因此面板以懸浮層形式展示。 - 許可:插件採用 MIT 許可證。
總結¶
wang-junjian/dsh-github-trending 插件填補了 DeepSeek Harness 生態中 GitHub Trending 數據獲取的空白。通過將非結構化的 Trending 頁面轉化爲結構化數據接口,它降低了開發者獲取開源趨勢信息的門檻。同時,Web 端的可視化面板也爲開發者提供了直觀的數據查看方式。