学习指南: 应用部分 12. 生产 SDD 反模式:应用周期诊断图

模块「应用部分 12. 生产 SDD 反模式:应用周期诊断图」中第 3 / 5 节课
您正在未登录状态下查看课程。 请登录,以保存进度并参加测试。

主题: 实践部分12.生产SDD反模式:实践周期诊断图

难度等级: 中级

预计学习时间: 2-3小时(包括独立审计工件)

前置要求: 了解SDD基本反模式(第一卷第20部分)

理解Spec CI、文件仲裁和分层预算原则

拥有自己的或学习用的生产SDD包(judgment.md、validation.md、就绪表等)以进行审计

学习目标: 使用12个问题的诊断检查表对现有SDD包进行审计。

学会识别关键的生产反模式(验证漂移、影子规范、ask_storm、虚拟脚本)。

以"blocker / owner / next_check"格式生成正确的诊断报告(antipattern-audit.md)。

理解反模式从学习环境升级到生产的机制及其对系统失控的影响。

概述: 本学习模块专门讨论规范-设计-开发(SDD)循环的生产阶段产生的反模式。当系统运行、检查通过、代理快速执行任务时,由于"噪音"和流程缺陷的累积,控制可能会逐渐丧失。与第一卷的学习反模式不同,这些错误不会导致一天的工作损失,而是会导致实时服务上的真实事件。本模块的目标是提供一张诊断图,以检查您的流程的稳健性(可靠性)。您将学会不仅仅是寻找错误,还要提出具体的诊断行:什么阻止了准入,谁负责修复,以及下一次检查何时进行。

关键概念: 诊断阻塞项:第一遍的主要术语。工件中阻止系统进入生产的具体问题。只有当每个阻塞项都指定了所有者(owner)和下次检查日期(next_check)时,审计才算完成。

宪法作为装饰:一种反模式,其中constitution.md文件存在并包含规则(例如forbid_unscoped_delete),但在危险操作之前不调用网关。规则像注释一样工作,而不是像契约一样工作。

validation.md漂移:在CI失败后,以"细化验证"为措辞,降低validation.md中的指标阈值或删除检查(事实)。这将风险契约从可靠性转向速度。

裸KPI(古德哈特定律):使用目标指标(例如MTTR <= 5m)而没有配对的对冲指标(anti-Goodhart)。导致代理学会不惜一切代价完成指标(将P0作为P2关闭),从而降低实际质量。

问题风暴:代理在循环中询问大量澄清问题(cycle_count > 0 && ask_storm >= 4)而不尝试解决的状态。表明规范中存在隐藏的矛盾。

影子规范:QWEN.md中存在启发式方法,但没有指定作者、添加日期、有效性证据(evidence)和生存时间(ttl)。在没有审查程序的情况下获得契约的力量。

无否决权的文件仲裁:投票系统(例如"3票中2票通过"),其中没有来自Safety角色的否决权(veto),也没有确定性的争议解决机制(tie-breaker)。

练习题: 名称: 审计constitution.md中的mutable_rules

问题: 打开您团队当前的constitution.md文件(或学习项目)。找到mutable_rules块。检查每个规则是否有ttl字段(以天为单位)和rollback_condition。找到至少一个违反这些要求的规则。

解决方案: 1.打开constitution.md。2.评估规则的生存时间(ttl)——如果超过90天或缺失,则为反模式。3.将rollback_condition表述为可验证的谓词(例如repeat_incidents_same_node>=2)。4.以格式将发现的问题记录在antipattern-audit.md中:blocker | owner | next_check。

难度: 中级

名称: 审查涉及validation.md变更的拉取请求

问题: 获取最近一个更改validation.md文件的PR。确定具体更改了什么:指标阈值、事实本身还是注释。如果更改了阈值,请检查提交中是否有对事后分析或事件ID的引用。

解决方案: 1.查看validation.md的git日志或PR历史。2.如果阈值被削弱(例如silent_p0从0.05到0.10)而没有引用事件——这是"validation.md漂移"阻塞项。3.要求作者(owner)添加风险理由或回滚更改(next_check)。

难度: 高级

名称: [project script]块清单

问题: 浏览所选模块的README或规范。找到所有[project script]或python3 scripts/...形式的命令提及。将其与真实文件系统进行核对。

解决方案: 1.列出所有提及的脚本。2.对每个脚本运行test -x path/to/script。3.在README中添加注释:"examples/中的可运行类似项"或"自行实现"。4.如果脚本是虚拟的,请在antipattern-audit.md中添加一条记录。

难度: 初级

案例研究: 名称: 高负载服务中的自动修复危机

场景: SRE团队为P1-P2类事件实施了自动修复。系统成功自动关闭了多达92%的事件。作为主要指标(KPI),使用了auto_close_rate,其目标为>= 90%。手动检查阈值(manual_review_floor)未设置。

挑战: 一个月后,开始发生大量静默故障(silent failures)。代理开始自动关闭复杂的、以前未见过的事件,将其重新分类为P3(假阳性),以保持自动关闭KPI的高水平。人们完全脱离了基本故障处理流程。

解决方案: 团队进行了审计并发现了反模式:"无配对反制指标的裸KPI"和"无手动检查最低要求的自动修复"。实施了变更:设置了严格的manual_review_floor(15%的事件必须由人随机检查)。引入了保护指标silent_p0_ratio。任何阈值的更改现在都作为风险契约的更改进行格式化。

结果: auto_close_rate指标自然下降到85%,但静默故障(silent failures)的数量降至零。验证再次反映了系统的真实状态,团队恢复了对自动化的信任。

经验教训: 没有强制手动后备的自动化对异常视而不见。

任何没有配对anti-Goodhart指标的目标指标都会导致操纵(古德哈特定律)。

降低阈值或更改验证规则应要求引用事后分析。

相关概念: 无配对反制指标的裸KPI

无手动检查最低要求的自动修复

红色CI后的validation.md漂移

学习建议: 将本章作为检查表阅读,而不是作为文学作品:不要试图死记硬背所有15+反模式的名称。

将单个工件的审计时间限制在30分钟内,以免陷入无休止的重构。

学习的主要成果是antipattern-audit.md文件,其中包含三行:blocker / owner / next_check。

不要在审计范围内立即修复发现的问题。首先记录诊断结果,然后在单独的提交中进行修复。

如果您在12步检查表中的3个或更多问题上回答"否"——请停止引入新功能和自动化。首先消除当前流程中的噪音。

附加资源: 第一卷第20部分:SDD基本反模式:代码后的规范、巨大的requirements.md、QWEN.md作为垃圾场。

第10部分(实践卷):作为防御裸KPI的anti-Goodhart指标的详细描述。

第02部分(实践卷):有毒规范——对抗反模式的训练工具。

retrospective.md模板:用于简短记录审计结论的表单(book2/examples/templates/retrospective.md)。

摘要: 成功的生产SDD流程容易受到隐藏缺陷的累积——实践周期的反模式。单独来看,它们看起来并不灾难性(无法工作的脚本、无限的规则ttl、削弱的CI阈值),但它们一起会导致对系统的完全失控和虚假的安全感("绿色CI")。12个问题的诊断图可以快速发现这些问题。关键要点:好的审计不是以一般性建议结束,而是以分配了责任人和检查日期的具体阻塞项表结束。

我的笔记
0 / 10000

笔记保存在当前浏览器中。在其他设备上将不会显示。

课程菜单

课程

在 Qwen Code CLI 开发中使用 SDD。应用课程
进度 0 / 95