name: github-issue-dedupe description: 使用语义搜索和关键词匹配检测重复的GitHub问题。当被要求查找重复项、检查类似问题或设置自动重复检测时使用。 license: MIT
GitHub 重复问题检测
使用多策略搜索查找重复的GitHub问题。可以手动运行或通过GitHub Actions自动运行。
工作流程
1. 收集问题上下文
从目标问题中提取关键信息:
- 问题编号和标题
- 完整正文内容
- 错误消息或堆栈跟踪
- 关键词和技术术语
- 症状或行为描述
2. 搜索策略
使用 gh 通过多种策略搜索相关问题:
- 基于标题和正文的关键词搜索
- 搜索类似的错误消息
- 查找相似的症状
3. 候选检查
对于每个潜在的重复项:
- 使用
gh issue view <number>查看完整问题 - 比较:
- 根本原因(相同的基本问题?)
- 症状(相同的行为?)
- 错误消息(精确匹配或非常相似?)
- 受影响的组件(相同的代码区域?)
高置信度指标:
- 相同的错误消息
- 相同的重现步骤
- 相同根本原因但不同描述
- 一个问题引用另一个
低置信度(非重复项):
- 相似症状但不同原因
- 相关但独立的错误
- 相同组件但不同行为
4. 报告发现
如果找到重复项:
在目标问题上发布评论:
gh issue comment <number> --body "这可能是 #123 和 #456 的重复项。"
格式规则:
- 单个重复项:“这可能是 #123 的重复项。”
- 两个重复项:“这可能是 #123 和 #456 的重复项。”
- 三个或更多重复项:“这可能是 #123、#456 和 #789 的重复项。”
仅在高度置信(90%+ 确定)时评论。 如果不确定,不执行任何操作。
示例
示例1:明确重复项
目标问题 #150:
标题:"下拉菜单在移动Safari上保持打开"
正文:点击菜单项不会关闭iOS上的下拉菜单
搜索过程:
gh issue list --search "下拉菜单移动 safari"
gh issue list --search "菜单不关闭"
gh issue view 87 # 找到类似问题
问题 #87:
标题:"移动菜单选择后不关闭"
正文:在iOS Safari上,点击项后菜单保持打开
判断:重复项
- 相同症状(菜单保持打开)
- 相同平台(iOS Safari)
- 相同根本原因
示例2:相似但非重复项
目标问题 #200:
标题:"表单提交时验证错误"
错误:"无法读取 null 的属性 'value'"
搜索过程:
gh issue list --search "表单验证"
gh issue list --search "无法读取属性值 null"
gh issue view 175
问题 #175:
标题:"表单提交失败"
错误:"无法读取未定义的属性 'email'"
判断:非重复项
- 不同错误消息
- 不同空引用(value vs email)
- 相关区域但不同错误
示例3:多个重复项
目标问题 #300:
标题:"构建失败,出现 '模块未找到' 错误"
错误:Error: Cannot find module './config'
搜索结果:
- 问题 #250:相同错误,相同模块
- 问题 #280:相同错误,相同模块
- 问题 #290:不同模块错误(非重复项)
操作:
gh issue comment 300 --body "这可能是 #250 和 #280 的重复项。"