SuperAPI AI 工具集

reproduce-bug

编程与开发

查看项目

更新于 10-15 15:14

技能介绍

用途

reproduce-bug 用于根据 Linear 工单复现 Bug,并产出一个失败的回归测试作为证据。它期望输入完整的工单上下文,包括标题、描述和评论。其目标不是修复问题,而是仅通过信号完成复现。

主要能力

该技能按九个步骤推进:

  1. 解析信号:从工单上下文中提取错误信息/堆栈跟踪、复现步骤、工作流 JSON、受影响区域(节点、执行引擎、编辑器、API、配置等),以及出问题的版本或最后可用版本。
  2. 路由测试策略:按受影响区域选择测试层与模式,例如节点操作用 Jest 单元测试配合 NodeTestHarness + nock,节点凭证用 jest-mock-extended,触发器 webhook 用 mock IHookFunctions 与 jest.mock GenericFunctions,二进制数据用 NodeTestHarness assertBinaryData,执行引擎用 Jest 集成测试配合 WorkflowRunner 与 DI 容器,CLI/API 用 setupTestServer + supertest,配置用 GlobalConfig + Container,编辑器 UI 用 Vitest 配合 Vue Test Utils 与 Pinia,E2E/画布用 Playwright 配合测试容器与 composables。
  3. 定位源码文件:搜索工单中提到的节点/服务/组件,查找 GenericFunctions 文件,检查同区域的既有测试文件,并查看相关文件的近期 git 历史。
  4. 追踪代码路径:沿调用链从入口点读到失败点,定位 Bug 显现的具体行,并记录周围的错误处理情况。
  5. 形成假设:以“当[输入/条件]时,代码做[错误的事],因为[根因]”的形式给出可测试假设,指明需修改的具体行并预测测试输出。
  6. 查找测试模式:检查受影响代码附近的 test/ 目录,识别其使用的 mock/设置模式并保持一致;若无测试,则寻找最接近的相似节点/服务测试作为模板。
  7. 编写失败测试:复用找到的模式,针对假设编写回归测试,包含引用工单 ID 的注释,断言正确行为(在当前代码上会失败),并附带一条正常路径测试以证明设置可用。
  8. 运行与评分:从包目录运行测试(如 cd packages/nodes-base && pnpm test <file>),并按置信度分类结果。
  9. 迭代或终止:UNCONFIRMED 时重读代码路径、更换测试方法或层级,最多尝试三次后宣布 UNCONFIRMED。

使用方式

调用时需提供完整的 Linear 工单上下文作为输入(对应 $ARGUMENTS)。技能会自动执行上述步骤,最终以 Reproduction Report 格式输出发现,包含:工单编号与标题、置信度、根因(1-2 句说明 Bug 机制)、位置(文件、行号、问题描述)、失败测试(文件路径与失败的测试名及描述)以及修复提示(伪代码或修复思路描述)。

置信度分类

  • CONFIRMED:测试稳定失败,且失败与假设一致,输出复现报告。
  • LIKELY:测试失败但失败模式略有不同,输出报告加说明。
  • UNCONFIRMED:无法触发失败,报告已尝试的内容。
  • SKIPPED:触发硬性终止条件,报告跳过原因。
  • ALREADY_FIXED:当前代码上不再复现,报告修复时间点。

适用场景

适用于需要在修复前定位与验证缺陷的开发与测试流程,尤其是 n8n 这类包含节点、执行引擎、编辑器 UI、CLI/API 等多层结构的项目。

限制与硬性终止条件

遇到以下情况立即停止:需要真实第三方 API 凭证;属于竞态条件或依赖时序;需要特定的云/企业基础设施;需要无法脚本化的手动 UI 交互。

重要约束

不要修复 Bug,只用失败测试复现;测试文件保留作为证据,除非被要求否则不提交;从包目录运行测试(如 pushd packages/nodes-base && pnpm test <file> && popd);始终重定向构建输出(pnpm build > build.log 2>&1);不要查看既有的修复 PR,目标仅凭信号复现。

关于收费、价格与平台信息,资料中暂未提供。