Quality Loop · 通用产出打磨循环 v2
内核来自真实 AI 报告流水线实战:标准对照挑差距 → 哪层病修哪层 → 签名库防"同一个坑摔两次" → 评分到 A 才出循环 → 出口盲评最后独立拦一道 → 定稿永远在发起人手里;每跑一次,把学到的蒸馏回标准库,下次起点更高。
⚑ Terminal State(先看这个)
跑完后世界上多出:
- 产出物终稿(位置由任务决定);
_quality_loop_log.md(同目录,最小骨架:## 第0步口径 / ## 第N轮(差距清单+修改+评分与命中签名) / ## 出口盲评 / ## 蒸馏判定 / 末节## 交付时状态):末节须为"锚点全✅+末轮评分 A+盲评 CLEAR";
- 三库更新:新问题签名入签名库;本次差距经五问滤网蒸馏进需求清单(如有合格项)。
验证:log 存在且末节全绿;三库 diff 可见更新(若有)。发起人看过说"确认"才算定稿,skill 不替发起人关账。
三库(质量的锚,高质量参考范例的通用替身)
| 库 |
是什么 |
位置 |
| 锚点集 |
按产出大类选一套(按大类分套,不许一套硬套所有)。报告/文档类:①真实权威·可溯源不编造(模型记忆不算源,只当线索) ②数据信息完整·不缺斤少两 ③逻辑缜密·经得住反问 ④大白话·外行能懂 ⑤排版清晰·扫一眼抓到重点。机制/代码类:①真实有效·声称的行为经过两头实测(坏样本拦得住+好样本在真实路径放得行) ②覆盖完整·所有调用方/场景/边界都被考虑,无残留旧组件无静默降级 ③逻辑健壮·并发/失败/极端输入经得住推演(幂等/互斥/失败响亮) ④可运维·出错能被人发现(告警回路)、脏了能自愈、日志可诊断 ⑤可读可传·头注让没跟过事故的人懂为什么存在+怎么验证。其他大类(设计稿/流程/数据集…):第 0 步和发起人现场立五条,用过即蒸馏沉淀成新套 |
本文件(恒定) |
| 需求清单 |
该类产出"必须有什么"的结构化清单(维度/方法/口径),越用越厚——蒸馏的沉淀处 |
<产出物目录>/.quality-loop/standards/<产出类型>.md,没有则第 0 步现场立最小版 |
| 签名库 |
修过的错(签名+钉死位置+验证法),评分的判定依据。双本都查 |
全局本 ~/.claude/skills/quality-loop/registry/global_offenses.yaml + 项目本 <产出物目录>/.quality-loop/offenses.yaml |
工作流(硬序,不许跳步)
第 0 步 · 口径确认【低自由度·硬检查点】
先按产出大类选定锚点套(报告类/机制类/现场立新套),再把该套的量化口径列成表 + 检查需求清单在不在:在→复述关键条目;不在→根据任务和发起人的期望现场起草最小需求清单(5-10 条"必须有什么"),连同口径表一起发发起人确认。发起人没点头不准进第 1 步(例外:口径已在本次对话明确给过,复述即视为确认)。
为什么硬:口径不确认,每一轮打磨都在对着猜出来的标准使劲。
第 1 步 · 读签名库【低自由度】
两本都读,相关条目的 inject 句写进工作清单——以前摔过的坑,产出时就避开。
第 2 步 · 产出初稿
正常做,带着第 0/1 步的清单。
第 3 步 · 审查【做验分离·高自由度】
用 Agent 工具起独立审查员(不可用时降级为对手人格并在 log 注明)。审查员拿到:产出物+口径表+需求清单+签名库相关条目。输出差距清单,每条标【锚点几/清单第几条】【病在哪层:数据/分析/表达/格式】。
第 4 步 · 评分【低自由度·只认签名比对】
逐条判:命中已钉死签名=C(同坑二摔);命中但当时没提炼规则=B;新问题=不扣分、起草六字段新签名;无差距=A。比对认实质(同类型+同机制点)不认措辞。
第 5 步 · 修与循环
哪层病修哪层,做好的部分不动;修完回第 3 步。上报分诊:循环中冒出"需要发起人的凭证/两个都合理且无依据自选的口径二选一/商业方向拍板"=真阻断,带证据三件套(问题原文/现状关键事实/每个选项的后果)上报发起人;其余一切自己办,有恒定答案的问题禁止上报。
终止:(a) 评分=A 且锚点+清单全过 → 第 5.5 步(发起人拍板"B 也得改到 A 再给我",放行线=A-only;B 的路径:补作业(把规则钉进机制/补签名/补蒸馏)→复评核验"补什么"真实完成→升 A。复评判定时点原则:复发判 C 只看犯错当时该签名是否已钉死,补作业后的复评不追溯 C,钉死之后新一轮再犯才是 C);(b) 连续 2 轮差距无变化 → 停,如实上报僵局;(c) 发起人喊停。
第 5.5 步 · 出口盲评【做验分离·新增】
达标≠放行。另起一个盲评代理:只给它产出物+需求清单+五锚点,不给任何审查结论和 log(不盲会被前面的结论锚定,变成走过场)。它只挑三类要害,按锚点套取对应形态——报告/文档类:①事实溯源(抽 5 个关键点核来源)②会翻结论的缺漏 ③地基错误(对象/口径/时间窗);机制/代码类:①声称的行为抽 5 处实测复核(不信 log 自述)②会翻功能的边界/调用方缺漏 ③地基错误(需求理解/接口契约/运行环境);其他大类按现场立的五条锚点对应取三类。CLEAR→交付;HIT→并入差距回第 5 步,且 log 里记"审查员为什么没发现"。没毛病要明说,禁止硬凑假问题浪费一轮。
第 6 步 · 交付与蒸馏【低自由度】
- 蒸馏:本次全部差距过五问滤网——①抽掉专名数字还成立吗(不成立=内容,不蒸馏)②三库已覆盖?(覆盖=补强不新增)③代价:高(缺整章/翻结论)一次即蒸馏,低(措辞格式)复发第 2 次才蒸馏 ④写得出可执行 check 吗(写不出=口号,不入库)⑤归家唯一(需求清单/签名库只进一家)。合格项写进对应库。
- **过程事故自报(实战教训:发起人抓出"不问不说"):**交付话术从三段改四段——做了什么/打磨了几轮改了什么/执行过程我犯过什么错(走的弯路、返工、误操作,怎么发现怎么修的;真没有才写"无")/哪里需要你拍板。为什么硬:错误修好了≠可以不提——发起人靠自报判断该不该抽查;自报无罪(不影响产出评分),瞒报重罪(发起人事后发现未自报的错=命中全局签名 GQ-010,记进签名库跟一辈子)。log 里的轮次记录就是自报的底稿,对得上才可信。
- log 收尾;产出物+log 交发起人终审。
模型分配(2026-07-15 补,按错误代价定档:漏判会直达发起人的环节用强模型,机械核对可用弱模型)
| 角色 |
档位 |
为什么 |
| 产出(第2步) |
随任务本身 |
产出质量由循环兜底 |
| 审查员(第3步)、盲评(第5.5步) |
不低于会话模型(判断类,漏判直达发起人) |
审查降档=省小钱漏大错 |
| 评分(第4步) |
可低档 |
签名比对是核对不是创作 |
| 复评核作业(第5步) |
可低档 |
grep 实查类机械活 |
| 起子代理时用 Agent 工具的 model 参数指定;不确定=全部继承会话模型(宁贵勿漏)。 |
|
|
防偷懒机制
| 步骤 |
量化下限 |
禁止语言 |
| 第 0 步 |
五锚点每条≥1 个可验指标;需求清单≥5 条 |
禁"保持高质量"类不可验表述 |
| 第 3 步 |
逐锚点+逐清单条过,都要有结论 |
禁"整体不错"跳过逐条 |
| 第 4 步 |
每条差距写明命中/未命中哪个签名 |
禁无依据给 A |
| 第 5.5 步 |
三类各有结论;抽查≥5 个关键点 |
禁复用审查员的结论 |
| 第 6 步 |
每条差距给出蒸馏判定(入库/不入库+哪一问拦的) |
禁跳过蒸馏直接交付 |
已知失败模式
| 场景 |
处理 |
| 发起人不在场无法确认口径 |
停在第 0 步给出草案等确认;绝不"先按我理解的跑" |
| 打磨不收敛(每轮都挑出新鸡毛蒜皮) |
锚点口径太模糊的信号→回第 0 步收紧,不是无限修 |
| 想把复发判成新问题(措辞不同) |
认实质;拿不准=按命中处理(宁严勿宽) |
| 想跳过循环直接交("看起来很好") |
至少完整跑一轮审查+评分+盲评留 log |
| 盲评代理为显得有用硬凑问题 |
模板明写"没毛病要明说";凑出的假打回浪费整轮,log 记它一笔 |
| 过程中犯了错,想着"修好了就不用提" |
必须进交付第三段自报;自报无罪、被发起人事后发现=GQ-010 瞒报,比原错误严重得多 |
| 把"做不到/补不了"当结论 |
那是待验证主张:物理不可要附否证,成本不值要上报发起人拍板,不许自己枪毙 |
1---2name: quality-loop3description: 给任何产出物(报告/文档/方案/代码/工具/设计稿等)套上"审查-打分-优化-盲评"的多轮自动打磨循环,直到过标准才交给发起人终审,并把本次学到的差距蒸馏成可复用标准。Use when 用户说"用 quality loop 做/打磨这个""走质量循环""审查优化打分""按锚点打磨到达标",或明确要求产出物经过多轮自检再交付;**或接到的任务产出物大类命中蒸馏库已有池子(报告/文档类、机制/代码类)——此时应主动触发,不等用户点名(发起人可约定为全局机制:蒸馏教训必须被强制消费)**。NOT when 只要一次性快速产出草稿、或用户明确说"不用打磨直接给我"、或产出物是一句话级的小回复。4license: MIT5---67# Quality Loop · 通用产出打磨循环 v289> 内核来自真实 AI 报告流水线实战:标准对照挑差距 → 哪层病修哪层 → 签名库防"同一个坑摔两次" → 评分到 A 才出循环 → 出口盲评最后独立拦一道 → **定稿永远在发起人手里**;每跑一次,把学到的蒸馏回标准库,下次起点更高。1011## ⚑ Terminal State(先看这个)1213跑完后世界上多出:141. **产出物终稿**(位置由任务决定);152. **`_quality_loop_log.md`**(同目录,最小骨架:`## 第0步口径` / `## 第N轮`(差距清单+修改+评分与命中签名) / `## 出口盲评` / `## 蒸馏判定` / 末节`## 交付时状态`):末节须为"锚点全✅+末轮评分 A+盲评 CLEAR";163. **三库更新**:新问题签名入签名库;本次差距经五问滤网蒸馏进需求清单(如有合格项)。1718验证:log 存在且末节全绿;三库 diff 可见更新(若有)。**发起人看过说"确认"才算定稿,skill 不替发起人关账。**1920## 三库(质量的锚,高质量参考范例的通用替身)2122| 库 | 是什么 | 位置 |23|---|---|---|24| **锚点集** | 按产出大类选一套(按大类分套,不许一套硬套所有)。**报告/文档类**:①真实权威·可溯源不编造(模型记忆不算源,只当线索) ②数据信息完整·不缺斤少两 ③逻辑缜密·经得住反问 ④大白话·外行能懂 ⑤排版清晰·扫一眼抓到重点。**机制/代码类**:①真实有效·声称的行为经过两头实测(坏样本拦得住+好样本在真实路径放得行) ②覆盖完整·所有调用方/场景/边界都被考虑,无残留旧组件无静默降级 ③逻辑健壮·并发/失败/极端输入经得住推演(幂等/互斥/失败响亮) ④可运维·出错能被人发现(告警回路)、脏了能自愈、日志可诊断 ⑤可读可传·头注让没跟过事故的人懂为什么存在+怎么验证。**其他大类**(设计稿/流程/数据集…):第 0 步和发起人现场立五条,用过即蒸馏沉淀成新套 | 本文件(恒定) |25| **需求清单** | 该类产出"必须有什么"的结构化清单(维度/方法/口径),越用越厚——蒸馏的沉淀处 | `<产出物目录>/.quality-loop/standards/<产出类型>.md`,没有则第 0 步现场立最小版 |26| **签名库** | 修过的错(签名+钉死位置+验证法),评分的判定依据。双本都查 | 全局本 `~/.claude/skills/quality-loop/registry/global_offenses.yaml` + 项目本 `<产出物目录>/.quality-loop/offenses.yaml` |2728## 工作流(硬序,不许跳步)2930### 第 0 步 · 口径确认【低自由度·硬检查点】31先按产出大类**选定锚点套**(报告类/机制类/现场立新套),再把该套的**量化口径**列成表 + 检查**需求清单**在不在:在→复述关键条目;不在→根据任务和发起人的期望**现场起草最小需求清单**(5-10 条"必须有什么"),连同口径表一起发发起人确认。**发起人没点头不准进第 1 步**(例外:口径已在本次对话明确给过,复述即视为确认)。32为什么硬:口径不确认,每一轮打磨都在对着猜出来的标准使劲。3334### 第 1 步 · 读签名库【低自由度】35两本都读,相关条目的 inject 句写进工作清单——以前摔过的坑,产出时就避开。3637### 第 2 步 · 产出初稿38正常做,带着第 0/1 步的清单。3940### 第 3 步 · 审查【做验分离·高自由度】41用 Agent 工具起独立审查员(不可用时降级为对手人格并在 log 注明)。审查员拿到:产出物+口径表+需求清单+签名库相关条目。输出差距清单,每条标【锚点几/清单第几条】【病在哪层:数据/分析/表达/格式】。4243### 第 4 步 · 评分【低自由度·只认签名比对】44逐条判:命中已钉死签名=**C**(同坑二摔);命中但当时没提炼规则=**B**;新问题=不扣分、起草六字段新签名;无差距=**A**。比对认实质(同类型+同机制点)不认措辞。4546### 第 5 步 · 修与循环47哪层病修哪层,**做好的部分不动**;修完回第 3 步。**上报分诊**:循环中冒出"需要发起人的凭证/两个都合理且无依据自选的口径二选一/商业方向拍板"=真阻断,带**证据三件套**(问题原文/现状关键事实/每个选项的后果)上报发起人;其余一切自己办,有恒定答案的问题禁止上报。48终止:(a) **评分=A** 且锚点+清单全过 → 第 5.5 步(发起人拍板"B 也得改到 A 再给我",放行线=A-only;B 的路径:补作业(把规则钉进机制/补签名/补蒸馏)→复评核验"补什么"真实完成→升 A。**复评判定时点原则**:复发判 C 只看犯错当时该签名是否已钉死,补作业后的复评不追溯 C,钉死之后新一轮再犯才是 C);(b) 连续 2 轮差距无变化 → 停,如实上报僵局;(c) 发起人喊停。4950### 第 5.5 步 · 出口盲评【做验分离·新增】51达标≠放行。**另起一个盲评代理**:只给它产出物+需求清单+五锚点,**不给任何审查结论和 log**(不盲会被前面的结论锚定,变成走过场)。它只挑三类要害,按锚点套取对应形态——报告/文档类:①事实溯源(抽 5 个关键点核来源)②会翻结论的缺漏 ③地基错误(对象/口径/时间窗);机制/代码类:①声称的行为抽 5 处实测复核(不信 log 自述)②会翻功能的边界/调用方缺漏 ③地基错误(需求理解/接口契约/运行环境);其他大类按现场立的五条锚点对应取三类。CLEAR→交付;HIT→并入差距回第 5 步,且 log 里记"审查员为什么没发现"。没毛病要明说,禁止硬凑假问题浪费一轮。5253### 第 6 步 · 交付与蒸馏【低自由度】541. **蒸馏**:本次全部差距过**五问滤网**——①抽掉专名数字还成立吗(不成立=内容,不蒸馏)②三库已覆盖?(覆盖=补强不新增)③代价:高(缺整章/翻结论)一次即蒸馏,低(措辞格式)复发第 2 次才蒸馏 ④写得出可执行 check 吗(写不出=口号,不入库)⑤归家唯一(需求清单/签名库只进一家)。合格项写进对应库。552. **过程事故自报(实战教训:发起人抓出"不问不说"):**交付话术从三段改四段——做了什么/打磨了几轮改了什么/**执行过程我犯过什么错**(走的弯路、返工、误操作,怎么发现怎么修的;真没有才写"无")/哪里需要你拍板。为什么硬:错误修好了≠可以不提——发起人靠自报判断该不该抽查;**自报无罪(不影响产出评分),瞒报重罪**(发起人事后发现未自报的错=命中全局签名 GQ-010,记进签名库跟一辈子)。log 里的轮次记录就是自报的底稿,对得上才可信。563. log 收尾;产出物+log 交发起人终审。5758## 模型分配(2026-07-15 补,按错误代价定档:漏判会直达发起人的环节用强模型,机械核对可用弱模型)59| 角色 | 档位 | 为什么 |60|---|---|---|61| 产出(第2步) | 随任务本身 | 产出质量由循环兜底 |62| 审查员(第3步)、盲评(第5.5步) | **不低于会话模型**(判断类,漏判直达发起人) | 审查降档=省小钱漏大错 |63| 评分(第4步) | 可低档 | 签名比对是核对不是创作 |64| 复评核作业(第5步) | 可低档 | grep 实查类机械活 |65起子代理时用 Agent 工具的 model 参数指定;不确定=全部继承会话模型(宁贵勿漏)。6667## 防偷懒机制6869| 步骤 | 量化下限 | 禁止语言 |70|---|---|---|71| 第 0 步 | 五锚点每条≥1 个可验指标;需求清单≥5 条 | 禁"保持高质量"类不可验表述 |72| 第 3 步 | 逐锚点+逐清单条过,都要有结论 | 禁"整体不错"跳过逐条 |73| 第 4 步 | 每条差距写明命中/未命中哪个签名 | 禁无依据给 A |74| 第 5.5 步 | 三类各有结论;抽查≥5 个关键点 | 禁复用审查员的结论 |75| 第 6 步 | 每条差距给出蒸馏判定(入库/不入库+哪一问拦的) | 禁跳过蒸馏直接交付 |7677## 已知失败模式7879| 场景 | 处理 |80|---|---|81| 发起人不在场无法确认口径 | 停在第 0 步给出草案等确认;绝不"先按我理解的跑" |82| 打磨不收敛(每轮都挑出新鸡毛蒜皮) | 锚点口径太模糊的信号→回第 0 步收紧,不是无限修 |83| 想把复发判成新问题(措辞不同) | 认实质;拿不准=按命中处理(宁严勿宽) |84| 想跳过循环直接交("看起来很好") | 至少完整跑一轮审查+评分+盲评留 log |85| 盲评代理为显得有用硬凑问题 | 模板明写"没毛病要明说";凑出的假打回浪费整轮,log 记它一笔 |86| 过程中犯了错,想着"修好了就不用提" | 必须进交付第三段自报;自报无罪、被发起人事后发现=GQ-010 瞒报,比原错误严重得多 |87| 把"做不到/补不了"当结论 | 那是待验证主张:物理不可要附否证,成本不值要上报发起人拍板,不许自己枪毙 |