dev-playbooks-cn 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +466 -0
  3. package/bin/devbooks.js +987 -0
  4. package/package.json +43 -0
  5. package/skills/Skills/344/275/277/347/224/250/350/257/264/346/230/216.md +446 -0
  6. package/skills/Skill/345/274/200/345/217/221/346/214/207/345/215/227.md +248 -0
  7. package/skills/_shared/context-detection-template.md +315 -0
  8. package/skills/_shared/mcp-enhancement-template.md +144 -0
  9. package/skills/_shared/references//351/200/232/347/224/250/345/256/210/351/227/250/345/215/217/350/256/256.md +114 -0
  10. package/skills/_template/config-discovery-template.md +126 -0
  11. package/skills/devbooks-brownfield-bootstrap/SKILL.md +167 -0
  12. package/skills/devbooks-brownfield-bootstrap/references//344/273/243/347/240/201/345/257/274/350/210/252/347/255/226/347/225/245.md +203 -0
  13. package/skills/devbooks-brownfield-bootstrap/references//345/255/230/351/207/217/351/241/271/347/233/256/345/210/235/345/247/213/345/214/226.md +96 -0
  14. package/skills/devbooks-brownfield-bootstrap/references//345/255/230/351/207/217/351/241/271/347/233/256/345/210/235/345/247/213/345/214/226/346/217/220/347/244/272/350/257/215.md +115 -0
  15. package/skills/devbooks-brownfield-bootstrap/references//346/234/257/350/257/255/350/241/250/346/250/241/346/235/277.md +42 -0
  16. package/skills/devbooks-brownfield-bootstrap/scripts/cod-update.sh +357 -0
  17. package/skills/devbooks-brownfield-bootstrap/templates/project-profile-template.md +172 -0
  18. package/skills/devbooks-c4-map/SKILL.md +151 -0
  19. package/skills/devbooks-c4-map/references/C4/346/236/266/346/236/204/345/234/260/345/233/276/346/217/220/347/244/272/350/257/215.md +33 -0
  20. package/skills/devbooks-c4-map/references//345/210/206/345/261/202/347/272/246/346/235/237/346/243/200/346/237/245/346/270/205/345/215/225.md +185 -0
  21. package/skills/devbooks-code-review/SKILL.md +175 -0
  22. package/skills/devbooks-code-review/references/PR/346/250/241/346/235/277/344/270/216/346/214/207/345/215/227.md +321 -0
  23. package/skills/devbooks-code-review/references//344/273/243/347/240/201/350/257/204/345/256/241/346/217/220/347/244/272/350/257/215.md +100 -0
  24. package/skills/devbooks-code-review/references//345/235/217/345/221/263/351/201/223/351/200/237/346/237/245/350/241/250.md +495 -0
  25. package/skills/devbooks-code-review/references//350/265/204/346/272/220/347/256/241/347/220/206/345/256/241/346/237/245/346/270/205/345/215/225.md +311 -0
  26. package/skills/devbooks-coder/SKILL.md +219 -0
  27. package/skills/devbooks-coder/references//344/273/243/347/240/201/345/256/236/347/216/260/346/217/220/347/244/272/350/257/215.md +70 -0
  28. package/skills/devbooks-coder/references//344/275/216/351/243/216/351/231/251/346/224/271/345/212/250/346/212/200/346/234/257.md +275 -0
  29. package/skills/devbooks-coder/references//346/227/245/345/277/227/350/247/204/350/214/203.md +329 -0
  30. package/skills/devbooks-coder/references//347/274/226/347/240/201/351/243/216/346/240/274/347/273/206/345/210/231.md +351 -0
  31. package/skills/devbooks-coder/references//351/224/231/350/257/257/347/240/201/350/247/204/350/214/203.md +463 -0
  32. package/skills/devbooks-delivery-workflow/SKILL.md +217 -0
  33. package/skills/devbooks-delivery-workflow/references//344/272/244/344/273/230/351/252/214/346/224/266/345/267/245/344/275/234/346/265/201.md +256 -0
  34. package/skills/devbooks-delivery-workflow/references//345/216/237/345/236/213-/347/224/237/344/272/247/345/217/214/350/275/250/346/250/241/345/274/217.md +168 -0
  35. package/skills/devbooks-delivery-workflow/references//345/217/230/346/233/264/351/252/214/350/257/201/344/270/216/350/277/275/346/272/257/346/250/241/346/235/277.md +133 -0
  36. package/skills/devbooks-delivery-workflow/scripts/ac-trace-check.sh +330 -0
  37. package/skills/devbooks-delivery-workflow/scripts/audit-scope.sh +262 -0
  38. package/skills/devbooks-delivery-workflow/scripts/change-check.sh +1040 -0
  39. package/skills/devbooks-delivery-workflow/scripts/change-codemod-scaffold.sh +135 -0
  40. package/skills/devbooks-delivery-workflow/scripts/change-evidence.sh +152 -0
  41. package/skills/devbooks-delivery-workflow/scripts/change-scaffold.sh +442 -0
  42. package/skills/devbooks-delivery-workflow/scripts/change-spec-delta-scaffold.sh +136 -0
  43. package/skills/devbooks-delivery-workflow/scripts/constitution-check.sh +237 -0
  44. package/skills/devbooks-delivery-workflow/scripts/env-match-check.sh +128 -0
  45. package/skills/devbooks-delivery-workflow/scripts/fitness-check.sh +387 -0
  46. package/skills/devbooks-delivery-workflow/scripts/guardrail-check.sh +519 -0
  47. package/skills/devbooks-delivery-workflow/scripts/handoff-check.sh +141 -0
  48. package/skills/devbooks-delivery-workflow/scripts/hygiene-check.sh +340 -0
  49. package/skills/devbooks-delivery-workflow/scripts/migrate-from-openspec.sh +385 -0
  50. package/skills/devbooks-delivery-workflow/scripts/migrate-to-v2-gates.sh +202 -0
  51. package/skills/devbooks-delivery-workflow/scripts/progress-dashboard.sh +319 -0
  52. package/skills/devbooks-delivery-workflow/scripts/prototype-promote.sh +341 -0
  53. package/skills/devbooks-delivery-workflow/scripts/spec-preview.sh +203 -0
  54. package/skills/devbooks-delivery-workflow/scripts/spec-promote.sh +118 -0
  55. package/skills/devbooks-delivery-workflow/scripts/spec-rollback.sh +124 -0
  56. package/skills/devbooks-delivery-workflow/scripts/spec-stage.sh +117 -0
  57. package/skills/devbooks-delivery-workflow/scripts/verify-all.sh +78 -0
  58. package/skills/devbooks-delivery-workflow/scripts/verify-npm-package.sh +123 -0
  59. package/skills/devbooks-delivery-workflow/scripts/verify-openspec-free.sh +81 -0
  60. package/skills/devbooks-delivery-workflow/scripts/verify-slash-commands.sh +146 -0
  61. package/skills/devbooks-delivery-workflow/templates/handoff.md +50 -0
  62. package/skills/devbooks-design-backport/SKILL.md +73 -0
  63. package/skills/devbooks-design-backport/references//345/233/236/345/206/231/350/256/276/350/256/241/346/226/207/346/241/243/346/217/220/347/244/272/350/257/215.md +196 -0
  64. package/skills/devbooks-design-doc/SKILL.md +121 -0
  65. package/skills/devbooks-design-doc/references//345/276/256/346/234/215/345/212/241/350/256/276/350/256/241/346/270/205/345/215/225.md +149 -0
  66. package/skills/devbooks-design-doc/references//350/256/276/350/256/241/346/226/207/346/241/243/346/217/220/347/244/272/350/257/215.md +189 -0
  67. package/skills/devbooks-design-doc/references//351/232/220/347/247/201/345/220/210/350/247/204/346/243/200/346/237/245/346/270/205/345/215/225.md +240 -0
  68. package/skills/devbooks-entropy-monitor/SKILL.md +188 -0
  69. package/skills/devbooks-entropy-monitor/references//347/206/265/345/272/246/351/207/217/346/226/271/346/263/225/350/256/272.md +223 -0
  70. package/skills/devbooks-entropy-monitor/scripts/entropy-measure.sh +449 -0
  71. package/skills/devbooks-entropy-monitor/scripts/entropy-report.sh +303 -0
  72. package/skills/devbooks-entropy-monitor/templates/thresholds.json +99 -0
  73. package/skills/devbooks-federation/SKILL.md +264 -0
  74. package/skills/devbooks-federation/scripts/federation-check.sh +144 -0
  75. package/skills/devbooks-federation/templates/federation.yaml +89 -0
  76. package/skills/devbooks-impact-analysis/SKILL.md +135 -0
  77. package/skills/devbooks-impact-analysis/references//345/275/261/345/223/215/345/210/206/346/236/220/346/217/220/347/244/272/350/257/215.md +82 -0
  78. package/skills/devbooks-impact-analysis/scripts/graph-cache.sh +214 -0
  79. package/skills/devbooks-implementation-plan/SKILL.md +83 -0
  80. package/skills/devbooks-implementation-plan/references//347/274/226/347/240/201/350/256/241/345/210/222/346/217/220/347/244/272/350/257/215.md +99 -0
  81. package/skills/devbooks-index-bootstrap/SKILL.md +240 -0
  82. package/skills/devbooks-proposal-author/SKILL.md +83 -0
  83. package/skills/devbooks-proposal-author/references//346/217/220/346/241/210/346/222/260/345/206/231/346/217/220/347/244/272/350/257/215.md +66 -0
  84. package/skills/devbooks-proposal-challenger/SKILL.md +86 -0
  85. package/skills/devbooks-proposal-challenger/references//344/274/246/347/220/206/344/270/216/345/220/210/350/247/204/346/243/200/346/237/245/346/270/205/345/215/225.md +176 -0
  86. package/skills/devbooks-proposal-challenger/references//346/217/220/346/241/210/350/264/250/347/226/221/346/217/220/347/244/272/350/257/215.md +57 -0
  87. package/skills/devbooks-proposal-debate-workflow/SKILL.md +78 -0
  88. package/skills/devbooks-proposal-debate-workflow/references//346/217/220/346/241/210/345/257/271/350/276/251/345/267/245/344/275/234/346/265/201.md +24 -0
  89. package/skills/devbooks-proposal-debate-workflow/references//346/217/220/346/241/210/345/257/271/350/276/251/346/250/241/346/235/277.md +35 -0
  90. package/skills/devbooks-proposal-debate-workflow/scripts/proposal-debate-check.sh +102 -0
  91. package/skills/devbooks-proposal-judge/SKILL.md +78 -0
  92. package/skills/devbooks-proposal-judge/references//346/217/220/346/241/210/350/243/201/345/206/263/346/217/220/347/244/272/350/257/215.md +37 -0
  93. package/skills/devbooks-router/SKILL.md +346 -0
  94. package/skills/devbooks-spec-contract/SKILL.md +191 -0
  95. package/skills/devbooks-spec-contract/references/API/350/256/276/350/256/241/346/214/207/345/215/227.md +349 -0
  96. package/skills/devbooks-spec-contract/references//345/245/221/347/272/246/344/270/216/346/225/260/346/215/256/345/256/232/344/271/211/346/217/220/347/244/272/350/257/215.md +85 -0
  97. package/skills/devbooks-spec-contract/references//350/247/204/346/240/274/345/217/230/346/233/264/346/217/220/347/244/272/350/257/215.md +63 -0
  98. package/skills/devbooks-spec-contract/references//351/232/220/345/274/217/345/217/230/346/233/264/346/243/200/346/265/213/346/217/220/347/244/272/350/257/215.md +183 -0
  99. package/skills/devbooks-spec-contract/scripts/implicit-change-detect.sh +378 -0
  100. package/skills/devbooks-spec-gardener/SKILL.md +72 -0
  101. package/skills/devbooks-spec-gardener/references//350/247/204/346/240/274/345/233/255/344/270/201/346/217/220/347/244/272/350/257/215.md +41 -0
  102. package/skills/devbooks-test-owner/SKILL.md +172 -0
  103. package/skills/devbooks-test-owner/references//345/217/230/346/233/264/351/252/214/350/257/201/344/270/216/350/277/275/346/272/257/346/250/241/346/235/277.md +228 -0
  104. package/skills/devbooks-test-owner/references//345/274/202/346/255/245/347/263/273/347/273/237/346/265/213/350/257/225/347/255/226/347/225/245.md +316 -0
  105. package/skills/devbooks-test-owner/references//346/265/213/350/257/225/344/273/243/347/240/201/346/217/220/347/244/272/350/257/215.md +208 -0
  106. package/skills/devbooks-test-owner/references//346/265/213/350/257/225/345/210/206/345/261/202/347/255/226/347/225/245.md +281 -0
  107. package/skills/devbooks-test-owner/references//346/265/213/350/257/225/351/251/261/345/212/250.md +394 -0
  108. package/skills/devbooks-test-owner/references//350/247/243/344/276/235/350/265/226/346/212/200/346/234/257/351/200/237/346/237/245/350/241/250.md +432 -0
  109. package/skills/devbooks-test-reviewer/SKILL.md +189 -0
  110. package/templates/.devbooks/config.yaml +88 -0
  111. package/templates/claude-commands/devbooks/apply.md +38 -0
  112. package/templates/claude-commands/devbooks/archive.md +33 -0
  113. package/templates/claude-commands/devbooks/backport.md +19 -0
  114. package/templates/claude-commands/devbooks/bootstrap.md +19 -0
  115. package/templates/claude-commands/devbooks/c4.md +19 -0
  116. package/templates/claude-commands/devbooks/challenger.md +19 -0
  117. package/templates/claude-commands/devbooks/code.md +19 -0
  118. package/templates/claude-commands/devbooks/debate.md +19 -0
  119. package/templates/claude-commands/devbooks/delivery.md +19 -0
  120. package/templates/claude-commands/devbooks/design.md +19 -0
  121. package/templates/claude-commands/devbooks/entropy.md +19 -0
  122. package/templates/claude-commands/devbooks/federation.md +19 -0
  123. package/templates/claude-commands/devbooks/gardener.md +19 -0
  124. package/templates/claude-commands/devbooks/impact.md +19 -0
  125. package/templates/claude-commands/devbooks/index.md +19 -0
  126. package/templates/claude-commands/devbooks/judge.md +19 -0
  127. package/templates/claude-commands/devbooks/plan.md +19 -0
  128. package/templates/claude-commands/devbooks/proposal.md +19 -0
  129. package/templates/claude-commands/devbooks/quick.md +42 -0
  130. package/templates/claude-commands/devbooks/review.md +19 -0
  131. package/templates/claude-commands/devbooks/router.md +19 -0
  132. package/templates/claude-commands/devbooks/spec.md +19 -0
  133. package/templates/claude-commands/devbooks/test-review.md +19 -0
  134. package/templates/claude-commands/devbooks/test.md +19 -0
  135. package/templates/dev-playbooks/README.md +458 -0
  136. package/templates/dev-playbooks/changes/.gitkeep +1 -0
  137. package/templates/dev-playbooks/constitution.md +116 -0
  138. package/templates/dev-playbooks/project.md +96 -0
  139. package/templates/dev-playbooks/scripts/.gitkeep +1 -0
  140. package/templates/dev-playbooks/specs/_meta/anti-patterns/.gitkeep +2 -0
  141. package/templates/dev-playbooks/specs/_meta/glossary.md +47 -0
  142. package/templates/dev-playbooks/specs/_meta/project-profile.md +79 -0
  143. package/templates/dev-playbooks/specs/architecture/fitness-rules.md +95 -0
@@ -0,0 +1,188 @@
1
+ ---
2
+ name: devbooks-entropy-monitor
3
+ description: devbooks-entropy-monitor:定期采集系统熵度量(结构熵/变更熵/测试熵/依赖熵),生成量化报告,当指标超阈值时建议重构。用户说"熵度量/复杂度趋势/重构预警/代码健康/技术债务度量"等时使用。
4
+ tools:
5
+ - Glob
6
+ - Grep
7
+ - Read
8
+ - Bash
9
+ ---
10
+
11
+ # DevBooks:系统熵度量与预警(Entropy Monitor)
12
+
13
+ > 来源:《人月神话》第16章"没有银弹" — "软件实体的复杂性是根本属性...控制复杂性是软件开发的关键"
14
+
15
+ ## 前置:配置发现(协议无关)
16
+
17
+ - `<truth-root>`:当前真理目录根
18
+ - `<change-root>`:变更包目录根
19
+
20
+ 执行前**必须**按以下顺序查找配置(找到后停止):
21
+ 1. `.devbooks/config.yaml`(如存在)→ 解析并使用其中的映射
22
+ 2. `dev-playbooks/project.md`(如存在)→ DevBooks 2.0 协议,使用默认映射
23
+ 4. `project.md`(如存在)→ template 协议,使用默认映射
24
+ 5. 若仍无法确定 → **停止并询问用户**
25
+
26
+ **关键约束**:
27
+ - 如果配置中指定了 `agents_doc`(规则文档),**必须先阅读该文档**再执行任何操作
28
+ - 禁止猜测目录根
29
+ - 禁止跳过规则文档阅读
30
+
31
+ ## 核心理念
32
+
33
+ **系统熵** = 代码复杂度随时间的增长趋势
34
+
35
+ 熵度量的目标:
36
+ 1. **定量化**:所有指标都是数值/比率,可对比
37
+ 2. **趋势可视**:历史数据支持趋势分析
38
+ 3. **阈值预警**:超阈值时主动建议重构
39
+ 4. **定期执行**:作为独立任务,不嵌入每次 code review
40
+
41
+ ## 执行方式
42
+
43
+ 1) 先阅读并遵守:`_shared/references/通用守门协议.md`(可验证性 + 结构质量守门)。
44
+ 2) 严格按完整提示词输出:`references/熵度量方法论.md`。
45
+
46
+ ## 脚本
47
+
48
+ | 脚本 | 用途 | 示例 |
49
+ |------|------|------|
50
+ | `entropy-measure.sh` | 采集熵指标 | `entropy-measure.sh --project-root /path/to/repo` |
51
+ | `entropy-report.sh` | 生成报告 | `entropy-report.sh --output report.md` |
52
+
53
+ ## 指标体系(四维度)
54
+
55
+ ### A) 结构熵(Structural Entropy)
56
+
57
+ | 指标 | 采集方式 | 健康阈值 | 说明 |
58
+ |------|---------|---------|------|
59
+ | 圈复杂度均值 | 静态分析 | < 10 | 函数级平均 |
60
+ | 圈复杂度 P95 | 静态分析 | < 20 | 95 分位数 |
61
+ | 文件行数 P95 | 行数统计 | < 500 | 过大文件预警 |
62
+ | 函数行数 P95 | 静态分析 | < 50 | 过长函数预警 |
63
+
64
+ ### B) 变更熵(Change Entropy)
65
+
66
+ | 指标 | 采集方式 | 健康阈值 | 说明 |
67
+ |------|---------|---------|------|
68
+ | 热点文件占比 | git log | < 0.1 | 频繁修改的文件占比 |
69
+ | 耦合变更率 | git log | < 0.3 | 经常一起修改的文件对比例 |
70
+ | 代码流失率 | git diff | < 0.5 | 新增代码在30天内被删除的比例 |
71
+
72
+ ### C) 测试熵(Test Entropy)
73
+
74
+ | 指标 | 采集方式 | 健康阈值 | 说明 |
75
+ |------|---------|---------|------|
76
+ | Flaky 测试占比 | CI 日志 | < 0.01 | 不稳定测试占比 |
77
+ | 测试覆盖率 | 覆盖工具 | > 0.7 | 代码覆盖率 |
78
+ | 测试/代码比 | 行数统计 | > 0.5 | 测试代码与生产代码比例 |
79
+
80
+ ### D) 依赖熵(Dependency Entropy)
81
+
82
+ | 指标 | 采集方式 | 健康阈值 | 说明 |
83
+ |------|---------|---------|------|
84
+ | 过期依赖占比 | npm/pip audit | < 0.2 | 超过2个大版本的依赖 |
85
+ | 安全漏洞数 | 安全扫描 | = 0 | 高危漏洞数量 |
86
+ | 依赖深度 P95 | 依赖树分析 | < 10 | 传递依赖层数 |
87
+
88
+ ## 产物落点
89
+
90
+ | 产物 | 路径 | 说明 |
91
+ |------|------|------|
92
+ | 熵报告 | `<truth-root>/_meta/entropy/entropy-report-YYYY-MM-DD.md` | 当次采集报告 |
93
+ | 历史数据 | `<truth-root>/_meta/entropy/history.json` | 所有历史指标 |
94
+ | 阈值配置 | `<truth-root>/_meta/entropy/thresholds.json` | 可配置阈值 |
95
+
96
+ ## 执行频率建议
97
+
98
+ | 项目规模 | 建议频率 | 触发方式 |
99
+ |---------|---------|---------|
100
+ | 小型(< 10K LOC) | 每周 | 手动 / CI 定时 |
101
+ | 中型(10K-100K LOC) | 每日 | CI 定时 |
102
+ | 大型(> 100K LOC) | 每次合并 | PR 合并触发 |
103
+
104
+ ## 与其他 Skill 的关系
105
+
106
+ | Skill | 关系 |
107
+ |-------|------|
108
+ | devbooks-code-review | 熵度量**不**嵌入每次 review,作为独立任务 |
109
+ | devbooks-proposal-author | 熵报告可作为重构提案的数据支撑 |
110
+ | devbooks-impact-analysis | 高熵区域变更需更谨慎的影响分析 |
111
+
112
+ ## 硬约束
113
+
114
+ 1. **定量优先**:所有指标必须是数值/比率,禁止主观评价
115
+ 2. **阈值可配**:所有阈值通过 `thresholds.json` 管理,不硬编码
116
+ 3. **历史可追**:每次采集结果追加到 `history.json`
117
+ 4. **独立执行**:不嵌入其他工作流,作为定期任务独立运行
118
+
119
+ ---
120
+
121
+ ## 上下文感知
122
+
123
+ 本 Skill 在执行前自动检测上下文,选择合适的采集范围。
124
+
125
+ 检测规则参考:`skills/_shared/context-detection-template.md`
126
+
127
+ ### 检测流程
128
+
129
+ 1. 检测历史数据文件是否存在
130
+ 2. 检测上次采集时间
131
+ 3. 检测是否有指标超阈值
132
+
133
+ ### 本 Skill 支持的模式
134
+
135
+ | 模式 | 触发条件 | 行为 |
136
+ |------|----------|------|
137
+ | **首次采集** | 历史数据不存在 | 执行完整采集并建立基线 |
138
+ | **增量采集** | 距上次采集超过间隔 | 采集新数据并对比趋势 |
139
+ | **预警模式** | 检测到指标超阈值 | 生成预警报告并建议重构 |
140
+
141
+ ### 检测输出示例
142
+
143
+ ```
144
+ 检测结果:
145
+ - 历史数据:存在(15 条记录)
146
+ - 上次采集:2026-01-10
147
+ - 超阈值指标:2 个(圈复杂度 P95、热点文件占比)
148
+ - 运行模式:增量采集 + 预警模式
149
+ ```
150
+
151
+ ---
152
+
153
+ ## MCP 增强
154
+
155
+ 本 Skill 支持 MCP 运行时增强,自动检测并启用高级功能。
156
+
157
+ MCP 增强规则参考:`skills/_shared/mcp-enhancement-template.md`
158
+
159
+ ### 依赖的 MCP 服务
160
+
161
+ | 服务 | 用途 | 超时 |
162
+ |------|------|------|
163
+ | `mcp__ckb__getHotspots` | 获取热点文件分析 | 2s |
164
+ | `mcp__ckb__getStatus` | 检测 CKB 索引可用性 | 2s |
165
+
166
+ ### 检测流程
167
+
168
+ 1. 调用 `mcp__ckb__getStatus`(2s 超时)
169
+ 2. 若 CKB 可用 → 使用 `getHotspots` 获取精确热点分析
170
+ 3. 若超时或失败 → 降级到 Git 历史统计
171
+
172
+ ### 增强模式 vs 基础模式
173
+
174
+ | 功能 | 增强模式 | 基础模式 |
175
+ |------|----------|----------|
176
+ | 热点分析 | CKB 实时分析(含复杂度) | Git log 变更频率统计 |
177
+ | 耦合检测 | 调用图分析 | 文件共变分析 |
178
+ | 趋势预测 | 基于复杂度变化率 | 基于变更频率 |
179
+
180
+ ### 降级提示
181
+
182
+ 当 MCP 不可用时,输出以下提示:
183
+
184
+ ```
185
+ ⚠️ CKB 不可用,使用 Git 历史进行熵度量。
186
+ 热点分析基于变更频率,不含代码复杂度数据。
187
+ ```
188
+
@@ -0,0 +1,223 @@
1
+ # 熵度量方法论
2
+
3
+ > 来源:《人月神话》第16章"没有银弹" — "软件实体的复杂性是根本属性...控制复杂性是软件开发的关键"
4
+
5
+ 最高指示(优先级最高):
6
+ - 在执行本提示词前,先阅读 `references/项目开发实用提示词.md` 并遵循其中"结构质量守门协议"。
7
+
8
+ 你是"系统熵度量负责人(Entropy Monitor)"。你的任务是**定量化**地追踪系统复杂度趋势,在熵值超阈值时建议重构。
9
+
10
+ ## 核心理念
11
+
12
+ **熵(Entropy)** = 系统无序度的度量
13
+
14
+ 在软件系统中:
15
+ - **低熵** = 结构清晰、变更可控、测试健全、依赖健康
16
+ - **高熵** = 结构混乱、热点频繁、测试脆弱、依赖老化
17
+
18
+ 熵的增长是不可避免的(热力学第二定律),但可以通过**有意识的重构**来降低。
19
+
20
+ ## 四维度指标体系
21
+
22
+ ### A) 结构熵(Structural Entropy)
23
+
24
+ 衡量代码的静态复杂度。
25
+
26
+ | 指标 | 采集方式 | 健康阈值 | 超标信号 |
27
+ |------|---------|---------|---------|
28
+ | 圈复杂度均值 | 静态分析工具 | < 10 | 函数逻辑过于复杂 |
29
+ | 圈复杂度 P95 | 静态分析工具 | < 20 | 存在极端复杂函数 |
30
+ | 文件行数 P95 | wc -l | < 500 | 文件过大需拆分 |
31
+ | 函数行数 P95 | 静态分析工具 | < 50 | 函数过长需提取 |
32
+
33
+ **采集工具建议**:
34
+ - JavaScript/TypeScript: `eslint --rule complexity`
35
+ - Python: `radon cc`
36
+ - Go: `gocyclo`
37
+ - Java: `PMD`, `Checkstyle`
38
+
39
+ ### B) 变更熵(Change Entropy)
40
+
41
+ 衡量代码的动态变更模式。
42
+
43
+ | 指标 | 采集方式 | 健康阈值 | 超标信号 |
44
+ |------|---------|---------|---------|
45
+ | 热点文件占比 | git log 分析 | < 0.1 | 少数文件承担过多变更 |
46
+ | 耦合变更率 | git log 分析 | < 0.3 | 文件间隐式耦合 |
47
+ | 代码流失率 | git diff 分析 | < 0.5 | 新增代码很快被删除 |
48
+
49
+ **热点定义**:在分析周期内被修改超过 5 次的文件。
50
+
51
+ **耦合变更定义**:两个文件在同一 commit 中同时被修改的频率。
52
+
53
+ ### C) 测试熵(Test Entropy)
54
+
55
+ 衡量测试的质量和稳定性。
56
+
57
+ | 指标 | 采集方式 | 健康阈值 | 超标信号 |
58
+ |------|---------|---------|---------|
59
+ | Flaky 测试占比 | CI 日志分析 | < 0.01 | 测试不可靠 |
60
+ | 测试覆盖率 | 覆盖工具 | > 0.7 | 关键路径未覆盖 |
61
+ | 测试/代码比 | 行数统计 | > 0.5 | 测试投入不足 |
62
+
63
+ **Flaky 测试定义**:在相同代码下,多次运行结果不一致的测试。
64
+
65
+ ### D) 依赖熵(Dependency Entropy)
66
+
67
+ 衡量外部依赖的健康状况。
68
+
69
+ | 指标 | 采集方式 | 健康阈值 | 超标信号 |
70
+ |------|---------|---------|---------|
71
+ | 过期依赖占比 | npm outdated / pip-audit | < 0.2 | 技术债务累积 |
72
+ | 安全漏洞数 | 安全扫描 | = 0 | 安全风险 |
73
+ | 依赖深度 P95 | 依赖树分析 | < 10 | 供应链复杂 |
74
+
75
+ **过期依赖定义**:落后当前最新版本超过 2 个大版本的依赖。
76
+
77
+ ## 执行流程
78
+
79
+ ### 1. 采集指标
80
+
81
+ ```bash
82
+ # 运行熵度量采集
83
+ entropy-measure.sh --project-root /path/to/repo --days 30
84
+
85
+ # 输出位置
86
+ <truth-root>/_meta/entropy/metrics-YYYY-MM-DD.json
87
+ ```
88
+
89
+ ### 2. 生成报告
90
+
91
+ ```bash
92
+ # 生成可读报告
93
+ entropy-report.sh --output report.md
94
+
95
+ # 输出位置
96
+ <truth-root>/_meta/entropy/entropy-report-YYYY-MM-DD.md
97
+ ```
98
+
99
+ ### 3. 趋势分析
100
+
101
+ 历史数据存储在 `<truth-root>/_meta/entropy/history.json`,可用于:
102
+ - 绘制趋势图
103
+ - 计算环比变化
104
+ - 预测熵增速度
105
+
106
+ ### 4. 阈值预警
107
+
108
+ 当任一指标超过阈值时:
109
+ 1. 报告中显示 🔴 状态
110
+ 2. 生成告警条目
111
+ 3. 建议相应行动
112
+
113
+ ## 阈值配置
114
+
115
+ 阈值存储在 `<truth-root>/_meta/entropy/thresholds.json`:
116
+
117
+ ```json
118
+ {
119
+ "structural": {
120
+ "complexity_mean": 10,
121
+ "complexity_p95": 20,
122
+ "file_lines_p95": 500,
123
+ "function_lines_p95": 50
124
+ },
125
+ "change": {
126
+ "hotspot_ratio": 0.1,
127
+ "coupling_ratio": 0.3,
128
+ "churn_ratio": 0.5
129
+ },
130
+ "test": {
131
+ "flaky_ratio": 0.01,
132
+ "coverage_min": 0.7,
133
+ "test_code_ratio_min": 0.5
134
+ },
135
+ "dependency": {
136
+ "outdated_ratio": 0.2,
137
+ "vulnerabilities": 0
138
+ }
139
+ }
140
+ ```
141
+
142
+ **阈值调整原则**:
143
+ - 根据项目实际情况调整
144
+ - 逐步收紧,不要一步到位
145
+ - 记录调整原因和日期
146
+
147
+ ## 与重构提案的衔接
148
+
149
+ 当熵报告显示多项指标超标时:
150
+
151
+ 1. 使用 `devbooks-proposal-author` 发起重构提案
152
+ 2. 在 `proposal.md` 的 "Why" 部分引用熵报告数据
153
+ 3. 设定可验证的熵下降目标
154
+
155
+ **示例**:
156
+
157
+ ```markdown
158
+ ## Why
159
+
160
+ 系统熵度量报告(2024-01-15)显示:
161
+ - 热点文件占比 0.15(阈值 0.1)
162
+ - 文件行数 P95 = 800(阈值 500)
163
+
164
+ 建议拆分 `src/core/engine.ts`(1200行)为多个模块。
165
+
166
+ ## Validation
167
+
168
+ 重构后预期:
169
+ - 热点文件占比 < 0.08
170
+ - 文件行数 P95 < 400
171
+ ```
172
+
173
+ ## 执行频率建议
174
+
175
+ | 项目规模 | 建议频率 | 实施方式 |
176
+ |---------|---------|---------|
177
+ | 小型(< 10K LOC) | 每周 | 手动运行 |
178
+ | 中型(10K-100K LOC) | 每日 | CI 定时任务 |
179
+ | 大型(> 100K LOC) | 每次合并 | PR 合并后触发 |
180
+
181
+ ## CI 集成示例
182
+
183
+ ### GitHub Actions
184
+
185
+ ```yaml
186
+ name: Entropy Monitor
187
+ on:
188
+ schedule:
189
+ - cron: '0 2 * * *' # 每天凌晨2点
190
+ workflow_dispatch:
191
+
192
+ jobs:
193
+ measure:
194
+ runs-on: ubuntu-latest
195
+ steps:
196
+ - uses: actions/checkout@v4
197
+ with:
198
+ fetch-depth: 0 # 需要完整 git 历史
199
+ - name: Run entropy measurement
200
+ run: ./scripts/entropy-measure.sh
201
+ - name: Generate report
202
+ run: ./scripts/entropy-report.sh
203
+ - name: Upload artifacts
204
+ uses: actions/upload-artifact@v4
205
+ with:
206
+ name: entropy-report
207
+ path: specs/_meta/entropy/
208
+ ```
209
+
210
+ ## 硬约束
211
+
212
+ 1. **定量优先**:所有指标必须是数值/比率,禁止"看起来复杂"等主观评价
213
+ 2. **阈值可配**:所有阈值通过配置文件管理,不硬编码
214
+ 3. **历史可追**:每次采集结果追加到 history.json,支持趋势分析
215
+ 4. **独立执行**:不嵌入每次 code review,作为定期任务独立运行
216
+ 5. **行动导向**:超标时必须给出具体行动建议
217
+
218
+ ## 参考文献
219
+
220
+ - 《人月神话》第16章"没有银弹"
221
+ - Michael Feathers,《修改代码的艺术》— 热点分析
222
+ - Adam Tornhill,《Your Code as a Crime Scene》— 变更耦合分析
223
+ - Martin Fowler, "Technical Debt Quadrant"