bugbug

GitHub
559 329 中等 1 次阅读 4天前MPL-2.0语言模型Agent图像开发框架
AI 解读 由 AI 自动生成,仅供参考

bugbug 是一个由 Mozilla 开发的开源机器学习平台,专为软件工程领域设计。它致力于利用人工智能技术优化软件缺陷管理和质量保障流程,帮助团队更高效地处理海量问题报告。

在实际开发中,面对成千上万的 Bug 提交,人工分类、指派和筛选往往耗时费力且容易出错。bugbug 通过训练多种分类模型,自动解决这些痛点:它能智能识别真正的程序缺陷而非功能请求,自动推荐合适的修复负责人,预测代码补丁是否会导致测试失败或需要回退,甚至能精准筛选出最需要运行的测试用例,从而大幅提升研发效率。

这款工具特别适合软件开发者、测试工程师(QA)以及从事软件工程研究的科研人员使用。对于维护大型开源项目或复杂商业系统的团队而言,bugbug 能有效减轻重复性劳动,让专业人员将精力集中在核心问题上。

其独特亮点在于提供了丰富的预训练模型场景,涵盖从“缺陷类型识别”、“回归检测”到“垃圾信息过滤”等十多种具体任务。更值得一提的是,bugbug 生成的训练数据可以独立于平台使用,为研究人员提供了宝贵的数据集资源,促进了机器学习在软件工程领域的进一步探索与应用。

使用场景

某大型开源浏览器项目的测试团队每天需处理数百个新提交的代码补丁和缺陷报告,面临巨大的人工筛选压力。

没有 bugbug 时

  • 缺陷分类低效:测试经理需人工阅读每条报告,耗时区分真正的“代码缺陷”与“功能请求”或“垃圾信息”,导致严重阻塞。
  • 回归风险难测:难以快速识别哪些补丁可能引发回归测试失败,往往只能全量运行测试套件,浪费大量计算资源和时间。
  • 责任分配模糊:新报出的缺陷无法自动匹配到正确的负责模块或开发人员,需要在多个团队间反复流转确认。
  • 验证优先级混乱:缺乏数据支撑来判断哪些缺陷急需 QA 验证,重要的高危漏洞常被淹没在普通工单中。

使用 bugbug 后

  • 智能自动分类:利用 defectspam 分类器,系统自动过滤掉非缺陷报告和垃圾信息,准确率达 93% 以上,让团队专注真实问题。
  • 精准风险预警:通过 regressortestfailure 模型预测高风险补丁,仅针对这些变更运行深度测试,大幅缩短反馈周期。
  • 自动路由分派assigneecomponent 分类器根据历史数据将新缺陷直接指派给最合适的开发者和模块,消除流转延迟。
  • 动态优先级排序:借助 qaneededbugtype 模型,自动标记出需要紧急验证的崩溃或安全类缺陷,确保资源投向最关键处。

bugbug 将机器学习深度融入软件工程流程,把原本依赖经验的人工决策转化为高效、精准的自动化闭环。

运行环境要求

操作系统
  • Linux
GPU

未说明

内存

未说明(仓库挖掘脚本运行耗时极长,建议配备充足内存)

依赖
notes1. 主要面向 Mozilla/Firefox 项目,需连接 Bugzilla 和 mozilla-central 仓库。2. 可选依赖 libgit2 (v1.0.0) 仅在部分功能需要,若无法安装可跳过。3. 训练模型耗时较长(30 分钟以上),挖掘仓库数据可能超过 7 小时。4. 支持通过 Taskcluster (Mozilla CI) 进行分布式训练。5. 若需自行挖掘仓库数据,需配置 Mercurial 及特定扩展(如 firefoxtree)。
python3.10+
requirements.txt 中定义的依赖
test-requirements.txt (可选)
libgit2-dev (v1.0.0+, 可选)
bugbug hero image

快速开始

bugbug

任务状态 codecov

Bugbug 的目标是利用机器学习技术来辅助 Bug 和质量管理工作,以及其他软件工程任务(例如测试选择和缺陷预测)。

欢迎在 bugbug Matrix 频道与我们交流。

更多相关信息请参阅 Mozilla Hacks 博客:

由 BugBug 生成用于训练模型的数据可以独立于 BugBug 使用。详情请参阅 文档

分类器

  • assignee - 该分类器旨在为 Bug 建议合适的分配对象。

  • backout - 该分类器旨在检测可能更容易被回退的补丁(由于构建或测试失败)。可用于测试优先级排序或调度。

  • bugtype - 该分类器旨在根据 Bug 类型对其进行分类。标签是从 Bug 中自动收集的:目前包括“崩溃/内存/性能/安全”。计划在人工标注后添加更多类型。

  • component - 该分类器旨在为未分类的 Bug 分配产品/组件。

  • defect vs enhancement vs task - 这是 defect 分类器的扩展,用于区分功能请求和开发任务。

  • defect - Bugzilla 上的 Bug 并不总是真正的 Bug。有时它们是功能请求、重构等。该分类器旨在区分真正的 Bug 和非 Bug。当前数据集包含 2110 个 Bug,现有分类器的准确率约为 93%(精确率约 95%,召回率约 94%)。

  • devdocneeded - 该分类器旨在检测需要为开发者记录文档的 Bug。

  • needsdiagnosis - 该分类器旨在检测很可能无效且无需诊断的问题,适用于 webcompat 场景。

  • qaneeded - 该分类器旨在检测需要 QA 验证的 Bug。

  • regression vs non-regression - Bugzilla 使用 regression 关键字来标识回归性 Bug。然而,这一标记并不一致。该分类器旨在检测回归性 Bug。

  • regressionrange - 该分类器旨在区分存在回归范围的回归性 Bug 和不存在回归范围的回归性 Bug。

  • regressor - 该分类器旨在检测更有可能导致回归的补丁。可用于对风险较高的补丁进行更严格的审查。

  • spam - 该分类器旨在检测垃圾 Bug。

  • stepstoreproduce - 该分类器旨在检测具有重现步骤的 Bug 和不具有重现步骤的 Bug。

  • testfailure - 该分类器旨在检测可能更容易导致测试失败的补丁。

  • testselect - 该分类器旨在为给定补丁选择相关测试用例。

  • tracking - 该分类器旨在检测需要跟踪的 Bug。

  • uplift - 该分类器旨在检测应批准 uplift 的 Bug 和不应批准 uplift 的 Bug。

设置与先决条件

安装 Python 依赖项:

pip3 install -r requirements.txt

您可能还需要运行 pip install -r test-requirements.txt。根据您希望运行的 BugBug 模块,可能还需要安装其他需求文件中的依赖项(可通过 find . -name "*requirements*" 查找)。

目前需要 Python 3.10 或更高版本。您可以通过查看 setup.py 来确认我们使用的版本。

此外,libgit2(需要 v1.0.0,仅在 Debian 的实验版中可用)可能 是必需的(如果无法安装,请跳过此步骤)。

sudo apt-get -t experimental install libgit2-dev

自动格式化

该项目使用 pre-commit。请运行 pre-commit install 将 Git 预提交钩子安装到您的克隆中。

每次尝试提交时,pre-commit 都会检查您的文件,以确保其符合我们的代码风格标准,并且没有受到一些简单问题的影响。如果检查失败,pre-commit 将阻止您提交。

使用方法

训练

运行 trainer.py 脚本,命令为 python -m scripts.trainer(使用 --help 可查看命令的必选和可选参数),以执行训练(注意,这需要 30 分钟以上)。

测试

要使用模型对特定 Bug 进行分类,可以运行 python -m scripts.bug_classifier MODEL_NAME --bug-id ID_OF_A_BUG_FROM_BUGZILLA。请注意:如果您在未先训练模型的情况下运行分类器脚本,它将自动下载一个已训练好的模型。

“defect” 模型示例

训练 要训练 defect 模型:

python3 -m scripts.trainer defect

测试 要使用该模型对特定 Bug 进行分类,可以运行 python -m scripts.bug_classifier defect --bug-id ID_OF_A_BUG_FROM_BUGZILLA

在 Taskcluster(Mozilla 的 CI 平台)上训练

您可以在 CI 上运行模型训练任务。为此,只需在拉取请求描述中加入“在 Taskcluster 上训练:模型名称”。

示例

要在 Taskcluster 上训练 spambug 模型,您需要在拉取请求描述中添加以下内容,最好放在底部:

在 Taskcluster 上训练:spambug

在 Taskcluster 上训练模型时需要注意以下几点:

  • 目前仅支持 GitHub 拉取请求。
  • 每次向与拉取请求关联的分支推送时,训练任务都会重新运行。为避免不必要的训练和资源浪费,建议限制推送次数。或者,您可以暂时从拉取请求描述中移除“在 Taskcluster 上训练”关键词。
  • 目前,训练任务仅提取模型名称,不会考虑其他参数。

运行仓库挖掘脚本

注意:本节仅在您希望对仓库挖掘脚本进行修改时才需要。否则,您可以直接使用我们自动生成的提交数据。

  1. 克隆 https://hg.mozilla.org/mozilla-central/。
  2. 在克隆 mozilla-central 的目录中运行 ./mach vcs-setup
  3. 启用 infra/hgrc 中提到的扩展。例如,在 Linux 系统上,您可以将 firefoxtree 添加到 ~/.hgrc 文件的 extensions 部分,如下所示:
    firefoxtree = ~/.mozbuild/version-control-tools/hgext/firefoxtree
    
  4. 运行 repository.py 脚本,其唯一参数为 mozilla-central 仓库的路径。

注意:如果遇到问题,可能是您使用的 Mercurial 版本不受支持。请查看 infra/dockerfile.commit_retrieval 中的 Docker 定义,以了解我们在生产环境中使用的版本。

注意:该脚本运行时间较长(在我的笔记本电脑上超过 7 小时)。如果您只想测试简单的更改而无需实际挖掘数据,可以修改 repository.py 脚本以限制分析的提交数量。只需在调用 log 命令时添加 limit=1024 即可。

项目结构

  • bugbug/labels 包含手动收集的标签;
  • bugbug/db.py 是一个非常简单的 JSON 数据库实现;
  • bugbug/bugzilla.py 包含从 Bugzilla 问题跟踪系统获取问题的函数;
  • bugbug/repository.py 包含从 mozilla-central(Firefox)仓库中挖掘数据的函数;
  • bugbug/bug_features.py 包含从问题和提交数据中提取特征的函数;
  • bugbug/model.py 包含所有模型所继承的基类;
  • bugbug/models 包含具体模型的实现;
  • bugbug/nn.py 包含将 Keras 模型集成到 scikit-learn 流程中的实用函数;
  • bugbug/utils.py 包含各种实用函数;
  • bugbug/nlp 包含自然语言处理相关的实用函数;
  • bugbug/labels.py 包含标签处理的实用函数;
  • bugbug/bug_snapshot.py 包含用于回放问题历史记录的模块;
  • bugbug/github.py 包含从 GitHub 获取指定所有者/仓库下问题的函数。

将 bugbug 用于非 Mozilla 项目

Bugbug 目前专注于 Firefox、Bugzilla 和 GitHub 的 Mozilla 使用场景。不过,我们非常欢迎针对其他项目或问题跟踪系统的支持请求。

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架