用途
Triage 用于将项目问题跟踪器上的 issue 通过一个小型状态机在分诊角色之间流转。如果仓库将外部 pull request 视为请求入口(参见 issue-tracker 配置),分诊同样覆盖它们:PR 被视为附带代码的 issue,使用相同的角色、相同的状态和相同的状态机,仅有少量差异在文中以“for a PR”标注。裸编号如 #42 会按跟踪器配置解析为 issue 或 PR。
分诊期间发布到问题跟踪器的每条评论或 issue 都必须以以下声明开头:
This was generated by AI during triage.
参考文档
- AGENT-BRIEF.md:如何撰写持久的智能体简报
- OUT-OF-SCOPE.md:.out-of-scope/ 知识库的工作方式
角色
两个分类角色:
- bug:某处损坏
- enhancement:新功能或改进
五个状态角色:
- needs-triage:维护者需要评估
- needs-info:等待报告者提供更多信息
- ready-for-agent:已完全明确,可供 AFK 智能体处理
- ready-for-human:需要人工实现
- wontfix:不会处理
对于 PR,相同状态针对所附代码解读:ready-for-agent 表示已附简报,智能体应对 diff 采取下一步;ready-for-human 表示已可供人工合并。
每个已分诊的 issue 应恰好携带一个分类角色和一个状态角色。如果状态角色冲突,需标记并在做任何其他事情之前询问维护者。
这些是规范角色名称。问题跟踪器中实际使用的标签字符串可能不同。映射应已提供给你。如果没有,请告知用户运行 /setup-matt-pocock-skills。
状态转换:未标记的 issue 通常先进入 needs-triage;从那里可移动到 needs-info、ready-for-agent、ready-for-human 或 wontfix。needs-info 在报告者回复后返回 needs-triage。维护者可随时覆盖;对看起来不寻常的转换需标记并在继续前询问。
调用方式
维护者调用 /triage 并用自然语言描述需求。解释请求并执行。示例:
- “Show me anything that needs my attention”
- “Let's look at #42”(issue 或 PR)
- “Move #42 to ready-for-agent”
- “What's ready for agents to pick up?”
显示需要关注的事项
查询问题跟踪器并呈现三个桶,最旧的在前:
- Unlabeled:从未分诊。
- needs-triage:评估进行中。
- needs-info 且自上次分诊笔记以来报告者有活动:需要重新评估。
当 PR 在范围内时,将外部 PR 纳入这些桶,并为每行标记 [PR] 或 [issue]。发现仅呈现外部 PR(跟踪器配置定义谁算外部),因此协作者的进行中 PR 不算分诊工作。此过滤器仅用于发现;明确指定的 PR 无论作者是谁都会被分诊。
显示计数和每项一行摘要。让维护者挑选。
分诊特定 issue 或 PR
收集上下文。阅读完整 issue 或 PR(正文、评论、标签、作者、日期;对于 PR 还包括 diff)。解析任何先前的分诊笔记,以免重复询问已解决的问题。使用项目领域词汇表探索代码库,尊重该区域的 ADR。对代码库运行两项检查:(a) 冗余:按领域概念(而不仅是请求的措辞)搜索所请求行为的现有实现,并报告你查找的位置。如果找到,则属于已实现的 wontfix(第 5 步)。(b) 先前拒绝:阅读 .out-of-scope/*.md 并呈现任何与此请求相似的内容。
推荐。告诉维护者你的分类和状态建议及理由,外加与请求相关的简要代码库摘要(包括是否已实现)。等待指示。
验证声明。在任何追问之前,检查声明是否成立。对于 bug,从报告者的步骤复现。对于 PR,确认 diff 是否如其声称:检出、运行相关测试或命令。报告结果:已确认(附代码路径)、失败或细节不足(强烈的 needs-info 信号)。已确认的验证能形成更强的智能体简报。
追问(如需要)。如果请求需要充实,调用 Skill 工具两次,分别为 “grilling” 和 “domain-modeling”,一轮问题一轮问题地追问成形,锐化领域术语并随决策落地内联更新 CONTEXT.md/ADR。
应用结果:
- ready-for-agent:发布智能体简报评论(AGENT-BRIEF.md)。
- ready-for-human:与智能体简报结构相同,但注明为何不能委派(判断决策、外部访问、设计决策、手动测试)。
- needs-info:发布分诊笔记(模板见下)。
对于 wontfix,关闭 issue,评论取决于原因:
- 已实现:变更已存在于代码库中。指出其所在位置;不要写入 .out-of-scope/(该知识库用于被拒绝的请求,而非已构建的)。
- 拒绝(bug):礼貌解释,然后关闭。
- 拒绝(enhancement):写入 .out-of-scope/,从评论链接到它,然后关闭(OUT-OF-SCOPE.md)。
needs-triage:应用角色。如有部分进展可选评论。
快速状态覆盖
如果维护者说 “move #42 to ready-for-agent”,信任他们并直接应用角色。确认你即将做什么(角色变更、评论、关闭),然后执行。跳过追问。如果在没有追问会话的情况下移动到 ready-for-agent,询问他们是否想撰写智能体简报。
Needs-info 模板
Triage Notes
What we've established so far:
- point 1
- point 2
What we still need from you (@reporter):
- question 1
- question 2
将追问期间解决的所有内容捕获到 “established so far” 下,以免工作丢失。问题必须具体且可操作,而非 “please provide more info”。
恢复先前会话
如果 issue 或 PR 上存在先前的分诊笔记,阅读它们,检查报告者是否已回答任何未决问题,并在继续之前呈现更新后的情况。不要重复询问已解决的问题。