在 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 端的可视化面板也为开发者提供了直观的数据查看方式。