بنقرة واحدة
verify-workflow-debug
系统化根因调试——先建反馈循环再假设。当遇到 bug、测试失败、意外行为,或提到"调试""debug""为什么不工作""crash"
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
系统化根因调试——先建反馈循环再假设。当遇到 bug、测试失败、意外行为,或提到"调试""debug""为什么不工作""crash"
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
结构化脑暴——发散探索 + 收敛评估。当想法模糊、面临开放性问题或需要方案对比,或提到"脑暴""想法""方案对比""怎么办"
恢复保存的工作上下文。当新 session 需要继续之前的工作,或提到"恢复""restore""继续上次"
保存工作上下文。当需要保存当前工作状态供后续 session 恢复,或提到"保存""save""checkpoint""挂起"
架构决策记录(ADR)。当面临技术选型、架构决策、方案取舍需要记录,或提到"ADR""决策记录""为什么这样做"
发布或导出检查 → Go/No-Go → 归档。当审查通过后需要上线或交付最终产物,或提到"发布""上线""ship""Go/No-Go"
合并 PR → 等待 CI → 验证生产。当 PR 已创建需要合并到主分支并验证部署,或提到"合并""merge""PR""land"
| name | verify-workflow-debug |
| description | 系统化根因调试——先建反馈循环再假设。当遇到 bug、测试失败、意外行为,或提到"调试""debug""为什么不工作""crash" |
docs/bugs/<name>/01-root-cause.md(根因记录)build-quality-tdd/SKILL.mddocs/bugs/<name>/01-root-cause.md → build-workflow-execute(重新 build)或 verify-workflow-review(重新 review)在尝试任何修复之前:
读错误信息仔细 — 不跳过错误。读完整堆栈。记下行号、文件路径、错误码。
稳定复现 — 能可靠触发吗?准确步骤是?每次必现吗?不可复现 → 收集更多数据,不要猜。
构建最小复现 — 去掉无关代码/配置直到只剩 bug 本身。简化输入到最小触发用例。最小复现让根因变得明显,防止修复症状而不是原因。
查最近变更 — git diff、最近提交、新依赖、配置变更、环境差异。
多组件系统加诊断埋点 — 当系统跨多个组件(CI → build → signing,API → service → DB)时:
向上追溯数据流 — 错误在调用栈深处时:从最终错误点向上追溯。错误值从哪来?谁带着错误值调用了这里?不断追溯直到找到源头。在源头修复,不在症状处修。
在确定模式后再修复:
build-quality-tdd/SKILL.md 写失败测试。先有测试再修复。没有复现测试的修复 = 没有修复。连续 3 次修复失败 = 架构问题:
迹象:
STOP 并质疑基础:
与人类讨论后再尝试更多修复。这不是假设失败——这是错误的架构。
测试在代码变更后失败:
├── 代码被测试覆盖了?
│ └── YES → 测试还是代码错了?
│ ├── 测试过时 → 更新测试
│ └── 代码有 bug → 修复代码
├── 改了不相关的代码?
│ └── YES → 副作用 → 检查共享状态、import、全局变量
└── 测试本来就 flaky?
└── 检查时序问题、顺序依赖、外部依赖
构建失败:
├── 类型错误 → 读错误信息,检查对应位置类型
├── Import 错误 → 模块存在?exports 匹配?路径正确?
├── 配置错误 → 检查构建配置文件的语法/schema
├── 依赖错误 → 检查 package.json,重装依赖
└── 环境错误 → Node 版本、OS 兼容性
运行时错误:
├── TypeError: Cannot read property 'x' of undefined
│ └── 某个值不该 null/undefined → 向上追溯数据流
├── 网络错误 / CORS
│ └── 检查 URL、headers、服务端 CORS 配置
├── 渲染错误 / 白屏
│ └── 检查 error boundary、console、组件树
└── 意外行为(无错误)
└── 关键路径加日志,验证每一步数据
时间压力下使用安全降级,不崩溃:
// 安全默认 + 警告(不崩溃)
function getConfig(key: string): string {
const value = process.env[key];
if (!value) {
console.warn(`Missing config: ${key}, using default`);
return DEFAULTS[key] ?? '';
}
return value;
}
// 优雅降级(不展示破碎功能)
function renderChart(data: ChartData[]) {
if (data.length === 0) {
return <EmptyState message="暂无数据" />;
}
try {
return <Chart data={data} />;
} catch (error) {
console.error('Chart render failed:', error);
return <ErrorBoundaryFallback />;
}
}
Phase 1 读错误信息 + 稳定复现 + 最小复现 → Phase 2 找工作示例对比差异 → Phase 3 假设"N+1 查询是根因" → Phase 4 写复现测试(RED)→ 修复 → 测试通过(GREEN)。根因可追溯,修复可验证。
"试试改这个"、"再改那个"、"改三个地方一起跑"。没有读错误信息、没有复现步骤、没有单一假设、没有复现测试。修了症状不知道根因,同类 bug 在其他位置复发。
templates/bug/01-root-cause.md,落盘到 docs/bugs/<name>/01-root-cause.mdtemplates/bug/02-fix-plan.md,落盘到 docs/bugs/<name>/02-fix-plan.md根因记录必须包含:Status Summary、症状、影响范围、时间线、复现步骤、复现证据、调查过程、根因、非根因排除、修复方向、Done When。
修复计划必须包含:Status Summary、修复目标、最小改动范围、复现测试、修复步骤、验证计划、回归风险、Follow-up Actions、Done When。
build-quality-tdd/SKILL.md输出或记录必须包含:
| 说辞 | 现实 | 后果 |
|---|---|---|
| "快速修复,之后调查" | 没有之后。先在根因,再修复。 | 修症状不修根因,同类 bug 在 3 个不同位置反复出现,累计修复时间 10x 于单次根因调查。 |
| "先改改看行不行" | 猜。先确定根因。 | 猜测式调试平均浪费 45 分钟(行业数据),系统化调试平均 15 分钟。每次猜错都在掩盖真实线索。 |
| "改多个地方一次跑" | 无法隔离有效变更。 | 两个变更互相干扰,通过纯属巧合。下一次只改其中一个时故障复现,且无法判断是哪个变更"真正"修复了问题。 |
| "跳过测试,手动验证" | 手动测试不能证明边界情况。 | 手动验证遗漏的边界条件(并发、空值、超时)以生产偶发故障形式出现,排查需 2-8 小时。 |
| "紧急情况没时间走流程" | 系统化调试比猜更快。 | 紧急中猜测式修复引入新 bug 的概率 ~40%,二次事故的停机损失 > 系统化调试多花的 10 分钟。 |
| "再试一次就好"(第 3+ 次) | 3 次失败 = 架构问题。质疑,不继续猜。 | 第 4、5、6 次尝试不会比前 3 次更好。每次失败都引入更多不确定性,最终不得不全部回退,浪费时间且代码更乱。 |
违反字面规则就是违反精神。 没有灰色地带。
| 失败场景 | 处理方式 |
|---|---|
| 无法复现 bug | 收集更多数据(日志、监控、用户上下文),不要猜测。不可复现 = 不能确定修复 |
| 修复后测试仍失败 | STOP。数一下尝试次数。< 3 次 → 回 Phase 1 重新分析;≥ 3 次 → 进入 Phase 4.5 架构质疑门 |
| 修复引入回归 | 回退修复,重新分析根本原因和副作用 |
| 找不到工作参考示例 | 扩展搜索范围到同技术栈的其他项目,或寻求人类指导 |
| 复现测试本身有缺陷 | 修复测试,确保 RED→GREEN 循环有效。测试没错之前不要修代码 |
全部意味着:STOP。回到 Phase 1。
注意来自人类伙伴的信号:
全部意味着:STOP。回到 Phase 1。
docs/bugs/<name>/01-root-cause.mddocs/bugs/<name>/02-fix-plan.md