DSH 学习 · 源码实测依赖图 01

最被依赖的包,是最小的那个。

横轴是一个包 src 目录的行数,纵轴是同仓库里有多少个包在 peerDependencies 里指向它。两者可以完全脱钩——先看散点右下角和左上角,再按组筛选。

阅读配套课程 打开 Code Mode 实验

散点图的横轴是包的 src 行数,纵轴是有多少个包在 peerDependencies 里指向它。先押一个注:把「排序」从行数换成被依赖次数,图上每个点的位置会怎么变?

视图内边
src 行
零入度包
独立校验

体量和被依赖程度是两件事

行数 × 被依赖次数

一个点是一个包。把鼠标停在任意一点上,图、柱视图和下面的表格会同时高亮同一个包;滚轮缩放(放大后可拖拽平移),触屏和键盘用下方按钮。换上面的「按组筛选」会重画这张图并回到全貌。只用一种颜色:50 个组无法用色相安全区分,所以组是筛选条件,不是颜色。只给落在角上的包直接标名字。正文里点这些名字也一样联动: (主链路的 Agent)、 (模型能力层)、 (技能注册表)。

点的面积编码第三个量:这个包在当前视图里依赖了多少个别的包。三个量在固定 fixture 上两两近似不相关(相关系数 +0.15、+0.18、−0.11),所以面积不是把横纵轴换个说法重复一遍。面积按平方根映射,因为人眼比较面积而不是半径。这一列在下面的表格里逐行给出,不依赖看图。

组内的柱与依赖边

高=行数 · 粗=被依赖次数

柱高是 src 行数,柱的边框粗细是被依赖次数,横向位置只是排序后的次序,不承载数值。先把「按组筛选」换到某一组,这张图才会出现:节点超过 24 个时它不显示——密到看不清的图不如表格。把「排序」从行数换成被依赖次数,柱的先后会重排,但每根柱的高度和粗细一个都不变。

50 个组的相对体量

高=行数 · 环=组 · 线=依赖

这一幕不是用来读数值的。要读某个包有多少行、被谁依赖,看上面的散点图和本页最后的表格——那两个都不用先点开。这里回答另一个问题:50 个组的体量差多大,排在一起是什么样子。前 14 个组占了 72% 的行数却只占 28% 的组数,这件事在表格里要逐行加,在这里一眼就看得到。

柱高
src 行数,对数刻度(行数跨 37 到 8989,线性会把大半柱子压平)
环上位置
所属组。内环是行数最多的 12 组,外环是其余 37 组
连线
peerDependencies,线宽是被依赖次数。默认不画:1124 条边叠在 227 根柱子上看不出结构
颜色
只区分内外环。50 个组无法用色相安全区分,所以组由位置承载,不由颜色承载

默认不启动:连续渲染在手机上耗电,而这一幕不是读数值必需的。启动后可以拖动旋转,也可以用方向键;页面不会记住这个选择。

图不给自己判分

固定数据校验

独立校验(oracle) 不读页面上任何已渲染的值。它从 nodes 和 edges 重算包数、边数、入度、行数和组数,再和 fixture 自己记录的总数比对;fixture 被改过就会失败。

    哪些结论可以带走

    能证明什么

      不能证明什么

        同一份数据的完整表格

        不用脚本也能读

        上面两张图能表达的每一个数字,这张表都逐行给出。没有脚本、没有图形支持或开启减少动态效果时,从这里读。

        当前视图的全部包