8.7 KiB
项目热力图与治理图再生成指南
目的
本文件用于指导后续 AI Agent 或人工维护者,稳定地重新生成 Lime 仓库的:
- 项目热力图:看“哪里大、哪里热、什么时候热”
- 治理图:看“哪些模块最值得优先做收口治理”
这里的“治理图”不是独立脚本,而是 project-heatmap.mjs 输出 HTML 报告中的 治理候选 板块。
适用场景
当用户出现以下意图时,优先使用本流程:
- “重新生成项目热力图”
- “看一下现在仓库哪些地方最热”
- “看一下哪些模块最该治理”
- “重新做治理图 / 治理候选榜”
- “帮我打开上次那份热力图报告”
如果用户不是要看仓库演化,而是要看 legacy / compat / deprecated / dead 的真实边界,请同时阅读:
docs/aiprompts/governance.md
热力图负责 发现热点和治理优先级,治理报告负责 确认边界分类和封老路状态。
相关文件
- 脚本:
scripts/project-heatmap.mjs - 文件 / 页面治理图谱:
scripts/governance-graph.mjs - 命令入口:
npm run heatmap:project - 命令入口(带连线治理图谱):
npm run governance:graph - 治理规则:
docs/aiprompts/governance.md - 治理扫描:
npm run governance:legacy-report
输出物说明
每次生成都会产出两个文件:
index.html:本地静态可视化报告project-heatmap.json:聚合后的结构化数据
报告中主要看三块:
- 治理候选:综合体量、churn、密度、分散度、持续活跃度后的治理优先级
- 模块体量 + 热度:Treemap,面积代表
LOC,颜色代表churn density - 时间 × 模块热力矩阵:看某模块是不是持续发热
治理图谱 2.0 另外输出:
governance-graph.html:文件 / 页面级交互图谱(带连线、状态、signals、legacy overlay)governance-graph.json:治理图谱结构化数据
默认命令:
npm run governance:graph -- --output "./tmp/project-heatmap-governance"
补充说明:
- 图谱状态来源只认仓库内治理规则与既有治理护栏
dead-candidate、unused-file、zero-inbound只是疑似失效信号,不等于正式dead- 首期粒度是页面 / 文件,不包含函数调用图
标准操作流程
1. 先选输出目录
为了方便后续 AI、用户和不同平台复用,优先显式传 --output,不要依赖系统临时目录默认值。
推荐输出到仓库内相对目录:
npm run heatmap:project -- --output "./tmp/project-heatmap"
推荐原因:
- 路径稳定,方便后续 AI 继续打开
- 不依赖 macOS / Windows 的系统临时目录差异
- 更适合在对话里直接引用具体文件路径
2. 生成“项目热力图”
这是默认的仓库观察视角,适合先总览:
npm run heatmap:project -- --days 180 --depth 2 --top 18 --output "./tmp/project-heatmap"
含义:
--days 180:观察最近 180 天的 Git churn--depth 2:按目录深度 2 聚合,适合总览src/src-tauri/docs--top 18:矩阵中展示前 18 个热点模块
3. 生成“治理图”
如果目标是看 该治理谁,推荐使用更细一层的聚合深度:
npm run heatmap:project -- --days 30 --depth 3 --top 15 --output "./tmp/project-heatmap-governance"
推荐参数解释:
--days 30:更适合看近期治理优先级,而不是长期历史噪音--depth 3:能把src/components/agent、src-tauri/src/commands这种真实模块层级打出来--top 15:矩阵和候选榜更聚焦
4. 配套生成治理扫描结果
只看热力图还不够。要确认哪些路径已经被收口、哪些还是 compat / deprecated,还要跑:
npm run governance:legacy-report
用途:
- 确认 legacy / compat / deprecated / dead 边界
- 验证旧入口是否被重新引用
- 判断是不是已经封住老路
5. 打开报告
macOS
open "./tmp/project-heatmap-governance/index.html"
Windows PowerShell
Start-Process ".\\tmp\\project-heatmap-governance\\index.html"
通用降级方式
如果当前 AI 环境不能直接打开 GUI:
- 返回 HTML 文件路径
- 返回
project-heatmap.json路径 - 告诉用户“可直接在文件管理器中双击打开
index.html”
补充说明:
- 如果 AI 运行在受限沙箱或审批模式下,
open/Start-Process这类 GUI 打开动作可能需要用户批准 - 如果无法直接打开,不要卡住流程;优先把可点击文件路径返回给用户
推荐命令模板
只做总览
npm run heatmap:project -- --days 180 --depth 2 --top 18 --output "./tmp/project-heatmap"
只看治理优先级
npm run heatmap:project -- --days 30 --depth 3 --top 15 --output "./tmp/project-heatmap-governance"
npm run governance:legacy-report
同时保留两份报告
npm run heatmap:project -- --days 180 --depth 2 --top 18 --output "./tmp/project-heatmap"
npm run heatmap:project -- --days 30 --depth 3 --top 15 --output "./tmp/project-heatmap-governance"
AI 执行清单
当后续 AI 被要求“重新生成热力图/治理图”时,建议严格按下面顺序执行:
A. 先读规则
至少先读:
docs/aiprompts/project-heatmap.mddocs/aiprompts/governance.md
B. 再生成
如果用户没指定参数,优先生成两份:
- 总览热力图
- 深度 3 的治理图
推荐命令:
npm run heatmap:project -- --days 180 --depth 2 --top 18 --output "./tmp/project-heatmap"
npm run heatmap:project -- --days 30 --depth 3 --top 15 --output "./tmp/project-heatmap-governance"
C. 再补治理扫描
npm run governance:legacy-report
D. 最后再总结
汇报时至少给出:
- 哪份 HTML 是总览热力图
- 哪份 HTML 是治理图
- 哪些模块属于 立即治理
- 哪些模块属于 尽快治理
- heatmap 发现的热点,与
governance:legacy-report的边界扫描是否一致
如何解释结果
1. 热力图不等于分类结果
治理候选 中的:
立即治理尽快治理持续观察
是 优先级启发式判断,不是 current / compat / deprecated / dead 的正式分类。
正式分类必须结合:
docs/aiprompts/governance.mdnpm run governance:legacy-report
2. 一个模块“很热”,不一定说明它是坏的
需要优先治理,通常要同时满足几个条件:
- 体量大
- churn 高
- 单位体量改动密
- 文件分散
- 连续多周活跃
3. 一个模块“很旧”,不一定值得现在下刀
如果 governance:legacy-report 显示:
- 已零引用
- 已删除
- 已受控 compat
那它不是第一优先级。
优先级更高的通常是 还在高速演进、还没收口的 current 主链路。
建议默认解读方式
总览热力图重点看
src/componentssrc-tauri/srcsrc-tauri/cratessrc/libsrc/features
治理图重点看
深度 3 结果通常更有用,优先关注例如:
src/components/agentsrc/components/workspacesrc/components/settings-v2src-tauri/src/commandssrc-tauri/src/dev_bridgesrc/lib/apisrc-tauri/src/services
建议的 AI 结论模板
生成完成后,建议按下面格式汇报:
已生成两份报告:
- 总览热力图:./tmp/project-heatmap/index.html
- 治理图:./tmp/project-heatmap-governance/index.html
本轮最值得优先治理的模块:
- src/components/agent
- src/components/workspace
- src-tauri/src/commands
补充验证:
- governance:legacy-report 已运行
注意:
- 治理候选是优先级判断,不等于 compat / deprecated 正式分类
常见问题
1. 为什么看不到治理候选?
可能原因:
- 你打开的是旧报告
- 输出目录复用了旧文件
- 使用了过浅的
--depth
建议:
npm run heatmap:project -- --days 30 --depth 3 --top 15 --output "./tmp/project-heatmap-governance"
2. 为什么路径和上次不一样?
因为如果不显式传 --output,脚本会默认输出到系统临时目录。
为了让 AI 会话之间稳定复用,建议始终传:
--output "./tmp/project-heatmap-governance"
3. 为什么热力图和治理扫描结论不完全一样?
这是正常的:
- 热力图:看“哪里热、哪里值得先下刀”
- 治理扫描:看“旧路有没有被封住,边界有没有违规”
两者是互补关系,不是重复关系。
一句话
重新生成热力图时,默认出两份:深度 2 看全局,深度 3 看治理;再配合 npm run governance:legacy-report 做正式边界判断。