dsh-github-oss-radar:每次新请求自动做一次 GitHub 开源检索

前言

在 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 可复用仓库」的团队或个人;技术选型、实现路径讨论、对比既有开源方案时,模型会更早看到结构化仓库列表。

注意:

  1. 列表是辅助信息,不能替代读用户仓库里的代码与文档;同一主题的追问不会重复搜。
  2. 插件以当前 dsh 进程权限运行,会向 GitHub API 发起网络请求;安装前应阅读 源码仓库 与 MIT 许可证,自行判断是否满足合规与安全要求。
  3. DSH 生态强调「一切皆插件」;社区目录站点(如 SkillHub 插件页)为独立社区资源,与 DeepSeek / 幻方无官方从属关系。

结尾

经过上面的步骤,你可以在 profile 里获得一条有预算、可缓存、感知 GitHub 限频的常驻开源检索链路:github-oss-radar:policy 规定何时搜、github_search 负责怎么搜。需要关闭时设 enabled: false 或卸载 bundle 即可。

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

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

小夜