PR 评估和改进顾问:基于历史反模式和成功模式评估 PR 成功率,一键评分并提供可操作的改进建议。
安装
# npm 包(预构建)
dsh plugin --profile web add pr-genius
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:zsxh1990/pr-genius
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
type: Knowledge Bundle title: PR Genius — 你发出去的那些 PR 的看板 description: 面向 OSS 贡献者的外发贡献项目管理,不是代码审查工具。知道今天该动哪个 PR,以及具体怎么做。 version: 2.2.3 created: 2026-07-01 updated: 2026-10-17 author: zsxh1990
PR Genius
你的 GitHub 里,有一些 PR 你已经不再点开了。
有一个需要 rebase,你一直说等会儿弄。有一个红了四天,没人告诉你。 有三个摆了三周没人看。还有一个你干脆绕着走——因为点开它,就意味着确认它死了。
PR Genius 是这些活儿的看板。 你往别人的仓库发出去的贡献——没有看板、没有站会、没人在替你记着。
它不是代码审查工具。它从不读你的 diff,也不会告诉你「代码没问题」。那是另一类工具的活儿,而且有做得很好的。
它回答的是一个真的在干活的人,周二早上会问的问题:我发出去的这些东西,今天该动哪个——具体怎么做?
English | 中文
为什么会有这个东西
GitHub 记得住那条 PR。
它记不住你为什么关掉了在某个仓库的第三次尝试。什么有效、什么无效。哪个 reviewer 真的会回,哪个评论过一次就消失了。上次把你弹回来的到底是体量、缺 issue 链接,还是语气。
那些东西在你脑子里。会话一结束就没了。
PR Genius 是它们该去的地方。
仓库画像记下这个项目要什么。 案例记下一次贡献怎么落地或怎么死的。 你自己的状态历史记下后来怎样——等了多久、什么变了、有没有回来。
第三样,代码审查工具和大模型都不可能有。它们只在别人的仓库里看见你的 PR 一次。这个看见的是你几个月的组合。
它知道什么
| 它知道 | 对你意味着 |
|---|---|
| 67 个大项目的实际做派 —— merge 率、review 节奏、什么会被关 | 你不用再猜 encode/httpx 想要什么 |
| 真实 PR 为什么被拒 —— 写下来了,带证据 | 你不用再重蹈别人已经赔进去三周的覆辙 |
| 你自己的 PR 后来怎样 —— 每个状态停了多久 | 你在它正在死的时候就知道,而不是三周后 |
| 你瞄准的那个仓库的政策 | 正文里一个 Fixes #N,仍然是第一条 PR 被弹回来的头号原因 |
给怀疑者看的数字:753 条模式、190 条失败 PR 观察、68 个仓库画像、302 个审过的案例。这些是上面那几句话的收据,不是重点——每次发布都会由 scripts/verify_claims.py 对着真实目录核一遍。
其中一个语料要说清楚:success-patterns/ 只作检索/参考,不参与评分。它是可以翻的背景,不是正反馈系统,从来没有改变过任何一次结论。真正推动风险档位的是那 61 条 anti-patterns。
九个状态,是九个决定
看板上的数字告诉你「有事」。状态告诉你「怎么办」。
| 状态 | 今天对你意味着 |
|---|---|
NEEDS_REBASE |
花二十分钟,这条 PR 就还活着。 |
CI_FAILING |
红了好几天,本来不会有人告诉你。 |
STALE_REVIEW |
有人看过,然后停住了。现在动,或者它就凉了。 |
STALE_NO_REVIEW |
没人看过。等、催、还是体面地撤——但要决定。 |
CLEAN |
别管它。这同样是一句值得被告知的话。 |
WAITING |
还在正常响应窗口内。去做别的。 |
看板一半的价值,在于告诉你今天不该把时间花在什么上。
它出现的两个时刻
在你提之前。 这个 ready 了吗,还是我准备浪费维护者的注意力?
python3 -m prgenius coach "fix: timeout in connection pool" \
--repo encode/httpx --body "Fixes #4821"
五个答案,每个都带下一步——READY_TO_SUBMIT、FIX_BEFORE_SUBMIT、NEEDS_DISCUSSION、IMPROVE_CHANCE、ASK_MAINTAINER。只读、只建议:不评论、不打标签、不关闭、不合并。
在它已经出去之后。 这些里面哪个需要我?
python3 -m prgenius status --author your-handle
九个状态、陈旧检测、每条给一个建议——修 CI、rebase、催、等、或者放弃。挂到 cron 上,它就变成你真的会看的那一行。
而且它会记住:STALE_NO_REVIEW for 5d, was NEEDS_REBASE。不是「有事」,是怎么走到这一步的。
安装
pip install "prgenius-core[mcp]" # 引擎 + MCP server
装完就能用——决策相关的语料(anti-patterns / profiles / pr-observations / policies)在 wheel 里,不用 clone。
prgenius-core doctor # 它找到了什么、缺什么,照实说
python3 -m prgenius status --author your-handle
python3 -m prgenius profile get owner/name # 这个项目到底要什么?
一条诚实的边界:
success-patterns/(约 2.7 MB,只作检索参考、不参与评分)不进 wheel。doctor会说success-patterns: not installed,而不是含混地报 0。想要它,clone 本仓并export PRGENIUS_REPO_ROOT=<clone>。
它永远不会做的事
明说,因为这一页的其余部分如果这些含糊,就一文不值:
- 它不会告诉你代码是对的。 它不读 diff。
- 它不会替你发任何东西,除非你显式加
--confirm。所有会改动状态的命令默认 dry-run。 - 它不外联。 分析是本地的:无 LLM、无 API key、无网络调用。碰 GitHub 的那几个命令用的是你自己的 token,而且只读 PR 元数据。没有遥测——见 docs/ADOPTION_DATA.md。
- 它不装。 没验证过的事实就写没验证。这一页错过,更正在 CHANGELOG.md 里。
中文文档与延伸
- README.md —— 英文主文档
- docs/BLOG.md —— 上面那段故事的长文版
- README.zh.md —— 知识库中文导航
Contributing
仓库画像、案例、anti-patterns 都欢迎——见 CONTRIBUTING.md。瓶颈是每个上游的整理工时,不是基建:一个仓库画像大约 30 分钟调研,再加上在上游落地一个支撑性 PR 的功夫。
引用
@software{pr_genius,
title = {PR Genius — the board for your outbound open-source contributions},
author = {zsxh1990},
year = {2026},
url = {https://github.com/zsxh1990/pr-genius}
}
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-git-graph★ 10406
输入框上方提供 Git 分支选择器,并把分支泳道与提交历史画成图谱,沿着时间线找到任意变更。作者已将其退役并改用官方 workspace-changes 插件;已发布的 npm 包仍可安装,但不再开发。
Akimiya-z/codex-guard#dsh★ 132
在 DeepSeek Harness 内做提交前的 Pull Request 卫生检查:扫描当前改动中的 TODO 残留、硬编码密钥与非规范提交信息。
xbzbing/dsh-git-panel★ 51
DSH Web GUI 里的 IDE 风格 Git 面板:常驻标签页含三栏总览(分支/标签列表、可搜索的提交历史图、含变更文件树与提交信息的提交详情)与变更记录页(统计条、带逐文件暂存/取消/丢弃的未提交列表、含 amend 的提交框);并排差异带懒加载 highlight.js 语法高亮、块间上下文按需展开与词级行内高亮,图片文件以变更前/后双图对照;另在输入框提供 zsh 风格分支标记。所有 git 命令以 argv 数组经宿主 subprocess 执行、cwd 锁定仓库根。
Cerbur/clutch-dsh#clutch-dsh-worktree★ 46
为 DSH Web UI 增加按 Git Worktree 组织 Session 的视角,同时继续由 DSH 管理原始 Project 和 Session 数据。
DamonKoy/dsh-web-ui#dsh-git-graph★ 31
dsh web GUI 会话头部栏的 Git 分支选择器与提交图。
Lenonss/DSH_VsCodeMode★ 31
为 DeepSeek Harness 提供类 VSCode 编码体验:基于 Monaco 的中央文件编辑器(文件页签、Ctrl+P 快速打开、状态栏),并对 Agent 的 edit/write 结果进行交互式差异审查(逐处采纳/拒绝、回滚、归档),状态跨重启持久化。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。