问题分类处理技能
分析GitHub问题,根据代码库验证声明,并通过技术性回复关闭无效问题。
触发条件
用户提供GitHub问题URL或编号,例如:
/triage-issue 1970/triage-issue https://github.com/adenhq/hive/issues/1970
工作流程
步骤1:获取问题详情
gh issue view <编号> --repo adenhq/hive --json title,body,state,labels,author
提取:
- 标题
- 正文(声明/错误报告)
- 当前状态
- 标签
- 作者
如果问题已关闭,通知用户并停止。
步骤2:分析声明
阅读问题正文并识别:
- 核心声明 - 用户断言什么?
- 技术细节 - 提到的文件路径、函数名称、代码片段
- 预期行为 - 他们认为应该发生什么?
- 声明的严重性 - 安全问题?错误?功能请求?
步骤3:调查代码库
对于每个技术声明:
- 使用Grep/Glob/Read查找引用的代码
- 理解实际实现
- 检查声明是否准确描述了行为
- 查找相关测试、文档或设计决策
步骤4:评估有效性
将问题分类为以下之一:
| 类别 | 操作 |
|---|---|
| 有效错误 | 不要关闭。告知用户这是一个真实问题。 |
| 有效功能请求 | 不要关闭。建议适当添加标签。 |
| 误解 | 准备技术解释说明为何行为是正确的。 |
| 根本性缺陷 | 准备解释说明技术不可行性或设计原理的评论。 |
| 重复 | 找到原始问题并准备重复通知。 |
| 不完整 | 准备请求更多信息。 |
步骤5:起草回复
对于要关闭的问题,起草回复:
- 承认关切 - 不要轻视
- 解释实际行为 - 附带代码引用
- 提供技术原理 - 为什么这样工作
- 引用行业标准 - 如果适用
- 提供替代方案 - 如果有更好的方法
使用此模板:
## 分析
[简要总结调查内容]
## 技术细节
[附带代码引用的解释]
## 为何这是按设计工作
[原理]
## 建议
[用户应采取的替代方案,如果适用]
---
*此问题已由维护者审核并关闭。*
步骤6:用户审核
向用户展示草稿:
## 问题 #<编号>: <标题>
**声明:** <声明摘要>
**发现:** <有效/无效/误解等>
**草稿回复:**
<markdown回复>
---
您希望我发布此评论并关闭问题吗?
使用AskUserQuestion选项:
- “发布并关闭” - 发布评论,关闭问题
- “编辑回复” - 让用户修改回复
- “跳过” - 不采取行动
步骤7:执行操作
如果用户批准:
# 发布评论
gh issue comment <编号> --repo adenhq/hive --body "<回复>"
# 关闭问题
gh issue close <编号> --repo adenhq/hive --reason "not planned"
报告成功并附上问题链接。
重要指南
- 绝不关闭有效问题 - 如果声明有任何价值,不要关闭它
- 保持尊重 - 报告者花时间提交问题
- 保持技术性 - 提供代码引用和证据
- 保持教育性 - 帮助他们理解,不要只是驳回
- 双重检查 - 在宣布无效之前确保理解代码
- 考虑边缘情况 - 也许他们的环境揭示了真实问题
示例评论
安全误解
“关于明文暴露秘密的声明误解了加密架构。虽然
SecretStr用于日志保护,但实际加密由存储层的Fernet(AES-128-CBC)提供。代码路径是:序列化 → 加密 → 写入。只有加密字节接触磁盘。”
不可能的要求
“请求的功能需要[X],这违反了[基本约束]。这不是我们实现的限制,而是[技术/协议]的基本属性。”
已处理
“此场景已由[代码引用]处理。报告者可能在使用旧版本或配置错误的环境。”