如何用 gh search issues 找出仓库里评论最多的 issue
返回博客
文章githubtroubleshootingdev toolsagente de programaçãohow to

如何用 gh search issues 找出仓库里评论最多的 issue

Mafra2026年10月15日阅读约 7 分钟

2026年9月23日至10月14日,我们在这个博客上发布的 13 篇故障排查文章,选题全部来自 GitHub issue。而在此前的三周里,9 篇中有 8 篇来自 Reddit。这次转变并非事先计划:一轮又一轮,官方仓库里本周评论最多的 issue 总能给出 Reddit 帖子给不了的东西,也就是原始报错信息、版本号,有时还有维护者的回复。

本文完整介绍这套方法:我们使用的四条 gh(GitHub CLI)命令、我们摸索出来的过滤条件,以及在动笔之前放弃一个 issue 的标准。如果你在维护文档、为某个工具做技术支持,或者只是想在问题落到自己头上之前知道大家都遇到了什么,这套方法都用得上。

用哪条命令列出仓库里评论最多的 issue?

用 gh search issues 加上 --sort comments,并按创建日期过滤。每一轮都从这条命令开始:

gh search issues --repo openai/codex --state open \
  --created ">=2026-10-08" --sort comments --limit 5 \
  --json number,title,commentsCount \
  --jq '.[] | "\(.commentsCount)\t#\(.number)\t\(.title)"'

2026年10月15日运行时,排在第一的是 #52407,六天内 93 条评论,内容是 Windows 上 Codex 的 MXC launcher ... HRESULT 0x80070003 报错。这个 issue 就是我们 10月14日那篇文章 的来源。

关键参数如下,已对照 2.100.0 版本的 gh search issues --help 核实:

参数作用为什么用它
--sort comments按评论数排序评论意味着受影响的人在想办法解决,这是 GitHub 上最好的痛点信号
--created ">=YYYY-MM-DD"只看该日期之后创建的 issue排除只是最近又收到评论的老 issue
--state open只看未关闭的 issue问题仍然存在。已修复并关闭的属于另一类文章
--json + --jq选择字段并格式化输出每个 issue 一行,方便阅读,也方便交给脚本处理

命令帮助里还有一个细节:语义搜索(--search-type semantic 或 hybrid)按相关度排序,不接受 --sort。要按评论数排名,就用默认搜索。

为什么按 --created 过滤,而不是 --updated?

因为 --updated 会把昨天刚收到一条评论的老 issue 也带回来。2026年10月15日,我们在 Codex 仓库用同一条命令的两个版本跑了一次,截止日期都是10月8日:

过滤条件前 5 名里出现了什么
--updated ">=2026-10-08"5 个里有 2 个是老的:一个6月18日提出的功能请求,另一个是1月14日的(要求恢复 /undo)
--created ">=2026-10-08"5 个全是本周的,其中一个10月14日才创建,已经有 44 条评论

老的功能请求也可以是选题,但属于另一类。要找到眼下正在影响所有人的报错,关键是创建日期。

有一个过滤没法自动化:评论多不等于是 bug。同一天,anthropics/claude-code 的前 5 名里有一个要求恢复界面选项的请求,还有一个完全没有报错的吐槽。打开任何 issue 之前,先读标题。

怎样把一个 issue 扩展成同一错误的多个变体?

在同一个仓库里,用引号搜索原始报错信息。一个 issue 只是一个案例,搜索结果才能显示规律。

gh search issues "SIGSEGV" --repo anthropics/claude-code \
  --created ">=2026-08-01" --limit 100 --json number,title,createdAt

2026年10月15日,这条搜索返回了自8月1日以来创建的 58 个 issue。9月27日,一个看起来很小众的候选(只有一个 issue)就是这样变成了我们关于 Claude Code SIGSEGV 的文章:读完搜索结果后,同一条报错背后出现了三种不同原因,每种都有各自的解决路径。文章因此写成了按变体分类的表格,而不是只适用于三分之一读者的单一答案。

四步流程图:用 --created 和 --sort comments 找出评论最多的 issue,用 gh search issues 搜索原始报错,用 gh issue view --comments 阅读评论,用 gh api 对照源码;如果没有原因也没有修复,就放弃并换下一个
完整方法,从仓库到选题,包含放弃分支。

怎样不离开终端读完整个 issue?

用 gh issue view 加 --comments 参数,它会按顺序输出描述和全部评论:

gh issue view 52407 --repo openai/codex --comments

我们在每个讨论串里按以下顺序寻找:

  1. 原始报错信息,从报告者的日志里复制。读者会把它粘贴到搜索框里。
  2. 准确的版本号,包括出现错误的版本和错误消失的版本。
  3. 维护者的回复、修复 PR 或提到的发布版本。
  4. 不止一个人确认过的临时方案。只有一个用户验证过的方案会注明出处,绝不当作解决方案。

想知道 issue 是否已经修复并关闭,又不想读完整个讨论串:

gh issue view 52407 --repo openai/codex --json state,closedAt,labels

动笔之前怎样对照源码核实?

如果项目是开源的,就去读生成这条报错信息的文件。gh api 配上正确的 header 会返回原始内容:

gh api repos/openai/codex/contents/codex-rs/mxc-sandbox/src/windows.rs \
  -H "Accept: application/vnd.github.raw" | grep -n "cannot locate required"

2026年10月15日,这条命令指向该文件第 131 行,0x80070003 的报错信息就是在那里拼出来的。这就是“用户说错误来自启动器”和“错误来自这个文件里的这个函数”之间的区别。如果项目是闭源的,对应的来源就是官方错误文档(如果有的话)。

什么时候应该放弃一个 issue,而不是写它?

读完讨论串、查过来源之后,如果既没有确认的原因,也没有修复,就放弃。未经确认的报告不能成文,不管评论有多少。我们最常用的三种放弃理由:

情况我们的做法
没有原因也没有修复,评论里只有猜测放弃。10月11日,我们把一个只有 4 条评论、全是猜测的 403 错误,换成了另一个报错信息出现在官方文档里的 issue
这个错误我们已经写过跳到下一个。10月11日和12日,Codex 评论最多的 issue 都是我们10月10日已经发布过的错误
候选不错,但时机还早把编号记进队列,下一轮再看。10月7日的文章就直接来自前一天记下的候选

为什么我们从 Reddit 转向了 GitHub issue?

因为 issue 一到手就是故障排查文章需要的格式。Reddit 帖子很适合感受这一周的情绪,但几乎总要再查一轮,才能变成可以核实的内容。

属性Reddit 帖子官方仓库的 issue
原始报错信息有时有,通常是截图几乎总有,是可复制的文本
受影响的版本很少通常是 bug 模板里的字段
维护者的回复很少如果有,就在讨论串里,并链接到 PR 或发布版本
需要事实核查总是需要:9月5日,一个热门数字被证实不准确,文章角度随之改变较少,因为可以对照代码
最适合额度、价格、政策变化带报错信息的错误、崩溃、版本回归

Reddit 并没有退出流程。对于额度和计费这类没有 issue 的话题,它仍然是合适的来源。但对于带报错信息的错误,13 轮里 issue 全部胜出。

能不能一次在多个仓库里跑完?

可以。下面这个循环会列出三个编程智能体仓库最近 7 天里评论最多的 5 个新 issue(在 macOS 上,把日期换成 date -v-7d +%F):

for repo in openai/codex anthropics/claude-code google-gemini/gemini-cli; do
  echo "== $repo"
  gh search issues --repo "$repo" --state open \
    --created ">=$(date -d '7 days ago' +%F)" --sort comments --limit 5 \
    --json number,title,commentsCount \
    --jq '.[] | "\(.commentsCount)\t#\(.number)\t\(.title)"'
done

无法自动化的是判断:读讨论串、对照来源、站不住就放弃。这也是最消耗上下文的部分,因为一个 90 条评论的 issue 很长。终端里的编程智能体可以跑这个循环、打开讨论串并总结每个 issue 确认了什么,而每次阅读的成本就在这里累积:在 Verboo Code 上 token 不限量,所以读完整个讨论串和只读标题的成本一样。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章