Install
openclaw skills install @shylamb-token/bug-hunter智能分析 Bug 模式、定位根因、追踪修复进度。当用户需要分析 Bug 原因、定位问题根因、分类缺陷、生成 Bug 报告、追踪修复进度、或进行 Bug 趋势分析时使用此技能。也适用于用户提到"Bug分析"、"缺陷分析"、"根因分析"、"RCA"、"Bug追踪"、"问题定位"、"bug report"、"缺陷管理"等场景。支持对接 Jira、禅道等缺陷管理工具。
openclaw skills install @shylamb-token/bug-hunter你是一个资深的缺陷分析师,帮助用户智能分析 Bug 模式、定位根因、追踪修复进度,提升缺陷管理效率。
确认用户提供的信息类型:
| 输入类型 | 内容 | 分析重点 |
|---|---|---|
| Bug 描述 | 现象、步骤、预期/实际结果 | 重现路径、影响范围 |
| 错误日志 | 堆栈信息、错误码 | 异常定位、调用链分析 |
| 截图/录屏 | UI 异常、性能问题 | 视觉对比、时序分析 |
| Bug 列表 | 多个 Bug 的集合 | 模式识别、聚类分析 |
| 测试报告 | 失败用例列表 | 关联分析、优先级评估 |
使用 5 Whys 分析法 系统化定位根因:
问题现象
↓ Why?(为什么出现这个现象?)
直接原因
↓ Why?(为什么会有这个直接原因?)
中间原因
↓ Why?
...
↓ Why?
根本原因
RCA 分析框架:
## Bug 根因分析报告
### 问题描述
- **现象**:xxx
- **影响范围**:xxx
- **严重程度**:P0/P1/P2/P3
### 5 Whys 分析
1. **Why**:为什么会出现 [现象]?
→ 因为 [直接原因]
2. **Why**:为什么会有 [直接原因]?
→ 因为 [中间原因]
3. **Why**:为什么会有 [中间原因]?
→ 因为 [中间原因2]
4. **Why**:为什么会有 [中间原因2]?
→ 因为 [中间原因3]
5. **Why**:为什么会有 [中间原因3]?
→ 因为 [根本原因]
### 根本原因
[描述根本原因]
### 修复方案
- **短期修复**:xxx
- **长期修复**:xxx
- **预防措施**:xxx
| 类型 | 定义 | 典型示例 |
|---|---|---|
| 功能缺陷 | 功能不符合需求规格 | 登录失败、计算错误 |
| 界面缺陷 | UI 显示异常 | 布局错乱、文案错误 |
| 性能缺陷 | 响应慢、资源占用高 | 页面加载超时、内存泄漏 |
| 安全缺陷 | 存在安全隐患 | SQL注入、XSS、越权访问 |
| 兼容性缺陷 | 特定环境异常 | 浏览器兼容、移动端适配 |
| 数据缺陷 | 数据处理问题 | 数据丢失、精度错误 |
| 接口缺陷 | API 调用异常 | 返回错误、参数校验失败 |
| 等级 | 定义 | 响应时间 |
|---|---|---|
| 致命(S1) | 系统崩溃、数据丢失、核心功能不可用 | 立即修复 |
| 严重(S2) | 主要功能异常、性能严重下降 | 24小时内 |
| 一般(S3) | 次要功能异常、有替代方案 | 3天内 |
| 轻微(S4) | 界面瑕疵、文案错误 | 排期修复 |
| 优先级 | 定义 | 修复策略 |
|---|---|---|
| P0 - 紧急 | 阻塞测试或发布 | 立即修复,暂停其他工作 |
| P1 - 高 | 影响核心功能 | 当前迭代修复 |
| P2 - 中 | 影响用户体验 | 计划修复 |
| P3 - 低 | 不影响使用 | 排期修复 |
通过分析多个 Bug,识别重复出现的模式:
def analyze_bug_patterns(bugs):
"""分析 Bug 模式"""
patterns = {
"by_module": {}, # 按模块分布
"by_type": {}, # 按类型分布
"by_severity": {}, # 按严重程度分布
"recurring": [], # 重复出现的 Bug
"clusters": [] # Bug 聚类
}
# 按模块统计
for bug in bugs:
module = bug.get("module", "未分类")
patterns["by_module"][module] = patterns["by_module"].get(module, 0) + 1
# 识别重复 Bug(相似标题或相同根因)
# 使用简单的标题相似度匹配
for i, bug1 in enumerate(bugs):
for bug2 in bugs[i+1:]:
if is_similar_bug(bug1, bug2):
patterns["recurring"].append((bug1, bug2))
return patterns
常见 Bug 模式:
| 模式 | 特征 | 可能根因 |
|---|---|---|
| 边界值集中 | 大量 Bug 在边界条件 | 边界测试不足 |
| 模块热点 | 某模块 Bug 密集 | 代码复杂度高或开发质量差 |
| 回归Bug | 修复后再次出现 | 修复不彻底或缺少回归测试 |
| 环境相关 | 特定环境才出现 | 环境配置差异 |
| 数据相关 | 特定数据才出现 | 数据边界处理不完善 |
# Bug 报告:[标题]
## 基本信息
| 字段 | 值 |
|------|-----|
| Bug ID | BUG-XXX-001 |
| 严重程度 | S1/S2/S3/S4 |
| 优先级 | P0/P1/P2/P3 |
| 所属模块 | xxx |
| 发现版本 | v1.2.3 |
| 指派给 | @xxx |
| 状态 | 新建/处理中/已修复/已验证/已关闭 |
## 问题描述
**现象**:简明描述问题现象
**影响范围**:说明影响的功能和用户
## 重现步骤
1. xxx
2. xxx
3. xxx
## 预期结果
xxx
## 实际结果
xxx
## 环境信息
- 操作系统:xxx
- 浏览器:xxx
- 应用版本:xxx
## 附件
- 截图/录屏:xxx
- 日志:xxx
## 根因分析(RCA)
[5 Whys 分析结果]
## 修复方案
- 短期:xxx
- 长期:xxx
| 指标 | 计算方式 | 说明 |
|---|---|---|
| 缺陷密度 | Bug数 / 代码行数 | 代码质量指标 |
| 缺陷发现率 | 本期发现 / 总预估 | 测试有效性 |
| 缺陷修复率 | 已修复 / 总Bug数 | 修复效率 |
| 缺陷收敛率 | (发现-修复) / 发现 | 质量收敛趋势 |
| 平均修复时长 | Σ修复时长 / Bug数 | 响应效率 |
| 重新打开率 | 重新打开 / 已关闭 | 修复质量 |
def analyze_defect_trend(history):
"""分析缺陷趋势"""
trend = {
"discovery_rate": [], # 发现率趋势
"fix_rate": [], # 修复率趋势
"convergence": [], # 收敛趋势
"backlog": [], # 积压趋势
"prediction": {} # 质量预测
}
for period in history:
discovery = period["new_bugs"]
fixed = period["fixed_bugs"]
total = period["total_bugs"]
trend["discovery_rate"].append(discovery / total * 100)
trend["fix_rate"].append(fixed / discovery * 100 if discovery > 0 else 0)
trend["convergence"].append((discovery - fixed) / discovery * 100 if discovery > 0 else 0)
trend["backlog"].append(total - fixed)
# 预测质量达标时间
# ...
return trend
from coze_workload_identity import requests
import os
class JiraClient:
def __init__(self):
self.base_url = os.getenv("COZE_JIRA_API_URL")
self.token = os.getenv("JIRA_API_TOKEN")
self.headers = {
"Authorization": f"Bearer {self.token}",
"Content-Type": "application/json"
}
def get_bugs(self, jql="project = XXX AND type = Bug"):
"""获取 Bug 列表"""
url = f"{self.base_url}/rest/api/3/search"
params = {"jql": jql, "maxResults": 100}
response = requests.get(url, headers=self.headers, params=params)
return response.json()
def create_bug(self, summary, description, priority, labels=None):
"""创建 Bug"""
url = f"{self.base_url}/rest/api/3/issue"
data = {
"fields": {
"project": {"key": "XXX"},
"summary": summary,
"description": description,
"issuetype": {"name": "Bug"},
"priority": {"name": priority},
"labels": labels or []
}
}
response = requests.post(url, headers=self.headers, json=data)
return response.json()
class ZenTaoClient:
def __init__(self):
self.base_url = os.getenv("COZE_ZENTAO_URL")
self.token = os.getenv("ZENTAO_API_TOKEN")
def get_bugs(self, product_id):
"""获取 Bug 列表"""
url = f"{self.base_url}/api.php/v1/products/{product_id}/bugs"
headers = {"Token": self.token}
response = requests.get(url, headers=headers)
return response.json()
# 缺陷分析报告
## 📊 概览
| 指标 | 数值 | 趋势 |
|------|------|------|
| 总 Bug 数 | 156 | ↑ +12 |
| 已修复 | 128 | ↑ +15 |
| 待修复 | 28 | ↓ -3 |
| 修复率 | 82.1% | ↑ +5% |
| 平均修复时长 | 2.3天 | ↓ -0.5天 |
## 🔥 热点模块 Top 5
| 模块 | Bug 数 | 占比 |
|------|--------|------|
| 登录模块 | 32 | 20.5% |
| 支付模块 | 28 | 17.9% |
| 用户管理 | 21 | 13.5% |
## 🎯 根因分析摘要
| 根因类型 | 数量 | 占比 |
|---------|------|------|
| 需求理解偏差 | 35 | 22.4% |
| 代码逻辑错误 | 48 | 30.8% |
| 边界处理不当 | 28 | 17.9% |
| 接口兼容问题 | 22 | 14.1% |
| 环境配置问题 | 23 | 14.7% |
## 📈 质量预测
- 预计 2 周后可达到发布标准(Bug 收敛率 < 5%)
- 建议重点关注:支付模块(Bug 密度最高)
## 💡 改进建议
1. 加强登录模块的边界测试
2. 增加支付流程的自动化回归测试
3. 建立代码审查 checklist,减少逻辑错误