用途
Triage Issues 是一个自主式问题分诊智能体技能,用于自动审查 GitHub 仓库中尚未分诊的 issue。它会拉取未分诊的问题,逐一分类,检测重复项,并自动应用标签,从而让后续的 work-on-issues 技能能够接手处理。该技能仅负责分类,不负责规划或实现修复方案。
主要能力
- 拉取所有未分诊的 GitHub issue,并按从旧到新的顺序处理。
- 对每个 issue 进行深度阅读,包括正文、评论以及 issue 中引用的代码文件。
- 检测重复项,与所有打开和近期关闭的 issue 进行标题相似度和正文重叠度比对。
- 按类型分类:bug、enhancement、documentation、question、security。
- 按优先级分类:priority:must、priority:should、priority:could。
- 按规模分类:size:xs、size:s、size:m、size:l、size:xl。
- 处理边界情况:信息不足时标记 needs-info、垃圾内容标记 auto-dismissed、安全问题标记 security 与 priority:must 并提示人工审查。
- 在每个处理结果上统一应用 triaged 标签,避免下轮重复处理。
- 处理完成后输出操作摘要,包括处理总数、分类明细、重复关闭数、needs-info 数、dismissed 数等。
使用方式
前提条件
- gh CLI 已通过认证并具备仓库访问权限。
- 仓库需预先定义好以下标签:
- 状态标签:triaged、needs-info、security、duplicate、auto-dismissed、wontfix、in-progress
- 优先级标签:priority:must、priority:should、priority:could
- 规模标签:size:xs、size:s、size:m、size:l、size:xl
工作流程
- 确保所需标签存在。使用 gh label create 命令以幂等方式创建所有必需标签,--force 参数可在标签已存在时进行更新而不报错。
- 拉取未分诊 issue。执行 gh issue list --state open --json number,title,labels,body,comments,createdAt --limit 50,并过滤掉已带有 triaged、in-progress、duplicate、wontfix、auto-dismissed、needs-info 标签的 issue。若没有剩余未分诊 issue,停止并报告“No untriaged issues found.”。
- 逐一处理每个 issue(从旧到新):
- 深度阅读:拉取完整正文与所有评论,阅读 issue 中引用的代码文件,理解上下文和影响范围。
- 重复检测:拉取所有打开和近期关闭的 issue 进行比对,仅在确信描述的是同一问题或请求时才标记为重复,存在疑问时不标记。若确认重复,应用 duplicate 和 triaged 标签,发表评论并关闭 issue。
- 分类:根据评分标准确定类型、优先级和规模。
- 处理边界情况:信息不足时应用 needs-info + triaged 并提问,不分类优先级和规模;垃圾或跑题内容应用 auto-dismissed + triaged 并关闭;安全问题应用 security + priority:must + 合适规模 + triaged,并在评论中提示人工审查。
- 应用标签并评论:应用分类标签并留下分诊摘要评论。
- 输出摘要:处理完成后报告总处理数、分类明细(按优先级)、重复关闭数、needs-info 数、dismissed 数等。
评论格式
技能定义了四种评论模板:标准分诊(包含优先级与规模表格及摘要)、重复(注明重复的 issue 编号)、需要更多信息(列出具体问题)、安全(标注 MUST 优先级并提示人工审查)。所有评论末尾附有“Auto-triaged by murmur”标记。
适用场景
- 开源项目维护者需要自动处理大量新增 issue 时。
- 需要统一 issue 分类标准以提升协作效率的团队。
- 作为 CI/CD 或 GitHub Actions 工作流中的一环,自动完成 issue 初步分诊。
限制与注意事项
- 每次调用执行一轮完整处理,处理所有符合条件的 issue。
- 在每个处理结果上始终应用 triaged 标签,以防止下轮重复处理。
- 对重复项保持保守态度,仅在明确为同一 issue 时才标记,而非仅仅相关。
- 不应用 good first issue 或 help wanted 标签,这些由人工分配。
- 不应用 in-progress 标签,该标签由 work-on-issues 在认领 issue 时使用。
- 该技能仅进行分类,不规划也不实现修复;分诊完成后委托给 work-on-issues 进行实现。