前言¶
在 DeepSeek Harness(DSH)里跑智能体时,常见做法是让用户自己搜 GitHub,或者指望模型在需要时才去读某条 Skill。问题是:Skill 只有模型「决定加载」才会执行,新对话里未必会先做开源方案摸底;临时再搜又容易打乱回答节奏,还容易撞上 GitHub Search API 的匿名限频。
dsh-github-oss-radar(npm 包名 dsh-github-oss-radar,0.1.0,MIT)由 Otto883 维护,属于 DSH 社区的「联网工具」类插件。它把「GitHub 优先的开源检查」写进系统提示策略:每条新请求里,模型先抽 1–4 个英文关键词,至多调用一次 github_search,在正式作答前列出可能可复用的仓库(星标、语言、许可证、最近推送、topics 等),再写答案。下面介绍它装什么、怎么用、以及配置与限频要注意什么。
这是什么¶
一句话:dsh-github-oss-radar 是一个持久化的 DSH bundle,给 profile 里每个 agent 挂上固定的策略段和宿主工具,让「搜 GitHub 仓库」成为新请求上的默认前置步骤,而不是可选 Skill。
与 Skill 的差异(README 原文要点):
- Skill 仅在模型选择加载时运行;本插件安装的是 system-prompt 策略,无需再决策,每条新请求都会走检查流程。
- 策略有意做预算:每请求最多一次
github_search;相同并发请求会合并;响应在内存中缓存 10 分钟。 - 列出的仓库是起点,不能替代完整回答;策略要求检索不得拖慢响应,不能代替阅读用户本地文件;同一主题内的追问不会重复搜索。
技术约束(资料已写明):ESM、零运行时依赖;在 dsh 0.1.7-rc.2 上验证;Host 需 Node.js 22.19.0 或更新(使用全局 fetch 与 Node 内建模块)。
安装后会注册什么¶
两部分都会注册到 profile 的每个 agent:
| 类型 | 名称 | 作用 |
|---|---|---|
| System-prompt 段落 | github-oss-radar:policy |
顺序 1990,紧挨内置 web-search 指引之前。要求从新请求中提取 1–4 个英文关键词,作答前调用 github_search 一次,列出最多 5 个(可配置)真正相关的 owner/repo(★ 数量)、一行说明及 URL;无相关结果时一行说明。 |
| Host 工具 | github_search |
请求 https://api.github.com/search/repositories,返回紧凑、便于模型阅读的仓库列表。 |
卸载时会一并移除上述策略段与工具。
github_search 工具行为¶
参数¶
| 参数 | 类型 | 说明 |
|---|---|---|
keywords |
1–4 个字符串数组 | 英文技术关键词;与空格拼接,语义上相当于 AND。未提供 query 时必填。 |
query |
字符串 | 精确的 GitHub 仓库搜索 query;存在时覆盖 keywords。 |
language |
字符串 | 可选语言过滤,例如 Python、TypeScript。 |
min_stars |
整数 | 最低星标;默认取插件配置 minStars。 |
limit |
1–10 | 返回条数;默认取插件配置 maxResults。 |
sort |
stars / updated / best-match |
排序;默认 stars。 |
查询由关键词(或 query)与可选的 stars:>=N、language:X 组成;除非开启 includeArchived,否则带 archived:false。若完整关键词集无匹配且未显式给 query,工具会用第一个关键词放宽再试一次。
每条结果包含:owner/repo、紧凑星标(如 24.1k)、URL、一行描述、语言、GitHub 报告的 SPDX 许可证、最近 push 日期、fork 数、最多 6 个 topics。输出末尾注明数据来自当时刻的 GitHub Search API,并提醒采纳前自行核实许可证与维护状态。零结果返回 No repositories matched,而非抛错。
结果示例(节选)¶
下面示例来自 README,仅展示三条;真实输出会打印完整 query、总匹配数与展示条数。
GitHub open-source matches for "markdown parser"
Query: markdown parser archived:false
Matches: 1284 total, showing 5 — sorted by stars
1. markdown-it/markdown-it ★19.2k (JavaScript, pushed 2026-10-30, 1.8k forks, MIT)
https://github.com/markdown-it/markdown-it
Markdown parser done right. Fast and easy to extend.
topics: markdown, commonmark, parser, javascript
2. remarkjs/remark ★7.9k (JavaScript, pushed 2026-10-28, 512 forks, MIT)
https://github.com/remarkjs/remark
Markdown processor powered by plugins.
topics: markdown, syntax-tree, plugins
3. comrak/comrak ★1.9k (Rust, pushed 2026-10-27, 121 forks, MIT)
https://github.com/comrak/comrak
CommonMark + GFM compatible Markdown parser and renderer.
topics: markdown, commonmark, gfm, rust
Metadata from the GitHub Search API at request time. Verify license and maintenance status before adopting a project.
安装与启用¶
从 GitHub 安装(README 原文命令):
dsh plugin --profile <profile> add github:Otto883/dsh-github-oss-radar
插件市场上架后,也可在卡片页添加 bundle。
npm 发布后可用包名安装:
dsh plugin --profile <profile> add dsh-github-oss-radar
安装后重启 dsh。bundle 会在 profile 根插入 github-oss-radar loader 行,策略段与工具对所有 agent 生效。
卸载:
dsh plugin --profile <profile> remove dsh-github-oss-radar
或在插件市场卡片中移除。
配置¶
配置写在 profile 里 github-oss-radar loader 行,例如 cordis.patch.yml:
- id: github-oss-radar
config:
maxResults: 5
minStars: 1000
language: TypeScript
cacheTtlMs: 600000
| 键 | 默认 | 范围 | 说明 |
|---|---|---|---|
enabled |
true |
boolean | false 时跳过策略段与工具。 |
maxResults |
5 |
1–10 | 列表上限,也限制模型可请求的 limit。 |
minStars |
0 |
0–1000000 | 搜索最低星标。 |
language |
'' |
string | 默认语言过滤;空表示不设默认。 |
includeArchived |
false |
boolean | 为 false 时查询带 archived:false。 |
cacheTtlMs |
600000 |
0–3600000 | 内存缓存 TTL(毫秒),默认 10 分钟。 |
timeoutMs |
15000 |
1000–60000 | 单次 GitHub API 超时(毫秒)。 |
tokenEnv |
'GITHUB_TOKEN' |
string | 读取可选 token 的环境变量名。 |
可选 token:Host 环境可读 GITHUB_TOKEN 或 GH_TOKEN;tokenEnv 指定优先读取的变量名。配置里也可有 token 键,但文档建议用环境变量。无 token 时适用匿名限频(见下节)。
限频与失败时的策略¶
未认证访问 GitHub Search API 为每分钟 10 次。插件通过「每新请求至多一次搜索、并发合并、10 分钟缓存」尽量留在预算内。
若 GitHub 因限频拒绝,工具会报告 reset 时间并建议设置 GITHUB_TOKEN;策略要求模型不带列表继续作答,而不是反复重试。
适用场景与注意¶
适合谁:希望在 DSH profile 里稳定做「回答前先扫一圈 GitHub 可复用仓库」的团队或个人;技术选型、实现路径讨论、对比既有开源方案时,模型会更早看到结构化仓库列表。
注意:
- 列表是辅助信息,不能替代读用户仓库里的代码与文档;同一主题的追问不会重复搜。
- 插件以当前 dsh 进程权限运行,会向 GitHub API 发起网络请求;安装前应阅读 源码仓库 与 MIT 许可证,自行判断是否满足合规与安全要求。
- DSH 生态强调「一切皆插件」;社区目录站点(如 SkillHub 插件页)为独立社区资源,与 DeepSeek / 幻方无官方从属关系。
结尾¶
经过上面的步骤,你可以在 profile 里获得一条有预算、可缓存、感知 GitHub 限频的常驻开源检索链路:github-oss-radar:policy 规定何时搜、github_search 负责怎么搜。需要关闭时设 enabled: false 或卸载 bundle 即可。