dotnet/skills AI自动Issue分诊全解:issue-triage智能体3步自动打标签的实战指南
2026/9/17 22:32:57 网站建设 项目流程

dotnet/skills AI自动Issue分诊全解:issue-triage智能体3步自动打标签的实战指南

【免费下载链接】skillsRepository for skills to assist AI coding agents with .NET and C#项目地址: https://gitcode.com/GitHub_Trending/skills17/skills

dotnet/skills 是微软开源的 .NET 与 C# 技能库项目,它为 AI 编码代理提供了大量 .NET 技能(skills)。这个项目本身就用上了一个很实用的自动化能力:issue-triage 智能体自动 Issue 分诊——每当新 Issue 打开或重新打开时,AI 会自动打area-*标签、按 CODEOWNERS 指派负责人、标记 Issue 类型,并留一条简明的分诊总结评论,全程无需维护者手动干预。

上图是该项目 AI 工作流自动发布的结构化结果评论(Skill Evaluation Results)。issue-triage 智能体发布的分诊评论就是这种"结论先行 + 可展开细节"的风格。

issue-triage 分诊智能体是什么?

传统的开源项目 Issue 分诊靠人:看标题 → 猜领域 → 找负责人 → 打标签 → 写评论。当项目 Issue 量大时,维护者常常顾不过来,新 Issue 可能在队列里躺上几天。

dotnet/skills 的做法是把这件事交给 AI 智能体(基于 GitHub Agentic Workflows 实现):

  • 自动触发issues: [opened, reopened]事件直接唤起,重新打开的旧 Issue 也会重新分诊
  • 自动分类:从 15 个预定义的area-*标签中挑选最匹配的一个(如area-msbuildarea-dotnet-aiarea-dotnet-maui
  • 自动指派:读取.github/CODEOWNERS,把 Issue 指派给对应路径的负责人
  • 自动留痕:发布一条以🎯 Issue Triage开头的评论,包含摘要、类型、负责人和置信度(High/Medium/Low),并附带可折叠的分诊依据

核心定义文件就是 issue-triage.md,它用 Markdown 编写智能体提示词,再通过gh aw compile编译出可运行的 issue-triage.lock.yml(带安全加固的标准 GitHub Actions YAML)。这种"Markdown 写逻辑、编译出流水线"的方式,是整个 docs/agentic-workflows.md 描述的 DevOps 智能体工作流体系的通用模式。

一次分诊的 7 个步骤

智能体的完整分诊流程定义在 issue-triage.md 中,步骤非常清晰:

步骤动作说明
1️⃣ 读取 Issueget_issue拉取全文明显是垃圾/机器人 Issue 直接加Triaged标签跳过;已有Triaged标签则不重复处理
2️⃣ 收集上下文读 CODEOWNERS、列出标签、搜索相似 Issue为打标签和查重做准备
3️⃣ 定领域选定一个area-*标签匹配不到任何已有标签时宁缺毋滥,不乱打
4️⃣ 定负责人按 CODEOWNERS 路径匹配无法确定时打needs-manual-assignment标签,不强猜
5️⃣ 定类型bug/enhancement/task/question四选一必须恰好一个
6️⃣ 打标签通过add_labels追加Triaged、重复 Issue 则加duplicate
7️⃣ 发评论唯一的分诊总结评论2-3 句摘要 + 类型 + 负责人 + 置信度 + 相似 Issue 链接

几个针对"重新打开的 Issue"的细节很贴心:它会先检查已有标签是否仍然正确、重点关注导致重开的那条评论中的新信息,并在评论中注明"此问题回归/再次出现"。

安全设计:如何防止 AI"越权操作"

把 AI 接进真实仓库,最怕它被 Issue 内容"带跑偏"。这个工作流在 issue-triage.md 里做了层层设防,对新手理解"AI 自动化安全"很有参考价值:

  1. 把 Issue 内容当数据,不当指令:提示词明确规定 Issue 标题、正文、评论都是不可信输入,即使内容伪装成维护者身份、要求改标签或泄露 Token,智能体也只描述、不执行
  2. safe-outputs 操作上限:最多打 5 个标签、最多 2 次 Issue 更新(且禁止修改正文)、最多 1 条评论——AI 能做的事被"物理限幅"
  3. 最小权限contents: read+issues: read,只读权限
  4. 并发控制concurrency组按 Issue 编号隔离,同一个 Issue 不会同时跑两个分诊
  5. 10 分钟超时timeout-minutes: 10,避免智能体卡死占用资源
  6. PAT 池轮询:通过 shared/pat_pool.md 从 10 个 Token 中挑选,避免单个 Token 额度耗尽

批量补漏:用 issue-triage-batch 分诊历史 Issue

自动触发只覆盖"新打开"的 Issue。那过去攒下来的一批呢?答案是 issue-triage-batch.yml——一个手动触发的确定性工作流:

  • 支持date_from/date_to两个可选日期参数,默认扫描最近 7 天
  • gh issue list --search "created:起..止 -label:Triaged"找出所有未分诊的开放 Issue(上限 200 个)
  • 逐个通过gh workflow run派发 issue-triage 智能体

也就是说,新 Issue 走实时通道,存量 Issue 用批量通道"补课",两条腿走路。

如何在自己项目里启用

  1. 安装gh awCLI 扩展:gh extension install github/gh-aw
  2. 参考本项目仓库结构(clone 地址:https://gitcode.com/GitHub_Trending/skills17/skills),在.github/workflows/下编写智能体.md文件
  3. 执行gh aw compile编译生成.lock.yml,两个文件一起提交
  4. gh aw run <workflow> --dry-run先空跑验证,再实际运行

本项目里同体系还有 issue-investigate.md:当分诊后的 Issue 被加上auto-investigate标签时,深度调查智能体会对照代码库分析根因,甚至在修复方案明确时直接创建草稿 PR——分诊只是第一环。

延伸:PR 侧也有一套自动分诊

除了 Issue,PR 侧同样有完整的自动化分诊体系,详见 docs/design/pr-triage-workflows.md:

  • 每小时批量编排:枚举所有开放 PR,计算确定性状态并派发 worker
  • 单 PR worker:维护唯一pr-state/*标签,触发评测、@ 作者或 @ 维护者,并有 4 天冷却期防止骚扰
  • 每周僵尸 PR 清扫:30 天无活动发警告,37 天直接关闭

写在最后

dotnet/skills 的 issue-triage 智能体展示了一套可直接借鉴的 AI 分诊范式:Markdown 定义逻辑 + 编译成受控流水线 + 严格的操作限幅与不可信输入隔离。对个人开发者,最有价值的三点是——打标签宁缺毋滥、无法确定负责人就标记转人工、每次分诊给出置信度自评。这套方案既保证了自动化效率,也把出错半径控制在"一条评论、几个标签"之内。

【免费下载链接】skillsRepository for skills to assist AI coding agents with .NET and C#项目地址: https://gitcode.com/GitHub_Trending/skills17/skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询