loomgraph 0.11.1__py3-none-any.whl

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 (58) hide show
  1. loomgraph/__init__.py +40 -0
  2. loomgraph/_skills/loomgraph-debt-radar/SKILL.md +506 -0
  3. loomgraph/_skills/loomgraph-evolution/SKILL.md +216 -0
  4. loomgraph/_skills/loomgraph-init/SKILL.md +57 -0
  5. loomgraph/_skills/loomgraph-setup/SKILL.md +233 -0
  6. loomgraph/_skills/loomgraph-sync-advisor/SKILL.md +531 -0
  7. loomgraph/chunking/__init__.py +1 -0
  8. loomgraph/cli/__init__.py +5 -0
  9. loomgraph/cli/_analysis.py +488 -0
  10. loomgraph/cli/_common.py +278 -0
  11. loomgraph/cli/_debt.py +281 -0
  12. loomgraph/cli/_deps_check.py +76 -0
  13. loomgraph/cli/_hooks.py +221 -0
  14. loomgraph/cli/_indexing.py +835 -0
  15. loomgraph/cli/_search.py +304 -0
  16. loomgraph/cli/_setup.py +195 -0
  17. loomgraph/cli/_workspace.py +197 -0
  18. loomgraph/cli/main.py +54 -0
  19. loomgraph/core/__init__.py +65 -0
  20. loomgraph/core/adapter.py +78 -0
  21. loomgraph/core/compare.py +168 -0
  22. loomgraph/core/config.py +255 -0
  23. loomgraph/core/debt_analyzer.py +855 -0
  24. loomgraph/core/deps.py +159 -0
  25. loomgraph/core/git.py +229 -0
  26. loomgraph/core/git_metrics.py +228 -0
  27. loomgraph/core/git_parser.py +253 -0
  28. loomgraph/core/impact/__init__.py +33 -0
  29. loomgraph/core/impact/analyzer.py +354 -0
  30. loomgraph/core/impact/extractor.py +244 -0
  31. loomgraph/core/impact/git_parser.py +175 -0
  32. loomgraph/core/impact/models.py +120 -0
  33. loomgraph/core/impact/risk.py +238 -0
  34. loomgraph/core/indexer.py +277 -0
  35. loomgraph/core/injector.py +335 -0
  36. loomgraph/core/mapper.py +257 -0
  37. loomgraph/core/models.py +311 -0
  38. loomgraph/core/overview.py +149 -0
  39. loomgraph/core/similar.py +121 -0
  40. loomgraph/core/topology.py +695 -0
  41. loomgraph/core/trends.py +438 -0
  42. loomgraph/embedding/__init__.py +18 -0
  43. loomgraph/embedding/base.py +59 -0
  44. loomgraph/embedding/direct.py +127 -0
  45. loomgraph/graph/__init__.py +1 -0
  46. loomgraph/llm/__init__.py +17 -0
  47. loomgraph/llm/base.py +18 -0
  48. loomgraph/llm/direct.py +78 -0
  49. loomgraph/mcp/__init__.py +1 -0
  50. loomgraph/storage/__init__.py +18 -0
  51. loomgraph/storage/base.py +148 -0
  52. loomgraph/storage/factory.py +87 -0
  53. loomgraph/storage/sqlite_store.py +720 -0
  54. loomgraph-0.11.1.dist-info/METADATA +226 -0
  55. loomgraph-0.11.1.dist-info/RECORD +58 -0
  56. loomgraph-0.11.1.dist-info/WHEEL +4 -0
  57. loomgraph-0.11.1.dist-info/entry_points.txt +2 -0
  58. loomgraph-0.11.1.dist-info/licenses/LICENSE +21 -0
loomgraph/__init__.py ADDED
@@ -0,0 +1,40 @@
1
+ """
2
+ LoomGraph: Enterprise Code Intelligence Engine
3
+
4
+ Code understanding + retrieval over a local SQLite + sqlite-vec knowledge
5
+ graph, with pluggable OpenAI-compatible LLM and embedding providers.
6
+
7
+ Usage:
8
+ from loomgraph import Settings
9
+ from loomgraph.storage import create_graph_store
10
+
11
+ store = await create_graph_store(workspace="myproj")
12
+ # ... use store.get_all_entities() / search_similar() / ...
13
+ """
14
+
15
+ from importlib.metadata import version as _pkg_version
16
+
17
+ __version__ = _pkg_version("loomgraph")
18
+ __author__ = "DreamLinx"
19
+
20
+ from loomgraph.core.config import Settings, get_settings
21
+ from loomgraph.core.indexer import index_file, index_repository, scan_code_files
22
+ from loomgraph.core.injector import inject_parse_result
23
+ from loomgraph.core.models import IndexResult, InjectResult, ParseResult
24
+
25
+ __all__ = [
26
+ # Version
27
+ "__version__",
28
+ # Config
29
+ "Settings",
30
+ "get_settings",
31
+ # Indexing
32
+ "scan_code_files",
33
+ "index_repository",
34
+ "index_file",
35
+ "inject_parse_result",
36
+ # Models
37
+ "ParseResult",
38
+ "InjectResult",
39
+ "IndexResult",
40
+ ]
@@ -0,0 +1,506 @@
1
+ ---
2
+ name: loomgraph-debt-radar
3
+ description: Generate a comprehensive technical debt audit report combining static analysis, knowledge graph topology, Git history metrics, and trend prediction
4
+ disable-model-invocation: true
5
+ argument-hint: "[source-path]"
6
+ ---
7
+
8
+ ## 技术债务审计报告生成(v3 - 十维度全面分析)
9
+
10
+ 一键生成项目技术债务审计报告,结合 codeindex 静态分析、LoomGraph 知识图谱拓扑分析、Git 历史度量和代码腐化趋势预测。
11
+
12
+ **版本**: v3.0 (EPIC-010 增强 - 新增 Git × 时间维度)
13
+
14
+ **前置条件**:
15
+ - 项目已执行 `loomgraph index .` 完成索引
16
+ - Git 仓库(用于历史度量分析)
17
+
18
+ **参数**: `source-path` — 要分析的源码目录,默认 `./src`
19
+
20
+ ---
21
+
22
+ ### 前置检查
23
+
24
+ 验证必要工具可用:
25
+
26
+ ```bash
27
+ codeindex --version 2>/dev/null || echo '{"error": "codeindex not found", "suggestion": "pip install ai-codeindex"}'
28
+ ```
29
+
30
+ ```bash
31
+ ~/.loomgraph-venv/bin/loomgraph version 2>/dev/null || loomgraph version 2>/dev/null || echo '{"error": "loomgraph not found"}'
32
+ ```
33
+
34
+ ```bash
35
+ git --version 2>/dev/null || echo '{"warning": "git not found", "impact": "Git metrics and trend analysis will be skipped"}'
36
+ ```
37
+
38
+ 如果 codeindex 或 loomgraph 不可用,提示用户安装后重试,中止流程。
39
+ 如果 git 不可用,仅警告(Git 度量和趋势分析将跳过)。
40
+
41
+ ---
42
+
43
+ ### Step 1: 三维度债务分析(整合 Git 历史)
44
+
45
+ **新增(v3)**: 使用 `loomgraph debt --with-git` 一次性获取三维度评分(质量 + 拓扑 + Git)。
46
+
47
+ ```bash
48
+ # 先运行 codeindex 生成静态分析数据
49
+ codeindex tech-debt {source-path} --format json --recursive > /tmp/debt_raw.json 2>/dev/null
50
+
51
+ # 调用 loomgraph debt 整合三维度(如果 Git 可用)
52
+ if git rev-parse --git-dir >/dev/null 2>&1; then
53
+ loomgraph debt --codeindex-data /tmp/debt_raw.json --with-git --git-since "3 months"
54
+ else
55
+ # 降级:仅静态 + 拓扑分析
56
+ loomgraph debt --codeindex-data /tmp/debt_raw.json
57
+ fi
58
+ ```
59
+
60
+ **解读指引**:
61
+ - `overall_health`: 整体健康分(0-100,越高越健康)
62
+ - 有 Git: `(quality + topology + git) / 3`
63
+ - 无 Git: `(quality + topology) / 2`
64
+ - `issues`: 债务问题列表,**新增 3 大类**(v3):
65
+ - `critical_hotspot` — 高频变更 + 高耦合(系统脆弱点)
66
+ - `knowledge_silo` — 总线因子 = 1(知识孤岛)
67
+ - `defect_magnet` — Bug fix ratio > 30%(缺陷磁铁)
68
+ - `severity`: critical > warning > info
69
+
70
+ 将完整 JSON 结果保存为变量 `DEBT_DATA`,后续步骤使用。
71
+
72
+ ---
73
+
74
+ ### Step 2: 模块依赖图
75
+
76
+ 获取模块间依赖关系,识别耦合问题:
77
+
78
+ ```bash
79
+ loomgraph deps --depth 2
80
+ ```
81
+
82
+ **解读指引**:
83
+ - 关注 `fan_in` 高的模块 → 被大量依赖,修改风险高
84
+ - 关注 `fan_out` 高的模块 → 依赖过多,职责可能不清
85
+ - 关注双向依赖 → 循环依赖,必须解耦
86
+
87
+ 将完整 JSON 结果保存为变量 `DEPS_DATA`,后续步骤使用。
88
+
89
+ ---
90
+
91
+ ### Step 2.5: Git 历史度量(新增 v3)
92
+
93
+ **新增(v3)**: 分析 Git 历史,识别热点文件、知识孤岛和缺陷磁铁。
94
+
95
+ ```bash
96
+ # 仅在 Git 仓库中执行
97
+ if git rev-parse --git-dir >/dev/null 2>&1; then
98
+ loomgraph git-metrics . --since "3 months"
99
+ else
100
+ echo '{"warning": "Not a git repository", "git_metrics": null}'
101
+ fi
102
+ ```
103
+
104
+ **解读指引**:
105
+ - `hotspots`: 热点文件列表(按 hotspot_score 排序)
106
+ - `hotspot_score` = change_frequency × log10(churn + 1) × 10
107
+ - Score > 80: 高风险区域,优先重构
108
+ - `bus_factor`: 知识孤岛列表
109
+ - `risk_level: critical`: 只有 1 人维护(100% 提交)
110
+ - `risk_level: high`: 2 人维护但主要贡献者 > 70%
111
+ - `summary.total_commits`: 分析的总提交数
112
+ - `summary.hotspots`: 热点文件数量
113
+
114
+ 将完整 JSON 结果保存为变量 `GIT_METRICS_DATA`,后续步骤使用。
115
+
116
+ **注意**: 如果非 Git 仓库,`GIT_METRICS_DATA` 为 null,后续分析跳过 Git 维度。
117
+
118
+ ---
119
+
120
+ ### Step 3: 模块概览
121
+
122
+ 获取项目模块功能概览,理解各模块职责:
123
+
124
+ ```bash
125
+ loomgraph overview --no-summary
126
+ ```
127
+
128
+ **解读指引**:
129
+ - 结合 Step 1 的文件级问题,判断模块整体健康度
130
+ - 识别职责不清或过于庞大的模块
131
+
132
+ 将完整 JSON 结果保存为变量 `OVERVIEW_DATA`,后续步骤使用。
133
+
134
+ ---
135
+
136
+ ### Step 4: Workspace 统计
137
+
138
+ 获取当前索引的 workspace 统计信息:
139
+
140
+ ```bash
141
+ loomgraph workspace info
142
+ ```
143
+
144
+ **解读指引**:
145
+ - `entity_count` 和 `relation_count` 反映项目规模
146
+ - 结合 Step 1 的债务密度,评估整体债务占比
147
+
148
+ 将完整 JSON 结果保存为变量 `WORKSPACE_DATA`,后续步骤使用。
149
+
150
+ ---
151
+
152
+ ### Step 5: 图谱拓扑分析
153
+
154
+ 分析知识图谱拓扑结构,检测结构级代码坏味道:
155
+
156
+ ```bash
157
+ loomgraph topology
158
+ ```
159
+
160
+ **解读指引**:
161
+ - `topology_score` → 拓扑健康分 (0-100,越高越健康)
162
+ - `orphans` → 孤岛实体(0 callers + 0 callees),可能是死代码或解析遗漏
163
+ - `hubs` → Hub 脆弱点(高 in-degree),修改会产生广泛涟漪
164
+ - `god_functions` → 上帝函数(高 out-degree),职责过重
165
+ - `placeholder_modules` → 占位模块(仅含 __init__)
166
+ - `coupling.density` → 耦合密度(跨模块关系占比)
167
+
168
+ 将完整 JSON 结果保存为变量 `TOPOLOGY_DATA`,后续步骤使用。
169
+
170
+ ---
171
+
172
+ ### Step 6: 索引新鲜度检查
173
+
174
+ 验证知识图谱中的 source_id 是否仍然指向存在的文件:
175
+
176
+ ```bash
177
+ loomgraph check
178
+ ```
179
+
180
+ **解读指引**:
181
+ - `freshness_ratio` → 新鲜度比率 (1.0 = 全部有效)
182
+ - `stale_entries` → 过时条目(文件已删除或重构导致路径变更)
183
+ - 新鲜度 < 80% 时建议执行 `loomgraph index --clear .` 重建索引
184
+
185
+ 将完整 JSON 结果保存为变量 `CHECK_DATA`,后续步骤使用。
186
+
187
+ ---
188
+
189
+ ### Step 7: 代码腐化趋势分析(新增 v3 - 可选)
190
+
191
+ **新增(v3)**: 检测关键文件的复杂度随时间增长趋势。
192
+
193
+ **前提条件**: 需要至少 3 次历史快照(通过多次运行 `loomgraph debt` 积累)。
194
+
195
+ ```bash
196
+ # 尝试分析 Step 2.5 中识别的热点文件的趋势
197
+ if [ -n "$GIT_METRICS_DATA" ]; then
198
+ # 获取 top 3 热点文件
199
+ HOTSPOT_FILES=$(echo "$GIT_METRICS_DATA" | jq -r '.hotspots[:3][].file')
200
+
201
+ for file in $HOTSPOT_FILES; do
202
+ # 尝试分析趋势(如果快照不足会返回错误,忽略即可)
203
+ loomgraph trends --entity "$file" --metric complexity --months 6 2>/dev/null || echo "{\"entity\": \"$file\", \"error\": \"insufficient snapshots\"}"
204
+ done
205
+ fi
206
+ ```
207
+
208
+ **解读指引**:
209
+ - `trend_direction`:
210
+ - `increasing`: 复杂度上升(代码正在腐化)
211
+ - `stable`: 保持稳定
212
+ - `decreasing`: 复杂度下降(重构改善)
213
+ - `slope`: 每月变化率(正值 = 上升,负值 = 下降)
214
+ - `forecast`: 预测下个月的复杂度
215
+ - `alert`: 自动预警(月增长率 >15% 时触发)
216
+ - `chart`: ASCII 趋势图
217
+
218
+ 将所有趋势分析结果合并为变量 `TRENDS_DATA`(JSON 数组)。
219
+
220
+ **注意**: 如果快照不足(< 3 次),趋势分析会返回错误,这是正常的。报告中注明"需积累历史数据"。
221
+
222
+ ---
223
+
224
+ ### Step 8: LLM 综合分析
225
+
226
+ 将 Step 1-7 收集的所有数据汇总,生成技术债务审计报告。
227
+
228
+ **分析维度** (7 → 10 维,v3 新增 3 维):
229
+
230
+ | 维度 | 数据源 | 坏味道示例 | v3 新增 |
231
+ |------|--------|-----------|---------|
232
+ | 文件级债务 | DEBT_DATA (Step 1) | God Class, 超大文件, 高噪音比 | — |
233
+ | 依赖耦合 | DEPS_DATA (Step 2) | 循环依赖, 高 fan-out | — |
234
+ | **热点检测** | GIT_METRICS_DATA (Step 2.5) | 高频变更文件 | ✨ v3 |
235
+ | **知识孤岛** | GIT_METRICS_DATA (Step 2.5) | Bus Factor = 1 | ✨ v3 |
236
+ | **缺陷磁铁** | GIT_METRICS_DATA (Step 2.5) | Bug fix ratio > 30% | ✨ v3 |
237
+ | 职责清晰度 | OVERVIEW_DATA (Step 3) | 模块职责不清 | — |
238
+ | 拓扑健康度 | TOPOLOGY_DATA (Step 5) | 孤岛实体, Hub 脆弱, God Function | — |
239
+ | 死代码率 | TOPOLOGY_DATA.orphans (Step 5) | 未被引用的实体占比 | — |
240
+ | 耦合密度 | TOPOLOGY_DATA.coupling (Step 5) | 跨模块关系 vs 模块内关系 | — |
241
+ | 索引新鲜度 | CHECK_DATA (Step 6) | 过时的 source_id | — |
242
+
243
+ **分析要求**:
244
+
245
+ 1. **债务等级评定** (1-5,v3 更新规则):
246
+ - 1 = 健康:无 critical 问题,warning < 3,topology_score >= 80,hotspot < 3
247
+ - 2 = 轻度:无 critical,warning 3-5,topology_score >= 60,hotspot 3-5
248
+ - 3 = 中度:critical 1-2 或 warning > 5 或 topology_score < 60 或 hotspot > 5
249
+ - 4 = 重度:critical 3-5 或存在循环依赖 或 orphan_ratio > 20% 或存在 knowledge_silo (critical)
250
+ - 5 = 严重:critical > 5 或多处循环依赖 + God Class + topology_score < 40 或 hotspot > 10 且存在 knowledge_silo
251
+
252
+ 2. **模块健康度排名** (v3 更新,新增 Git 维度): 综合以下维度打分 (0-100,越高越差):
253
+ - 文件级债务(来自 Step 1): God Class +30, 超大文件 +25, 高噪音比 +15, 符号过载 +10
254
+ - 依赖耦合(来自 Step 2): 循环依赖 +25, fan_out > 5 +15, fan_in > 8 +10
255
+ - **Git 热点**(来自 Step 2.5,v3 新增): hotspot_score > 80 +25, > 60 +15, > 40 +10
256
+ - **知识孤岛**(来自 Step 2.5,v3 新增): critical risk +20, high risk +10
257
+ - **缺陷磁铁**(来自 Step 2.5,v3 新增): bug_fix_ratio > 30% +15, > 20% +10
258
+ - 职责清晰度(来自 Step 3): 根据模块描述主观评估
259
+ - 拓扑问题(来自 Step 5): orphan_ratio > 15% +20, hub(in>=15) +15, god_function(out>=20) +15, god_function(out>=10) +10
260
+ - 索引新鲜度(来自 Step 6): freshness < 80% +10, freshness < 50% +20
261
+
262
+ 3. **重构优先级** (v3 更新,新增热点+孤岛考量): 综合风险和收益排序:
263
+ - **紧急**:
264
+ - 高频热点 + God Class(易产生事故,可立即拆分)
265
+ - 知识孤岛 + critical 级文件(单点故障风险)
266
+ - **重要**:
267
+ - 循环依赖(影响范围大,需规划)
268
+ - Hub 脆弱点 + 高频变更(修改涟漪大)
269
+ - **改善**:
270
+ - 孤岛实体清理(长期收益)
271
+ - 缺陷磁铁加测试(提升质量)
272
+
273
+ **输出报告格式**:
274
+
275
+ ```markdown
276
+ # 技术债务审计报告 — {project_name}
277
+
278
+ > 生成时间: {date}
279
+ > 分析范围: {source-path}
280
+ > 工具版本: codeindex {version} + loomgraph {version}
281
+ > 分析维度: 10 维(v3 - 新增 Git 历史 + 趋势预测)
282
+
283
+ ## 概要
284
+
285
+ | 指标 | 值 |
286
+ |------|-----|
287
+ | 债务等级 | {level}/5 |
288
+ | 整体健康分 | {overall_health}/100 |
289
+ | 拓扑健康分 | {topology_score}/100 |
290
+ | 索引新鲜度 | {freshness_ratio}% |
291
+ | 高风险模块数 | {count} |
292
+ | Critical 问题数 | {critical_count} |
293
+ | Warning 问题数 | {warning_count} |
294
+ | **热点文件数** (v3) | {hotspot_count} |
295
+ | **知识孤岛数** (v3) | {silo_count} |
296
+ | 建议优先处理 | {top_module} |
297
+
298
+ ## Git 历史度量分析(v3 新增)
299
+
300
+ > 分析窗口: 最近 3 个月
301
+ > 总提交数: {total_commits}
302
+
303
+ ### 热点文件 (Top 10)
304
+
305
+ > 高频变更 + 高代码量的文件,系统脆弱点。
306
+
307
+ | 排名 | 文件 | 变更次数 | 代码行数 | 热点分 | 风险等级 |
308
+ |------|------|---------|----------|--------|---------|
309
+ | 1 | {file} | {change_freq} | {lines} | {score}/100 | {risk} |
310
+ | ... | ... | ... | ... | ... | ... |
311
+
312
+ **建议**:
313
+ - Score > 80: 立即重构(拆分模块、提取helper)
314
+ - Score 60-80: 规划重构(下个迭代)
315
+ - Score 40-60: 监控(增加测试覆盖)
316
+
317
+ ### 知识孤岛 (Bus Factor < 2)
318
+
319
+ > 只有 1-2 人维护的文件,单点故障风险。
320
+
321
+ | 文件 | 主要维护者 | 贡献者数 | 所有权占比 | 风险等级 |
322
+ |------|-----------|---------|-----------|---------|
323
+ | {file} | {owner} | {count} | {ratio}% | {risk_level} |
324
+ | ... | ... | ... | ... | ... |
325
+
326
+ **建议**:
327
+ - Critical (1 贡献者): 立即知识转移(结对编程、文档)
328
+ - High (2 贡献者, >70% 占比): 增加第三人参与
329
+
330
+ ### 缺陷磁铁 (Bug Fix Ratio > 20%)
331
+
332
+ > Bug fix 占比高的文件,质量脆弱点。
333
+
334
+ | 文件 | 总提交数 | Bug Fix 数 | Bug Fix 占比 | 建议 |
335
+ |------|---------|-----------|-------------|------|
336
+ | {file} | {total} | {bug_count} | {ratio}% | {suggestion} |
337
+ | ... | ... | ... | ... | ... |
338
+
339
+ **建议**:
340
+ - Ratio > 30%: 增加单元测试 + 代码审查
341
+ - Ratio 20-30%: 重构复杂逻辑
342
+
343
+ ## 文件级问题清单
344
+
345
+ 按严重度排序,列出所有 codeindex tech-debt 检出的问题:
346
+
347
+ | 严重度 | 文件 | 问题类型 | 详情 | 建议 |
348
+ |--------|------|----------|------|------|
349
+ | ... | ... | ... | ... | ... |
350
+
351
+ ## 图谱拓扑分析
352
+
353
+ ### 拓扑健康分
354
+
355
+ | 指标 | 值 | 评级 |
356
+ |------|-----|------|
357
+ | 拓扑健康分 | {score}/100 | {rating} |
358
+ | 孤岛实体占比 | {orphan_ratio}% | {status} |
359
+ | Hub 脆弱点 | {hub_count} 个 | {status} |
360
+ | 上帝函数 | {god_count} 个 | {status} |
361
+ | 耦合密度 | {coupling_density} | {status} |
362
+
363
+ ### 孤岛实体 (潜在死代码)
364
+
365
+ > 以下实体在知识图谱中没有任何调用关系(0 callers + 0 callees),
366
+ > 可能是死代码、仅被测试引用、或解析遗漏。
367
+
368
+ | 实体 | 类型 | 文件 | 建议 |
369
+ |------|------|------|------|
370
+ | {entity} | {type} | {source_id} | {suggestion} |
371
+
372
+ ### Hub 实体 (单点故障风险)
373
+
374
+ > 被大量其他实体依赖的实体。修改它们会产生广泛的涟漪效应。
375
+
376
+ | 实体 | 类型 | 被依赖数 | 主要调用者 | 风险等级 |
377
+ |------|------|----------|-----------|---------|
378
+
379
+ ### 上帝函数 (职责过重)
380
+
381
+ > 调用大量其他实体的函数,可能承担了过多职责。
382
+
383
+ | 实体 | 类型 | 调用数 | 主要调用目标 | 建议 |
384
+ |------|------|--------|-------------|------|
385
+
386
+ ## 代码腐化趋势预测(v3 新增 - 可选)
387
+
388
+ > **前提**: 需要至少 3 次历史快照(通过多次运行 `loomgraph debt` 积累)。
389
+ > **状态**: {trend_analysis_status}
390
+
391
+ {如果有足够快照}
392
+
393
+ ### 热点文件趋势分析
394
+
395
+ | 文件 | 当前复杂度 | 趋势 | 月增长率 | 下月预测 | 预警 |
396
+ |------|-----------|------|---------|----------|------|
397
+ | {file} | {current} | {trend_direction} | {slope}/月 | {forecast} | {alert} |
398
+ | ... | ... | ... | ... | ... | ... |
399
+
400
+ **ASCII 趋势图示例**:
401
+ ```
402
+ src/cli/_analysis.py - Complexity Trend
403
+
404
+ Trend: INCREASING
405
+ Slope: +3.50/month (+0.117/day), R²: 0.920
406
+
407
+ 56 │ ●
408
+ 52 │ ● ─
409
+ 48 │ ● ─
410
+ 44 │ ● ─
411
+ 40 │ ● ─
412
+ 36 │ ●
413
+ └────────────────────────────────────────────
414
+ 2024-09 2024-11 2025-01 2025-03
415
+
416
+ ⚠️ Rapid complexity growth detected: +25.0% projected in next month.
417
+ Current: 45, Forecast: 56. Consider refactoring to prevent further deterioration.
418
+ ```
419
+
420
+ {如果快照不足}
421
+
422
+ > ℹ️ 趋势分析需要至少 3 次历史快照。请定期运行 `loomgraph debt` 积累数据(建议每周一次)。
423
+ > 已保存本次快照到 `~/.loomgraph/metrics-history/`。
424
+
425
+ ## 索引新鲜度
426
+
427
+ | 指标 | 值 |
428
+ |------|-----|
429
+ | Source ID 总数 | {total} |
430
+ | 有效 | {valid} |
431
+ | 过时 | {stale} |
432
+ | 新鲜度 | {ratio}% |
433
+
434
+ > {freshness_advice}
435
+
436
+ ## 模块健康度排名
437
+
438
+ | 排名 | 模块 | 债务分 | 主要问题 | 建议 |
439
+ |------|------|--------|----------|------|
440
+ | 1 | {module} | {score}/100 | {issues} | {suggestion} |
441
+ | ... | ... | ... | ... | ... |
442
+
443
+ ## 依赖结构问题
444
+
445
+ ### 循环依赖
446
+ - {module_a} <-> {module_b}: {description}
447
+
448
+ ### 高耦合模块
449
+ - {module} (fan_in: {n}, 被 {n} 个模块依赖): {risk}
450
+
451
+ ### 高扇出模块
452
+ - {module} (fan_out: {n}, 依赖 {n} 个模块): {risk}
453
+
454
+ ## 重构优先级建议(v3 更新)
455
+
456
+ ### 紧急 (可立即执行)
457
+ 1. **{action}**: {reason} — 影响范围: {scope} — 风险: {risk}
458
+ - 示例: 拆分热点文件 src/cli/_analysis.py (hotspot_score: 87, God Class: 52 methods)
459
+
460
+ ### 重要 (需规划)
461
+ 1. **{action}**: {reason} — 影响范围: {scope} — 风险: {risk}
462
+ - 示例: 解耦循环依赖 core.injector <-> core.mapper
463
+
464
+ ### 改善 (长期收益)
465
+ 1. **{action}**: {reason} — 影响范围: {scope} — 风险: {risk}
466
+ - 示例: 清理 46 个孤岛实体(确认死代码后删除)
467
+
468
+ ## 下一步行动
469
+
470
+ 1. **立即执行**(本周):
471
+ - [ ] 重构紧急优先级项(1-3 项)
472
+ - [ ] 知识转移计划(knowledge_silo 文件)
473
+
474
+ 2. **规划执行**(下个迭代):
475
+ - [ ] 解耦循环依赖
476
+ - [ ] 重构 Hub 脆弱点
477
+
478
+ 3. **持续改善**(长期):
479
+ - [ ] 每周运行 `loomgraph debt` 积累趋势数据
480
+ - [ ] 定期清理孤岛实体
481
+ - [ ] 增加缺陷磁铁的测试覆盖
482
+
483
+ ---
484
+
485
+ **v3 更新摘要**:
486
+ - ✨ 新增 Git 历史度量分析(热点检测、知识孤岛、缺陷磁铁)
487
+ - ✨ 新增代码腐化趋势预测(线性回归 + 自动预警)
488
+ - ✨ 三维度债务评分(质量 + 拓扑 + Git)
489
+ - 📊 分析维度从 7 维升级到 10 维
490
+ - 🎯 重构优先级算法优化(新增热点+孤岛考量)
491
+ ```
492
+
493
+ ---
494
+
495
+ ## 注意事项
496
+
497
+ 1. **未索引项目**: 如果 `loomgraph deps` 或 `loomgraph overview` 返回错误,提示用户先执行 `loomgraph index .`
498
+ 2. **codeindex 未配置**: 如果 `codeindex tech-debt` 失败,提示用户先执行 `/loomgraph-setup` 配置项目
499
+ 3. **非 Git 仓库**: Git 度量和趋势分析将跳过,报告中注明"非 Git 仓库,Git 维度不可用"
500
+ 4. **快照不足**: 趋势分析需要 ≥3 次快照,首次使用会提示"需积累历史数据"
501
+ 5. **空结果处理**: 如果某个步骤返回空数据,在报告中注明"无数据"而非省略该章节
502
+ 6. **大型项目**: tech-debt 递归扫描可能耗时较长,提前告知用户
503
+ 7. **拓扑分析降级**: 如果 `loomgraph topology` 失败(LightRAG 未连接),在报告中注明"图谱拓扑数据不可用"
504
+ 8. **新鲜度检查**: `loomgraph check` 依赖当前工作目录,确保在项目根目录执行
505
+ 9. **Git 度量降级**: 如果 `loomgraph git-metrics` 失败,降级为传统分析(不影响其他维度)
506
+ 10. **趋势分析降级**: 如果 `loomgraph trends` 返回错误(快照不足),优雅降级,仅在报告中提示积累数据