用活的合并与维护者证据,给一个 GitHub 仓库的对外贡献友好度打分。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:he-yufeng/dsh-tool-radar
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
给 DeepSeek Harness(dsh)写的 repo_radar 工具插件:在 agent 为一个陌生 GitHub 仓库烧掉一整个会话之前,先用活证据给它的"值不值得贡献"打个分,不靠感觉。
它做什么
只提供一个模型工具 repo_radar,返回 0-100 分和背后的全部证据:
- 合并史:近期 merged PR 数、从提出到合并的中位天数。
- 队列健康:open PR 数、陈旧(>90 天)比例、队列与合并量的失衡度。
- 维护者响应:近期 merged PR 上维护者第一条回复的中位天数。
- 外部贡献者友好度:外部作者(NONE/CONTRIBUTOR/FIRST_TIMER)的 PR 真正被合并的比例。
- 带理由的结论:每条计分规则都留一句人话备注,外加机器可读的风险标记(
no_recent_merges、stale_pr_backlog、slow_maintainer_response、mostly_internal_merges、queue_overload)。
结论分档:Contribute(70+)/ Consider(45-69)/ Avoid(<45)。计分规则移植自 GitSense 的 radar,那套公式每天都在真实跑。
API 调用是有界的:一次仓库信息、一次已关闭 PR 抽样、一次 open PR 抽样、最多五个 merged PR 的维护者响应探测。默认无认证;设了 GITHUB_TOKEN(或 GH_TOKEN)只用于提高限额,且只出现在 Authorization 头里——不写日志、不进输出。
安装
dsh plugin --profile <name> add github:he-yufeng/dsh-tool-radar
或(发布到 npm 后):
dsh plugin --profile <name> add dsh-tool-radar
工具参数
| 参数 | 类型 | 必填 | 含义 |
|---|---|---|---|
repo |
string | 是 | owner/name 或完整 GitHub URL |
skills |
array | 否 | 与仓库语言匹配的技能关键词(如 ["python", "llm"]) |
返回一个规范 JSON:
{
"repo": "HKUDS/Vibe-Trading",
"stars": 33428,
"primaryLanguage": "Python",
"score": 100,
"recommendation": "Contribute",
"breakdown": {
"mergedPrs": 22,
"openPrs": 5,
"staleRatio": 0,
"medianMergeDays": 0.8,
"medianMaintainerResponseDays": 0.6,
"externalMergedRatio": 0.95,
"skillMatches": [],
"stars": 33428
},
"notes": [
"some recent merges",
"fast median merge time",
"stale PR ratio looks manageable",
"maintainers respond quickly",
"outside contributors are getting merged"
],
"riskFlags": []
}
错误是诚实的:仓库不存在或私有、触发限额、owner/repo 写法不对,都会抛出明确的 GitHubError,而不是返回一个误导性的分数。
本地开发
npm install
npm run build # tsc 编译到 lib/
npm test # vitest(网络请求全部打桩,离线可跑)
目录结构:
src/
index.ts # 插件入口:name / inject / apply
tool.ts # repo_radar 工具定义
collect.ts # 有界 GitHub 抽样 -> 雷达输入
score.ts # 计分规则(移植自 GitSense radar.py)
github.ts # 极简 API 客户端;token 卫生只在这层
test/
radar.test.ts
许可证
MIT
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-git-graph★ 9321
输入框上方提供 Git 分支选择器,并把分支泳道与提交历史画成图谱,沿着时间线找到任意变更。
Akimiya-z/codex-guard#dsh★ 133
在 DeepSeek Harness 内做提交前的 Pull Request 卫生检查:扫描当前改动中的 TODO 残留、硬编码密钥与非规范提交信息。
Cerbur/clutch-dsh#clutch-dsh-worktree★ 34
为 DSH Web UI 增加按 Git Worktree 组织 Session 的视角,同时继续由 DSH 管理原始 Project 和 Session 数据。
lehhair/dsh-diff-viewer★ 26
PiUI 风格 diff 查看器,替换 write/edit 工具调用的默认 DiffBlock。
DamonKoy/dsh-web-ui#dsh-git-graph★ 25
dsh web GUI 会话头部栏的 Git 分支选择器与提交图。
PerryLink/dsh-github★ 24
官方级 GitHub CI 集成:composite action.yml、轮询 PR 评审机器人(幂等行内评论 + status-check 门禁)以及 PR/issue 工具,所有写入走人工审批门。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。