首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一句话就能提Bug,这个自动提交Bug Skill 太好用了

一句话就能提Bug,这个自动提交Bug Skill 太好用了

作者头像
Bug挖掘机
发布2026-05-26 17:22:49
发布2026-05-26 17:22:49
50
举报
文章被收录于专栏:测试开发基础测试开发基础

大家好,我是洋子

对于一个测试工程师来说,最令人烦躁的事情是什么?我觉得不是跟开发扯皮,而是提Bug

每次提 Bug,咱们做什么?

打开阿里云效(或 Jira、禅道、自研平台等Bug管理平台),新建缺陷工作项,填标题,填描述,选优先级,选严重程度,选所属端,选所属项目,选迭代,选负责人,上传错误截图……

更让人崩溃的是,有些互联网大厂提Bug所需要的必填字段就有不下10个(纯为了统计数据),需求都还没测完,你已经累了,特别是某个需求有上百个bug的时候,提Bug都能提到手抽筋

那有没有一种可能:你用自然语言说一句话,Bug 就自动提好了?

于是,我写了一个叫 yunxiao-bug 的Skill。现在我提 Bug 是这样的,在AI工具命令行输入Bug描述:

/yunxiao-bug 线上环境的虾不回消息

然后它就自动帮我:

  • 标题填好了:「线上环境的虾不回消息」(可自动优化标题内容)
  • 所属端推断为:后端(服务端消息处理问题)
  • 所属项目推断为:智能体("虾"是我们的智能体角色)
  • Bug 类型推断为:程序问题 (还可推断UI问题/需求问题)
  • 优先级推断为:高(功能完全不可用)
  • 严重程度推断为:2-严重
  • 负责人自动分配给后端开发:张三
  • 迭代、发现方式等字段全部自动填写

如果还有其他自定义字段,也可以添加配置扩展

一条命令,直接提交进阿里云效平台,完事。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

跟提BUG机器人的区别

有小伙伴可能会问,这跟提交Bug的机器人没什么区别

其实对于自动提Bug的这种场景,早在几年前团队内就利用机器人的形式实现了(如钉钉、飞书、如流机器人等),通过@机器人的形式去提交Bug标题和截图,但机器人和Skill提交方式有明显区别,下面是流程对比

在这里插入图片描述
在这里插入图片描述

传统提 Bug 机器人(钉钉/飞书/Slack Bot)

传统机器人的典型流程:

  1. 你在群里@机器人,触发一个表单
  2. 表单里有一堆下拉框让你选:优先级?严重程度?所属端?
  3. 你手动填完,机器人帮你调 API 提交

本质上就是把「在网页上填表」变成了「在聊天窗口填表」。表单一个字段都少不了,你只是换了个地方填而已。

所以这种方式仍然存在明显的弊端

  • 基于规则,无法自动区分端,在提交Bug的时候,需要人工选择所属端,IOS端/安卓端/服务端/前端等
  • 无法自动分配到开发人员,还需要人工到Bug管理平台上修改
  • 无法自动填写必填字段,还需要到Bug管理平台上人工修改
  • Bug描述无法自动扩写,比如优化标题,复现步骤,期望结果

yunxiao-bug Skill 的做法

我这个工具不需要你填任何表单。它的核心逻辑是:

AI 根据你的一句自然语言描述,自动推断出所有字段。

比如你说"安卓端搜索页面样式错乱",AI 会推断:

代码语言:javascript
复制
- 所属端 → 安卓(关键词"安卓端")
- Bug类型 → UI设计问题(关键词"样式错乱")
- 优先级 → 低(体验/样式问题)
- 严重程度 → 4-轻微
- 负责人 → 自动分配给安卓开发

你说"IOS端点击登录按钮崩溃",AI 会推断:

代码语言:javascript
复制
- 所属端 → iOS(关键词"iOS端")
- Bug类型 → 程序问题(关键词"崩溃")
- 优先级 → 高(功能完全不可用)
- 严重程度 → 2-严重
- 负责人 → 自动分配给 iOS 开发

AI加载了这个Skill就是有经验的QA,他能根据自然语言的Bug描述进行语义理解,而不是像传统机器人是个表格搬运工,单纯进行模版填充

yunxiao-bug Skill我已经放在测开学习圈里面了,感兴趣的同学欢迎进圈获取,也可以根据下面的原理介绍自行实现Skill

实现原理:三层架构

yunxiao-bug 的实现分三层:

第一层:Skill 定义(SKILL.md)

这是给 Claude Code 看的"说明书",定义了:

  • 什么时候触发这个 Skill(用户说"提个 Bug"、"/yunxiao-bug")
  • AI 的推断规则(怎么根据描述判断所属端、Bug 类型等)
  • 提交流程的完整步骤

核心在于推断规则。比如:

描述中的线索

推断为

接口、API、500错误、超时

后端

页面、样式、CSS、H5

前端

Android、APK、安卓

安卓

崩溃、报错、数据错误

程序问题

样式错乱、视觉问题

UI设计问题

功能完全不可用

优先级高、严重

体验/样式问题

优先级低、轻微

这些规则让 AI 像一个经验丰富的 QA 一样,听你说一句话就知道该怎么分类。

第二层:配置文件(config.yaml)

这是整个系统的"知识库",包含:

代码语言:javascript
复制
# 项目基本信息 (获取方式见下)
organization_id:"xxxxxx"
space_identifier:"xxxxxx"

# 默认值
defaults:
priority:"中"
severity:"3-一般"
assigned_to:"AI测试员工"
sprint:"UniClaw_V1.0"

# 按所属端自动分配负责人
assigned_to_by_platform:
安卓:"唐xx"
IOS:"聂xx"
后端:"李x"
前端:"胡x"

# 所有自定义字段的定义和可选值
field_definitions:
所属端:
options:[其他,算法,后端,前端,安卓,IOS,Windows,MAC]
Bug类型:
options:[程序问题,需求问题,UI设计问题]
发现方式:
options:[AI自动化测试,用户反馈,手工测试,...]
# ... 20+ 个自定义字段

这个文件是项目特定的。不同项目的字段、选项、负责人都不同。AI 提交前会先读这个文件,确保所有填写的值都是合法的,可以让AI修改成自己的项目配置。

4个关键参数的获取方式:

  • Organization ID (云效组织ID):打开云效,点击头像-管理后台-基本信息,可以复制组织ID
在这里插入图片描述
在这里插入图片描述
  • Space Identifier (云效项目ID)
在这里插入图片描述
在这里插入图片描述
  • AccessKey IDAccessKey Secret :创建方式见 https://help.aliyun.com/zh/ram/user-guide/create-a-ram-user
在这里插入图片描述
在这里插入图片描述

第三层:提交脚本(submit_bug.py)

这是实际调用云效 API 的 Python 脚本,大约 800 行代码,功能包括:

  • Bug 提交:调用 CreateWorkitemV2Request 创建工作项
  • Bug 查看:调用 GetWorkItemInfo 获取详情
  • Bug 更新:调用 UpdateWorkitemField 更新状态和字段
  • 文件上传:自动上传截图到云效 OSS,并关联到工作项
  • 字段映射:支持中文名 → identifier 的自动转换

完整工作流程

当你对 Claude Code(Cursor,CodeX等其他AI编程工具也支持) 提交Bug描述"线上环境的虾不回消息",背后发生了什么:

代码语言:javascript
复制
用户输入: "线上环境的虾不回消息"
          ↓
Step 1: Claude Code 识别意图,触发 yunxiao-bug Skill
          ↓
Step 2: AI 读取 config.yaml,获取所有可用字段和选项
          ↓
Step 3: AI 语义分析,推断各字段值
         - 所属端 → 后端
         - 所属项目 → 智能体
         - Bug类型 → 程序问题
         - 优先级 → 高
         - 严重程度 → 2-严重
         - 发现方式 → 用户反馈
          ↓
Step 4: AI 查找负责人映射
         - 所属端=后端 → 负责人=李四
          ↓
Step 5: 组装命令并执行
         submit_bug.py submit \
           --subject "线上环境的虾不回消息" \
           --priority "高" \
           --severity "2-严重" \
           --assigned-to "李四的accountId" \
           --field "所属端=后端" \
           --field "所属项目=智能体" \
           --field "Bug类型=程序问题" \
           --field "发现方式=用户反馈"
          ↓
Step 6: submit_bug.py 调用云效 API
         - 解析中文字段名 → identifier
         - 解析中文选项值 → 实际值
         - 调用 CreateWorkitemV2Request
          ↓
Step 7: 返回结果
         "Bug 创建成功! 工作项ID: xxx"

全程你只说了一句话。


详细使用方法

1. 安装

代码语言:javascript
复制
# 一键安装,自动配置环境变量、Python 依赖、Claude Code 权限
bash ~/.claude/skills/yunxiao-bug/setup.sh

安装脚本会自动:

  • 检测操作系统(macOS/Linux/Windows WSL)
  • 配置阿里云 AK/SK 环境变量
  • 创建 Python 虚拟环境并安装依赖
  • 验证 API 连通性

2. 基本用法:一句话提 Bug

在 Claude Code 中直接描述 Bug 即可:

代码语言:javascript
复制
你:线上环境的虾不回消息
你:安卓端搜索页面样式错乱
你:iOS点击登录按钮直接崩溃
你:后端接口 /api/chat 返回 500

Claude 会自动推断所有字段并提交。

3. 指定额外信息

你也可以提供更多细节,AI 会据此做出更精准的推断:

代码语言:javascript
复制
你:安卓端在华为 Mate60 上,点击发送消息按钮没反应,但小米手机正常。
    错误日志是 NullPointerException at MessageHandler.java:142

这时 AI 会额外填写:

  • 测试环境:华为 Mate60
  • 错误日志:NullPointerException at MessageHandler.java:142
  • 复现步骤:在华为 Mate60 上点击发送消息按钮

4. 带截图提 Bug

代码语言:javascript
复制
你:这个页面样式有问题,截图在 /tmp/screenshot.png

除了描述图片路径,还可以拖图片到CC命令行

在这里插入图片描述
在这里插入图片描述

AI 会自动上传截图到云效并关联到工作项。

5. 查看 Bug 详情

代码语言:javascript
复制
你:/yunxiao-bug 查看 Bug XXXX-123 的详情

6. 更新 Bug 状态

代码语言:javascript
复制
你:/yunxiao-bug 把 Bug XXXX-123 标记为已修复,修复方案是重构了消息队列逻辑

如何迁移到其他平台

yunxiao-bug skill的架构是高度模块化的。如果你用的不是云效,而是 Jira、禅道、或者自研平台,迁移起来并不复杂。你需要改动的只有两层:

迁移到 Jira

需要改的:

  1. submit_bug.py — 替换 API 调用层
代码语言:javascript
复制
# 原来:阿里云效 SDK
from alibabacloud_devops20210625.client import Client

# 改为:Jira REST API
import requests

classJiraClient:
def__init__(self, base_url, email, api_token):
        self.base_url = base_url
        self.auth = (email, api_token)

defcreate_issue(self, project_key, summary, description, **fields):
        payload = {
"fields": {
"project": {"key": project_key},
"summary": summary,
"description": description,
"issuetype": {"name": "Bug"},
"priority": {"name": fields.get("priority", "Medium")},
"assignee": {"accountId": fields.get("assignee")},
# 自定义字段
                **{k: v for k, v in fields.items() if k.startswith("customfield_")}
            }
        }
        resp = requests.post(
f"{self.base_url}/rest/api/3/issue",
            json=payload, auth=self.auth
        )
return resp.json()

Jira API 文档:https://developer.atlassian.com/cloud/jira/platform/rest/v3/

  1. config.yaml — 改为 Jira 项目配置
代码语言:javascript
复制
# Jira 配置
jira_base_url:"https://your-company.atlassian.net"
project_key:"PROJ"

defaults:
priority:"Medium"
assignee:"accountId_xxx"

# 自定义字段映射
field_definitions:
所属端:
identifier:"customfield_10001"
options:
后端:"backend"
前端:"frontend"
安卓:"android"
  1. SKILL.md — 基本不用改。AI 推断规则是平台无关的,只需要把命令示例改成对应参数格式。

迁移到禅道

需要改的:

  1. submit_bug.py — 使用禅道 REST API
代码语言:javascript
复制
import requests

classZentaoClient:
def__init__(self, base_url, account, password):
        self.base_url = base_url
        self.session = requests.Session()
# 登录获取 token
        self.session.post(f"{base_url}/api.php/v1/tokens", json={
"account": account, "password": password
        })

defcreate_bug(self, product_id, title, **fields):
        payload = {
"title": title,
"product": product_id,
"severity": fields.get("severity", 3),
"pri": fields.get("priority", 3),
"assignedTo": fields.get("assignee", ""),
"type": fields.get("bug_type", "codeerror"),
"steps": fields.get("description", ""),
# 自定义字段...
        }
        resp = self.session.post(
f"{self.base_url}/api.php/v1/bugs",
            json=payload
        )
return resp.json()

禅道 API 文档:https://www.zentao.net/book/api/setting-369.html

  1. config.yaml — 改为禅道配置
代码语言:javascript
复制
zentao_base_url:"https://zentao.your-company.com"
product_id:1

defaults:
severity:3# 禅道用数字 1-4
priority:3
assignee:"zhangsan"

field_definitions:
Bug类型:
identifier:"type"
options:
程序问题:"codeerror"
需求问题:"designdefect"
UI设计问题:"designchange"

迁移到自研平台

如果你们公司是自研的项目管理系统,迁移思路一样——你只需要提供一套 CRUD API

代码语言:javascript
复制
必需 API:
POST   /api/bugs           — 创建 Bug(必须)
GET    /api/bugs/:id       — 查看 Bug 详情
PUT    /api/bugs/:id       — 更新 Bug 状态和字段
POST   /api/bugs/:id/files — 上传附件

可选 API:
GET    /api/projects       — 获取项目列表
GET    /api/users          — 获取用户列表
GET    /api/fields         — 获取自定义字段定义
GET    /api/sprints        — 获取迭代列表

然后在 submit_bug.py 中实现一个 Client 类来封装这些 API 调用即可。

迁移清单总结

要改的文件

改什么

工作量

submit_bug.py

替换 API 调用(云效 SDK → 目标平台 API)

中等(200-400行)

config.yaml

替换项目配置、字段映射、选项值

小(照着目标平台字段配一遍)

SKILL.md

基本不用改,推断规则是通用的

极小(改几个命令示例)

setup.sh

替换环境变量(AK/SK → 目标平台认证信息)

核心洞察:这个 Skill 的价值不在 API 调用,而在 AI 推断规则。 推断规则是平台无关的——无论你用什么项目管理系统,AI 都能从"安卓端搜索页面样式错乱"推断出这是一个安卓端的 UI 问题、优先级低、应该分配给安卓开发。这一层完全不用改。


不只是提 Bug

yunxiao-bug 只是整个 AI QA 流水线的一个环节。在我们的实践中,它跟其他 Skill 组成了完整的闭环:

  1. auto-test:AI 自动跑测试,发现 Bug
  2. yunxiao-bug:AI 自动把 Bug 提到云效
  3. yunxiao-autofix:AI 自动修复 Bug、提交 MR、回写云效

从发现 Bug 到修复 Bug,全程 AI 驱动,人只需要做最后的 Code Review。

PS:auto-test skill目前已实现AI驱动APP自动化测试,但yunxiao-autofix Skill目前还在调试中,等调试落地后,再来分享,欢迎持续关注我


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发Guide 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 跟提BUG机器人的区别
    • 传统提 Bug 机器人(钉钉/飞书/Slack Bot)
    • yunxiao-bug Skill 的做法
  • 实现原理:三层架构
    • 第一层:Skill 定义(SKILL.md)
    • 第二层:配置文件(config.yaml)
    • 第三层:提交脚本(submit_bug.py)
  • 完整工作流程
  • 详细使用方法
    • 1. 安装
    • 2. 基本用法:一句话提 Bug
    • 3. 指定额外信息
    • 4. 带截图提 Bug
    • 5. 查看 Bug 详情
    • 6. 更新 Bug 状态
  • 如何迁移到其他平台
    • 迁移到 Jira
    • 迁移到禅道
    • 迁移到自研平台
    • 迁移清单总结
  • 不只是提 Bug
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档