调试修复

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

调试修复下游执行 skill(I12)——先造出一条能变红的紧密反馈循环,再定位根因,最后最小化修复。当用户说「调试」「debug 一下」「查一下这个 bug」「帮我看看这个报错」,或报告程序报错/崩溃/抛异常/跑不通/结果不对/数据错乱/偶发失败/线上才复现/变慢了/接口超时时激活;也在 tri-intent 快照 §三 下游路由建议指向本 skill 时激活。目标代码尚不存在的新功能交 tri-coding,只看不改的代码审查交 tri-review,只求解释不求修复交 tri-ask。支持独立安装,含上游依赖检测三态逻辑(快照模式/引导安装/降级模式)。

一句话选型结论

按资料字段整理

调试修复是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_989eb8f0/tri-fix
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_989eb8f0仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791664121
正文体量36.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
调试修复当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

36.9 KB
模型实际读到的说明书原文,来自技能仓库

调试修复(下游路由 · I12)

> 本 skill 是 tri-intent 的下游执行 skill,依据快照 snapshot.md §三 结构化结论自主管理完整调试工作流。
> 用户心智:把 AI 当诊断专家,期望精准定位根因并彻底修复,而非打补丁。

强制执行契约(Execution Contract · 最高优先级)

  1. 版本检查前置硬门(第零步):MUST 先通过 §版本检查与更新机制(连接 skillhub 校验版本,非最新版 MUST 自动执行 skillhub upgrade <slug> 升级;升级成功后继续,升级通道不可用则标注 D 态降级继续)——此为执行流程第零步,优先于后续所有步骤。版本检查完成前 NEVER 进入后续步骤。本条目优先级高于所有其他强制前置条目。

  2. 强制前置:收到 tri-intent 快照且 下游路由建议 指向本 skill,MUST 先读取快照 §三,再按调试工作流串行推进。独立使用时(未经 tri-intent 路由)MUST 先走 §上游依赖检测 判定模式。

  3. 红循环铁律(本 skill 的第一性规则):没有能变红的反馈循环,就没有假设阶段。 「红」= 一条你已至少真实运行过一次、且在本 bug 上失败的命令。在这条命令存在之前,MUST 停留在阶段 1;此时唯一允许的动作是构造循环,代码阅读只服务于构造循环,NEVER 由代码阅读直接跳到根因结论或修复补丁。
  4. 逃生舱(无法建立循环时的唯一出口):若穷尽 §阶段 1 构造方式仍无法让循环变红,MUST 停下并向用户明示:① 已尝试过的构造方式清单;② 索取三者之一——(a) 能复现问题的环境访问权限、(b) 抓取产物(HAR / 日志转储 / core dump / 带时间戳录屏)、(c) 添加临时生产插桩的许可。在拿到其一之前 MUST 停在阶段 1,NEVER 以「先猜一个方向试试」推进到阶段 3。
  5. 双审批门 + 执行前确认 + 任务清单硬性规则:I12 属设计类,MUST 严格串行经过两道落盘审批门 + 执行前确认 + 任务清单执行;修复代码只在门③确认通过后随 fix-tasks.md 执行产出:
    - 门①(故障确认):先产出 bug-report.md(故障报告),含能变红的反馈循环 + 最小化复现用例,向用户结构化复述供审计;通过后方可进入门②。
    - 门②(诊断审计):据已审批的 bug-report.md 产出 diagnosis.md(根因诊断报告),含 3-5 个可证伪假设 + 因果确认证据,再交用户审计;通过后方可产出 fix-tasks.md。
    - 门③(执行前确认):门②通过后产出 fix-tasks.md(原子化修复任务+回归测试清单),进入执行前 MUST 主动询问用户两件事:① 是否需要调用其它 skill 协同(如 tri-review 代码审查、tri-coding 技术栈加载等);② 是否有需要补充的约束/素材。用户确认无补充 → 进入执行;用户提出补充 → 据反馈更新 fix-tasks.md(涉及诊断缺陷则回退门②更新 diagnosis.md)后再次确认,通过后方可执行,禁止跳门抢跑。
    - 任务执行:门③确认通过后,按 fix-tasks.md 清单逐项执行(含回归测试,测试不过回炉 fix-tasks.md),执行完成产出 fix-report.md(修复报告)。复选框状态切换规则(核心机制):fix-tasks.md 中每个原子任务和测试条目均含「完成状态」复选框字段,默认 `- [ ]`(未完成);执行完成 → MUST 切换为 `- [x]`;回炉重做 → MUST 重置回 `- [ ]`。复选框状态与「状态明细」字段同步更新。
    - 完整链路:bug-report.md → 审计① 通过 → diagnosis.md → 审计② 通过 → fix-tasks.md → 执行前确认③ 通过 → 执行 → fix-report.md。任一门未通过则携反馈回炉,不得跳门或抢跑修复。
  6. 最小化原则(门禁规则):进入执行阶段前 MUST 校验变更范围是否最小化——变更仅落在根因处,重构与优化留给后续独立任务。若执行中发现需扩大变更范围(如关联缺陷、架构问题),MUST 向用户说明并确认后追加到 fix-tasks.md,NEVER 默默扩大范围。
  7. 职责边界:本 skill 负责「读取快照 → 建立反馈循环 → 复现最小化 → 根因诊断 → 修复方案 → 修复执行 → 回归验证 → 清理复盘」全链路。意图识别(由 tri-intent)、新功能编码开发(由 tri-coding)、代码审查(由 tri-review)不属于本 skill。
  8. 自检:作答前用一句话声明「本次意图=I12,已读取快照,当前方法论阶段=<1-6>,红循环状态=<已变红/未建立/逃生舱待补材料>」,若与上述规则冲突则停止并纠正。阶段号一律引用 §系统化调试方法论 的 1–6 编号,全文不存在第二套阶段编号。

触发时机

激活分支(任一命中即进入本工作流;非快照来源者先走 §上游依赖检测):

触发分支 典型信号 阶段调整
快照路由 tri-intent 快照 §三 下游路由建议 指向本 skill 且 intent.L2 = I12 标准链路
用户口语触发 「调试」「debug 一下」「查一下这个 bug」「帮我看看这个报错」「定位一下原因」「为什么会这样」(伴随具体故障) 标准链路
故障症状触发 报错 / 崩溃 / 抛异常 / 白屏 / 跑不通 / 结果不对 / 数据错乱 / 死锁 / 内存泄漏 / 测试挂了 标准链路
性能回归触发 「变慢了」「超时」「以前很快现在很卡」「接口 RT 涨了」「CPU 打满」 阶段 4 走性能分支(基线测量 + 二分,不打日志)
偶发/非确定触发 「偶尔失败」「重跑就好了」「flaky」「线上才复现」「压测下才出」 阶段 1 目标改为提高复现率而非干净复现
无法本地复现 只有生产日志 / 用户截图 / HAR / 崩溃堆栈,本地跑不出来 阶段 1 先评估逃生舱(契约 §3)

意图编码范围:I12 调试修复。

不由本 skill 处理(命中以下信号 MUST 指向对应 skill,NEVER 在本工作流内代办):

信号 归属
「加个功能」「实现一个 X」——目标代码尚不存在,无可复现故障 tri-coding(I11)
「帮我 review 这段代码」——只看不改,无具体故障现象 tri-review
「这个架构该怎么改」「先出个方案」——无可复现故障,求规划 tri-plan(I13)
「这个报错是什么意思」——只求解释,不求定位与修复 tri-ask(I01–I05)

上游依赖检测(独立使用时)

> 本 skill 可独立安装。激活时 MUST 检测上游 tri-intent skill 是否可用,据检测结果选择执行模式:

模式 触发条件 行为
A · 快照模式 按 tri-intent §快照定位契约 定位到可用快照(.tribro/LATEST.md 指针 → 会话内最新 → 全局最新且 ≤30 分钟) 读取快照 §三,按工作流推进(标准模式)
A0 · 待识别 有 tri-intent/ 但无可用快照(或快照已过期/损坏) MUST 提示用户「本次请求尚未经意图识别」,引导先经 tri-intent 产出快照;NEVER 按空上下文静默执行
B · 引导安装 以上均不满足 MUST 向用户提示依赖并引导安装
C · 降级模式 用户明确拒绝安装 从用户请求自构造等价输入,声明降级模式

模式 B 提示语:
> 本 skill 依赖 tri-intent 进行意图识别与输入校验。当前未检测到 tri-intent。
> 请安装:skillhub install tri-intent --dir &lt;目标目录&gt;
> 安装后重新发起请求,即可获得完整的意图识别→澄清→执行工作流。

模式 C 降级声明:
> 用户明确拒绝安装后,从用户请求自构造等价输入(意图判定 + 任务要点 + 交付预期),声明「当前为降级模式,意图识别精度低于完整工作流」。

输入契约

读取 .tribro/snapshots/&lt;命名&gt;.md 的 §三 结构化结论区:

字段 用途
intent.L2_核心意图 必须为 I12,否则不应激活本 skill
dimensions.D1_任务领域 决定技术栈语境(应为「编程技术」)
dimensions.D2_输入形态 是否有报错日志/堆栈跟踪/复现步骤(关键输入)
dimensions.D4_输出期望 应为「可执行代码」或「修复补丁」
任务要点 故障现象 + 复现条件 + 期望恢复正常
交付预期 用户期望的修复结果

> 若快照 澄清门状态 = 待澄清,不应激活本 skill——先由 tri-intent 的 clarify-gate 完成澄清。

> 模式 C 降级模式输入:当用户拒绝安装 tri-intent 时(见 §上游依赖检测 模式 C),从用户原始请求自构造等价输入——意图判定(默认 I12)+ 任务要点(从请求提取故障现象/复现条件/期望恢复)+ 交付预期(从请求推断修复结果),声明降级模式后按工作流推进。

职责边界

  • 本 skill 负责:依据快照结论,自主管理调试全链路(故障报告→根因诊断→修复任务→执行→修复报告),产出精准修复及配套链路文档
  • 不负责:意图识别(由 tri-intent)、新功能编码开发(由 tri-coding 的 I11)、代码审查(由 tri-review)、规划方案(由 tri-plan)
  • 关键边界:本 skill「先诊断后修复」——诊断归 bug-report.md/diagnosis.md,修复归 fix-tasks.md/执行阶段;诊断证据链完整之后才动代码
  • 与 tri-coding 的协作:调试过程中可加载 tri-coding 的技术栈 skill(tri-coding/tech-skills/)辅助定位技术栈特定的问题模式,加载方式参考 tri-coding 的 registry 驱动机制
  • 不触发场景(Not-Trigger):本 skill 不接手「目标代码尚不存在的新功能开发」(属 tri-coding 的 I11,本 skill 只修复既有缺陷);不接手「只审查不改的代码审查」(属 tri-review);不接手「只求解释不求修复的咨询」(属 tri-ask);不接手「识别用户意图」(由 tri-intent / 自身快照驱动)。

系统化调试方法论(核心能力 · 可扩展)

> 调试方法论是 tri-fix 区别于 tri-coding 的核心差异化能力。融合 6 阶段反馈循环(来自 diagnosing-bugs)与 4 阶段根因验证(来自 4phase-systematic-debug),形成「建立信号 → 收缩范围 → 生成假设 → 验证根因 → 根治修复 → 清理复盘」的完整方法论。阶段 1–6 是本 skill 唯一的阶段编号系统,工作流章节只引用它,不另起编号。

核心理念

> 不要猜测,要假设。不要乱试,要验证。不要修补,要根治。

传统调试最大的问题在于发现问题后立刻跳到「修复」阶段——基于第一个猜测直接改代码。这种模式在复杂系统中成功率极低,往往引入新 Bug 或只修复了表象。本方法论强制在动手修复前完成反馈循环建立和根因验证。

阶段 1:建立反馈循环

> 这就是本技能的全部,其余都是机械操作。 有了一条能让_这个_ bug 变红的紧密信号,二分、假设验证、插桩都只是在消耗这条信号;没有它,盯着代码看再久也无济于事。在这里投入不成比例的精力——要激进,要有创造力,绝不放弃。

构造反馈循环的若干方式——大致按此顺序尝试:

  1. 失败的测试——在任何能触达 bug 的接缝处编写:单元、集成、e2e
  2. Curl / HTTP 脚本——对着运行中的开发服务器发请求
  3. CLI 调用——用固定输入运行,stdout 与已知良好快照做 diff
  4. 无头浏览器脚本(Playwright/Puppeteer)——驱动 UI,对 DOM/控制台/网络断言
  5. 回放抓取的 trace——把真实请求/载荷/事件日志存盘,在隔离环境回放穿越代码路径
  6. 一次性测试支架——启动系统最小子集(一个服务,依赖被 mock),用一次函数调用驱动 bug 代码路径
  7. 性质/模糊测试循环——「偶尔输出错误」类 bug 跑 1000 个随机输入,观察失败模式
  8. 二分支架——bug 出现在两个已知状态(commit/数据集/版本)之间时,把「启动到状态 X、检查、重复」自动化,即可 git bisect run
  9. 差分循环——同一输入分别跑新旧版本(或两套配置),对输出做 diff
  10. HITL 脚本——最后手段。必须由人点击时,用结构化脚本驱动_他们_,捕获输出反馈回来

收紧循环:把循环当作一个产品来对待。能更快吗(缓存初始化、跳过无关启动、收窄测试范围)?信号更尖锐吗(断言具体症状,而非「没崩溃」)?更确定吗(固定时间、给随机数种子、隔离文件系统、冻结网络)?——一个 30 秒又时好时坏的循环几乎等于没有循环;一个 2 秒且确定性的循环才是调试超能力。

非确定性 bug:目标不是干净利落地复现,而是更高的复现率。把触发条件循环 100 次、并行化、加压、收窄时间窗、注入 sleep。50% 概率偶发的 bug 可调试;1% 的不可调试——持续提高复现率直到可调试为止。

当确实无法建立循环时:按契约 §3 走逃生舱——列出已尝试的构造方式,向用户索取环境访问权限 / 抓取产物 / 生产插桩许可三者之一,在拿到之前停在本阶段。

完成标准——你能说出一条命令(脚本路径、测试调用、curl),你已至少真实跑过一次(贴出调用与输出),并且它:

  • [ ] 能变红 —— 驱动真正的 bug 代码路径,断言用户描述的确切症状;修好后变绿。判据是「能抓住这个特定的 bug」,而不是「运行不报错」
  • [ ] 确定性 —— 每次运行结论一致(偶发 bug:已固定到高复现率)
  • [ ] 快速 —— 秒级,而不是分钟级
  • [ ] agent 可运行 —— 可无人值守运行;仅 HITL 脚本方式允许人介入

阶段 2:复现 + 最小化

跑循环,看着它变红——bug 出现了。

确认:
- [ ] 循环产生的失败模式正是用户所描述的——不是恰好邻近的另一个失败。错的 bug = 错的修复
- [ ] 失败在多次运行中可复现(或复现率高到足以调试)
- [ ] 已捕获确切症状(错误信息、错误输出、缓慢的耗时),供后续阶段验证修复确实解决了它

最小化:把复现收缩到仍然会变红的最小场景。一次单独切掉一种输入、调用方、配置、数据或步骤,每次切完都重跑循环——只保留对失败起支撑作用的部分。最小复现能缩小阶段 3 的假设空间,并成为阶段 5 的干净回归测试。

边界测绘:

条件 有 Bug 无 Bug
输入类型=A ✅
输入类型=B ✅
并发=1 ✅
并发=10 ✅

完成标准:每一个剩余元素都起支撑作用——移除其中任何一个都会让循环变绿。

阶段 3:假设生成

> 单一假设生成会把人锚定在第一个看似合理的想法上。强制 3-5 个排序假设防止锚定。

假设生成前的证据增强(三式,按成本从低到高,先做再生成假设——假设质量取决于喂进去的证据):

  1. 近期变更扫描:git diff/最近提交/新依赖/配置变更/环境差异——「什么变了」往往是最高性价比的第一批假设来源;bug 在变更点附近的比例远超随机分布。
  2. 多组件断裂点埋点:系统有多个组件时(CI → 构建 → 签名,API → 服务 → DB),先在每个组件边界记录进入/离开的数据与环境传递,执行一次收集证据、定位断裂层,再针对该层生成假设——先定位断裂层,再猜具体原因,NEVER 跨层盲猜。
  3. 正常示例对比(模式分析):在同一代码库找到处理同类问题的正常代码,逐项列 出问题代码与它的差异(无论多小,NEVER 预判「这不可能有影响」);实现某个模式出问题时完整阅读参考实现,理解隐含依赖后再对比。

每个假设必须可证伪,说明它会做出的预测:

> 格式:「若 \<X\> 是原因,则 \<改变 Y\> 会让 bug 消失 / \<改变 Z\> 会让它更严重。」

说不出预测的,那是感觉不是假设——丢弃它,或把它打磨到能说出预测为止。

优先级排序:按 可能性(1-5) / 验证成本(1-5) 排序,优先测试高可能性 + 低验证成本的假设。

展示给用户:排序后的清单展示给用户,他们往往有领域知识能瞬间重排(「我们刚对 #3 部署了一次改动」)或知道哪些已被排除。低成本检查点,巨大省时利器。不阻塞——用户不在就按排序继续。

完成标准:
- [ ] 至少生成 3 个独立、可证伪的假设(不超过 7 个)
- [ ] 每个假设有对应的实验设计与预测句
- [ ] 假设已按可能性/成本排序
- [ ] 排序清单已展示给用户(非阻塞)

阶段 4:插桩验证

> 每个探针都必须对应阶段 3 的某个具体预测。一次只改一个变量。

工具优先级:
1. 调试器/REPL 检查——一个断点胜过十条日志
2. 定向日志——打在能区分假设的边界处
3. 日志范围限定在能区分假设的边界,全局日志再 grep 属于反模式(见 §调试反模式)

调试日志标签:每条调试日志打唯一前缀标签 [DEBUG-a4f2],最终清理就变成一次 grep。有标签的日志会被清掉,没标签的会残留。

假设状态标记:
- ✅ CONFIRMED:实验结果与「假设正确」的预期一致 → 进入因果确认
- ❌ REFUTED:实验结果不一致 → 该假设被证伪,取下一个假设
- ⚠️ INCONCLUSIVE:无法判别 → 重新设计实验

因果确认测试(关键步骤,不可跳过):
1. 去掉疑似根因 X:验证 Bug 消失 ✓/✗
2. 加回 X:验证 Bug 重现 ✓/✗
3. 因果关系确认:X 是根因 ✓/✗

性能分支:对性能回归,日志通常是错的。改用基线测量(计时支架、performance.now()、profiler、查询计划)+ 二分。先测量,后修复。

迭代规则:
- 假设被证伪 → 回到假设列表取下一个
- 假设被证实 → 因果确认 → 进入修复
- 所有假设被证伪 → 回到阶段 3 重新生成假设
- 最多 3 轮:全部证伪且未能生成新假设 → 停止并质疑架构——每次修复都暴露新的共享状态/耦合/别处新症状、或修复需要大规模重构才能实现,说明是架构缺陷信号而非假设失败;NEVER 未做架构讨论就盲试第 4 次,此时把架构问题写入 fix-report.md 复盘并建议 tri-review 审查(升级求助与架构质疑并行,不互斥)

阶段 5:修复 + 回归测试

> 先写回归测试再修——但仅当存在正确的接缝时。

正确的接缝:测试在调用点真实复现真正的 bug 模式。如果唯一可用的接缝太浅(bug 需要多调用方却只有单调用方测试;单元测试无法复现触发 bug 的调用链),在那里的回归测试只会给人虚假的信心。如果没有正确的接缝,这本身就是发现——如实记录「无可用接缝」,交阶段 6 作为架构改进输入。

修复流程:
1. 把最小化复现转成该接缝处的一条失败测试
2. 看着它失败
3. 应用修复——变更仅落在根因处
4. 看着它通过
5. 用阶段 1 的反馈循环对原始(未最小化)场景再跑一遍

回归门禁(五项,阶段 6 直接引用本清单,不再复述):
- [ ] 原始复现不再复现(重跑阶段 1 的循环)
- [ ] 回归测试通过(或已记录「无可用接缝」)
- [ ] 全量单元测试通过
- [ ] 全量集成测试通过(如有)
- [ ] Lint / 类型检查通过

阶段 6:清理 + 事后复盘

宣布完成前必须满足:

  • [ ] §阶段 5 回归门禁五项全过
  • [ ] 所有 [DEBUG-...] 插桩已移除(用前缀 grep 验证,贴出结果)
  • [ ] 一次性原型已删除(或移到明确标注的调试位置)
  • [ ] 最终证明正确的假设已写入 commit / PR message——让下一位调试者也能学到

事后复盘:问「什么本可以避免这个 bug?」若答案涉及架构改动(没有好的测试接缝、调用方纠缠不清、隐藏的耦合),把具体情况交接给 tri-review 或列为架构改进建议。在修复落地之后再给建议——此刻你掌握的信息远多于起初。

调试反模式(对照识别)

> 每条给出特征(怎么发现自己正在犯)与替代做法(改做什么)。执行中命中任一特征,MUST 回到对应阶段。

反模式 特征 替代做法
直觉修复 还没有一条能变红的命令就开始改代码;理由是「我大概知道在哪」 停在阶段 1,先造出会变红的命令(契约 §2)
单假设锚定 只有 1 个「一定是它」的猜测,直接去验证 阶段 3 强制 3–5 个可证伪假设并排序
霰弹插桩 大面积打日志再 grep,探针与预测无对应关系 每个探针对应一条预测,一次只改一个变量
症状修复 改到「报错不出现了」就收工,未做因果确认 阶段 4 三步因果确认:去掉→消失→加回→重现
错的 bug 循环变红了,但红的是邻近的另一个失败 阶段 2 逐字比对失败模式与用户描述
顺手重构 修 bug 时一并整理代码/改命名/优化性能 变更仅落在根因处;扩大范围先经用户确认追加进 fix-tasks.md
虚假回归 在太浅的接缝上写测试,测试绿但 bug 仍可发生 如实记录「无可用接缝」,交阶段 6 架构建议
插桩残留 修复合入,[DEBUG- 标签留在生产代码里 阶段 6 前缀 grep 清零并贴出结果

可扩展性

> 以下扩展点均为表格追加一行,不改工作流、审批门与契约。

扩展点 零改动扩展方式
新增反馈循环构造方式 在 §阶段 1 构造方式清单追加一条(含适用场景与优先级位置)
新增技术栈特定故障模式 由 tri-coding tech-skills/ registry 加载,本 skill 不内置技术栈知识
新增回归门禁项 在 §阶段 5 回归门禁清单追加一行;templates/fix-tasks.md 同步加一条复选框
新增调试反模式 在 §调试反模式表追加一行(特征 + 替代做法)
新增质量标准 在 §质量标准表追加一行(维度 / 标准 / 验证方式),测试用例 H 组同步追加

版本检查与更新机制(强制技术约束 · 硬红线)

> 家族级强制技术约束,优先级与「强制执行契约」同级。skill 任一执行入口启动后的第零步,先于核心执行阶段。
> 细则唯一真源:tri-forge/references/version-check-spec.md。可执行实现(single source of truth for logic):本 skill 自带 scripts/check_update.py(与 tri-intent 同源一致,按 --slug 自动适配)。
> 铁律:版本比较、升级执行、回退、四态判定 MUST 由脚本完成;prompt 层 ONLY「调用脚本 + 解析其 JSON 输出 + 按 state 处置」,NEVER 在 prompt 内联推断版本或拼接升级命令。修订规则只改真源一处,脚本与真源保持同步。

执行方式(MUST)

  1. 任一执行入口启动后、核心执行前,运行脚本并取 JSON:
    bash python scripts/check_update.py --slug tri-fix --json
    - 节流:结果持久化缓存(默认 1440 分钟 / 24h 仅校验一次),--force 强制重查,--dry-run 只判定不真升级。
    - 脚本自动定位 skill 目录(默认脚本上级目录),--slug 显式指定自身 slug(如上)。
  2. 解析 JSON 的 state 字段,按态处置:
    - A 校验通过 / B 离线降级 / C 通道降级 / D 升级降级 → 一律放行,进入后续阶段;并据 warnings / notes / actions 在交付物或日志标注对应口径(如「版本校验未完成(离线)」「版本陈旧·自动升级失败」)。
    - BLOCK → 绝对禁止执行,按 block_code(P2/P3/P4)输出结构化恢复指引(手动命令见 actions 字段)。
  3. 退出码语义(供 shell 编排):0=A 放行;10=B;11=C;12=D;20=阻断。判定规则:&lt;20 放行,&gt;=20 阻断。脚本自身异常时兜底降级放行(退出码 11),NEVER 因版本门自身故障导致 skill 无法启动。

执行要点

  1. 端点取自配置:API 主机 MUST 读自 ~/.skillhub/metadata.json,NEVER 硬编码域名。营销官网 skillhub.cn 与 API 主机 api.skillhub.cn 是两个站点——官网对任意路径都返回 200 + HTML 兜底页,绝不可作校验端点。读不到配置即判通道不可用。
  2. 校验请求:GET {api_host}/api/v1/skills/{slug},超时 ≤ 5s,失败重试 1 次,会话内仅校验一次。
  3. 最新版取值:latestVersion.version,缺失时回退 skill.tags.latest。平台不提供 min_compatible / deprecated / checksum_sha256 / signature,NEVER 依赖这些字段。
  4. 响应有效性(三条件同时成立):HTTP 200 且 Content-Type 含 application/json 且 能解析出版本字段。仅看状态码会被 SPA 兜底页击穿。
  5. 版本比较:按 SemVer 逐段整数比较,NEVER 字符串比较。
  6. 四态判定:
    - A 校验通过(响应有效且 current &gt;= latest)→ 放行。
    - B 离线降级(网络不可达)→ 标注「版本校验未完成(离线)」后以当前版本继续。
    - C 通道降级(可达但响应无效 / 404 / 405 / 读不到配置)→ 标注「版本校验未完成(通道不可用)」+ 输出通道异常告警后继续。
    - D 升级降级(陈旧且已真实尝试自动升级但未完成)→ 标注「版本陈旧·自动升级失败」+ 输出手动升级指引后继续。
    - 四态 NEVER 用于绕过「已检出陈旧却不尝试升级」——MUST 先真实执行一次自动升级,失败方可落 D 态。
  7. 更新通道(自动执行):检出陈旧 MUST 自动执行 skillhub upgrade &lt;slug&gt; → skillhub verify &lt;slug&gt;,升级前备份、签名明确不一致则回滚。CLI 不在 PATH 时回退 python ~/.skillhub/skills_store_cli.py upgrade &lt;slug&gt;;CLI 缺失或升级失败 → 落 D 态降级继续,NEVER 阻断。以 junction 指向源码树的 source: local skill 跳过自动更新,改为提示维护者手动同步。命令细则、CLI 定位顺序与已知陷阱见真源。
  8. 阻断条件 P1–P4 与四处版本同步点见真源;发布前 MUST 通过 python tri-forge/scripts/sync_registry.py --check。

调试工作流(设计类链路)

> 执行顺序固定:§版本检查与更新机制(第零步)→ 上游依赖检测 → 读取快照 §三 → 核心执行。版本检查未通过前 NEVER 进入以下任一执行步骤。

tri-intent 快照 §三 (I12)
        │
        ▼
  bug-report.md(故障报告)
  · 阶段1:建立反馈循环(构造能变红的紧密信号)
  · 阶段2:复现+最小化(收缩到最小场景+边界测绘)
        │
     门①·故障确认 ──不通过──→ 携反馈更新 bug-report.md → 再门①
        │通过
        ▼
    diagnosis.md(根因诊断报告)
  · 阶段3:假设生成(3-5个可证伪假设+排序)
  · 阶段4:插桩验证(一次一变量+因果确认)
        │
     门②·诊断审计 ──不通过──→ 携反馈更新 diagnosis.md → 再门②
        │通过                       (涉及故障信息缺失则回退门①)
        ▼
    fix-tasks.md(修复任务+回归测试清单)
  · 阶段5前半:修复方案+回归测试计划
        │
     门③·执行前确认 ──有补充──→ 更新 fix-tasks.md(诊断缺陷回退门②)→ 再门③
        │无补充
        ▼
    执行(修复+回归测试)
  · 阶段5后半:应用修复+回归门禁
        │              测试不过 ──→ 回炉 fix-tasks.md → 再执行
        ▼
    fix-report.md(修复报告)
  · 阶段6:清理插桩+事后复盘+根因归档

> 阶段 ↔ 产物 ↔ 审批门 ↔ 模板 的对应关系见 §交付产物机制 §三产物清单(唯一事实源)。门的通过/不通过规则与复选框切换机制见 §强制执行契约;各阶段详细内容见 §系统化调试方法论。

执行节点补充规则(对应方法论阶段 5 后半)

> 契约 §4 已定义复选框切换与回炉规则,此处只补充调试执行策略。

维度 执行策略
修复策略 变更仅落在根因处 → 不越界 → 重构与优化留给后续独立任务
回归验证 先写回归测试再修 → MRC 变绿 → 回归门禁五项全过 → 边界逐项验证
举一反三 指出同类隐患 → 建议防御(类型/断言/日志/测试)→ 标记架构改进
插桩清理 所有 [DEBUG-xxx] 标签 grep 清除 → 一次性原型删除

> 技术栈规范约束力:若在 bug-report.md 阶段加载了 tri-coding 的技术栈 skill,其编码规范条目在修复执行阶段具有约束力。

交付产物机制

一、文件命名规范

沿用 tri-intent 快照命名:&lt;问题类型&gt;_&lt;日期&gt;_&lt;时间&gt;_&lt;会话ID&gt;

  • 示例:I12_20250211_143022_6a5c037d

二、存放目录

.tribro/                    # 若不存在则先创建
├── snapshots/              tri-intent 产出(已存在)
│   └── &lt;命名&gt;.md
└── fixes/                  tri-fix 链路文档
    └── &lt;命名&gt;/
        ├── bug-report.md     # 故障报告(门①载体)
        ├── diagnosis.md      # 根因诊断报告(门②载体)
        ├── fix-tasks.md      # 修复任务+回归测试清单(门③载体+执行蓝图)
        └── fix-report.md     # 修复报告(最终交付物)

三、产物清单(阶段 ↔ 产物 ↔ 门 ↔ 模板 · 唯一事实源)

> 本表是「方法论阶段—链路节点—产物—审批门—模板」对应关系的唯一事实源,§调试工作流 与 §系统化调试方法论 均引用本表,不再另立映射表。

方法论阶段 链路节点 产物 文件名 内容 审批门 模板
1 + 2 故障确认 故障报告 bug-report.md 故障现象 + 能变红的反馈循环 + 最小化复现 + 边界测绘 门① templates/bug-report.md
3 + 4 根因诊断 根因诊断报告 diagnosis.md 3–5 个可证伪假设 + 排序 + 实验设计 + 验证结果 + 因果确认(故障信息缺失则回退门①) 门② templates/diagnosis.md
5 前半 修复计划 修复任务清单 fix-tasks.md 原子化修复任务 + 回归测试清单(先写测试再修)+ 依赖图 门③ templates/fix-tasks.md
5 后半 修复执行 修复补丁 —(落用户工作区) 按 fix-tasks.md 逐项修复 + 回归门禁五项 + 复选框状态切换 — —
6 清理复盘 修复报告 fix-report.md 修复记录 + 回归结果 + 插桩清理确认 + 事后复盘 + 遗留架构建议 无(验收载体) templates/fix-report.md

质量标准

> 每条标准都可被独立验证。交付前逐行核对,任一不达标则回到对应阶段。

维度 标准 验证方式
反馈循环 循环能变红、确定性、秒级、agent 可无人值守运行 bug-report.md 贴出命令与至少一次真实运行输出
最小化复现 移除任一剩余元素循环即变绿 bug-report.md 逐项裁剪记录 + 边界测绘表
症状一致 循环所红的失败模式与用户描述逐字一致 bug-report.md 症状原文 vs 循环输出对照
假设质量 3–5 个独立可证伪假设,每个含「若 X…则 Y…」预测并已排序 diagnosis.md 逐条核对预测句式与排序表
因果确认 去掉根因→消失→加回→重现,三步均有实验证据 diagnosis.md 因果确认三步记录
修复范围 变更仅落在根因处,无顺带重构/优化 fix-tasks.md 任务清单与实际 diff 逐项比对
回归门禁 §阶段 5 五项全过 fix-report.md 回归结果章节,逐项复选框为 - [x]
插桩清理 [DEBUG- 前缀全局 grep 无残留,一次性原型已删除 fix-report.md 清理确认章节贴出 grep 结果
事后复盘 已回答「什么本可以避免这个 bug」并给出防御或架构建议 fix-report.md 复盘章节

落盘规则

  • 快照由 tri-intent 已落盘于 .tribro/snapshots/
  • 本 skill 链路文档落盘于 .tribro/fixes/&lt;命名&gt;/
  • 链路文档可覆盖更新(以最新一轮为准),审计记录留痕于各文档审计章节
  • 最终修复补丁就地落盘于用户工作区项目目录(实际交付物,非 .tribro/)
  • 产物归档:.tribro/ 不存在时 MUST 先创建;每轮执行 MUST 在 .tribro/fixes/&lt;命名&gt;/ 落 delivery-manifest.md,记录本次交付/修改的文件路径清单与说明,保证产物可追溯
  • 调试日志(含 [DEBUG-xxx] 标签)在清理前临时记录于 diagnosis.md,清理后确认已移除

代码版权与许可证合规(硬红线)

> 原则:本 skill 产出的修复补丁必须原创、可合规使用与发布。版权与许可证问题零容忍——任何疑似侵权或许可证冲突的补丁,在解决前不得提交、发布或交付。

五条硬红线(提交/发布/交付前全过才可出):

  • 原创不照搬:补丁依据 diagnosis.md 的根因结论原创实现,NEVER 从 StackOverflow / GitHub issue / 博客整段照搬;确需复用开源片段则完整保留其 LICENSE 与版权声明。
  • 许可证兼容:为修 bug 引入新依赖或上游 patch 前 MUST 核对许可证兼容性,NEVER 引入与目标仓库不兼容者(如 GPL 传染)。
  • 依赖已授权:只用可商用、来源可信的公共包并记录版本与来源,NEVER 换用来源不明的 fork 或私有付费包;对第三方库的 monkey patch MUST 在 fix-report.md 显式披露。
  • 披露到位:平台/雇主/开源社区要求披露 AI 生成代码时按其最新政策标注;向上游回补须遵循该项目 CLA / DCO 要求。
  • LICENSE 已声明:补丁落盘时按目标仓库许可证写入声明或头部注释。

> 📖 详见 references/license-compliance.md——含四类风险与预防(调试场景特化)、生成期源头杜绝、6 步硬性自检清单、平台/仓库条款速查、商用授权与原创存证、侵权应急处置、五条底线判定表。

目录结构

tri-fix/
├── SKILL.md              # 主入口:调试工作流 + 双审批门 + 系统化调试方法论 + 质量标准 + 合规红线
├── README.md             # 特性/目录结构/安装/使用/测试/设计原则
├── CHANGELOG.md          # 版本变更历史(Keep a Changelog + SemVer)
├── references/           # 静态参考资料(非流程逻辑)
│   └── license-compliance.md   # 代码版权与许可证合规完整参考(调试场景特化)
├── templates/
│   ├── bug-report.md     # 故障报告模板(门①载体)
│   ├── diagnosis.md      # 根因诊断报告模板(门②载体)
│   ├── fix-tasks.md      # 修复任务+回归测试清单模板(门③载体+执行蓝图)
│   └── fix-report.md     # 修复报告模板(最终交付物)
└── tests/
    └── tri-fix-full-testcases.md   # 全场景测试用例

常见问题

5 问
答案由本站依据条目字段整理
调试修复怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_989eb8f0/tri-fix。安装方式为未标注。装完刷新技能列表或重开客户端。

调试修复支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

调试修复权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

调试修复收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

调试修复用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。