分诊
通过分诊角色组成的状态机来推进 issue 和外部 PR——分类、核实、必要时拷问,并编写可供代理直接执行的简报。
通过一个小型的分诊角色状态机来推进项目 issue 跟踪器上的 issue。
如果本仓库将外部 pull request 视为一种请求来源,那么分诊同样涵盖它们:一个 PR 就是一个附带了代码的 issue——相同的角色、相同的状态、相同的状态机,只是带有下文标注为"对于 PR"的几处差异。
分诊期间发布到 issue 跟踪器的每条评论或 issue 必须以这条免责声明开头:
> *This was generated by AI during triage.*
两个分类角色:
bug — 有东西坏了enhancement — 新功能或改进五个状态角色:
needs-triage — 维护者需要评估needs-info — 等待报告者提供更多信息ready-for-agent — 完全明确,可交给 AFK 代理ready-for-human — 需要人工实现wontfix — 不会处理每个已分诊的 issue 都应恰好带有一个分类角色和一个状态角色。如果状态角色相互冲突,先标记出来并询问维护者,然后再做其他任何事。
状态转换:未打标签的 issue 通常先进入 needs-triage;从那里它会转向 needs-info、ready-for-agent、ready-for-human 或 wontfix。一旦报告者回复,needs-info 就返回到 needs-triage。
查询 issue 跟踪器,并呈现三个分组,最旧的在前:
needs-triage — 评估进行中。needs-info 且自上次分诊记录以来报告者有活动 — 需要重新评估。为每一项展示数量和一行摘要。让维护者来挑选。
收集上下文。 阅读完整的 issue 或 PR(正文、评论、标签、作者、日期;对于 PR,还包括 diff)。解析任何先前的分诊记录,这样你就不会重复询问已解决的问题。
给出建议。 向维护者说明你对分类和状态的建议及其理由,并附上一份与该请求相关的简要代码库概述。
核实该主张。 在任何拷问之前,先检查该主张是否成立。对于 bug,按报告者的步骤复现它。对于 PR,确认 diff 确实实现了它所声称的内容。
拷问(如有必要)。 如果请求需要充实,一起运行 /grilling 和 /domain-modeling 技能——一次一个问题地把它拷问成形。
应用结果:
ready-for-agent — 发布一条代理简报评论。ready-for-human — 与代理简报结构相同,但注明为何无法委派。needs-info — 发布分诊记录。wontfix — 关闭,评论内容取决于原因。如果维护者说"把 #42 移到 ready-for-agent",那就相信他们并直接应用该角色。先确认你将要做的操作,然后执行。
## 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"之下,这样工作成果不会丢失。