KAIROS.WORKSPACE
技术宇宙 / ONLINE
返回项目墙
平台工程活跃维护本地5 分钟

知识星图浏览器

把文章内容编译成关系图并在 Canvas 上可交互探索:构建期生成、力导向渲染、路径查询与无鼠标等价操作的系统说明。

#Canvas#数据可视化#图算法#Astro

它解决什么问题

“这个站写过哪些东西、彼此怎么关联”是传统博客回答不了的问题。知识星图把文章、项目、踩坑、笔记、标签、系列编译成一张可探索的关系网——读者可以从任何一颗星出发,顺着引力找到相关的一切。

数据链路

内容集合(frontmatter 关系字段)
  → scripts/generate-graph-data.mjs(构建期,仅非草稿)
  → public/graph-data.json(当前构建:172 节点 / 253 边)
  → /graph SSR 页面读取(磁盘直读,见文章《SSR 页面为什么不该向自己发 HTTP 请求》)

边类型:文章↔标签、文章↔系列、项目↔相关文章、踩坑↔标签——全部来自已校验的 frontmatter 引用(引用完整性由内容门禁保证,图里不会出现悬空边)。

渲染层的四个工程决策

  1. 力导向自研而非引库:确定性初始布局(同一输入同一画面,可回归)、O(n²) 斥力 + 弹簧 + 向心力、alpha 衰减自动停帧——当前规模几百毫秒收敛,浏览器里算得起,无需 Web Worker。
  2. 性能自律requestAnimationFrame 只在有能量时运行;IntersectionObserver 离开视口即停帧,后台标签页暂停;拖拽/缩放/平移/双击复位全在 Canvas 坐标系内完成,不触发布局。
  3. 降级是设计的一部分prefers-reduced-motion 下同步结算 240 次迭代输出静态星图——信息量不变,只是不“飘”;移动端粒子/光效降级的同一原则在这里复用。
  4. 无鼠标等价操作:星图是可发现性增强,不是唯一入口——节点列表(可过滤、键盘可达、Enter 聚焦星图对应节点)、类型筛选、路径查询(起点/终点下拉 + 本地 BFS 最短路径,含“无可达路径”空态)全部可纯键盘完成。

交互模型

点击节点 → 邻域高亮(相连边标记 source/target、非相关弱化)+ 邻接面板列出关系;类型筛选与关键词过滤联动重排;BFS 路径提示展示“节点 A → B → C”与跳数。数据在页面内联一份公开 payload(构建期直读生成物),过滤/路径全部内存态——不持久化、不上传任何输入。

当前状态与边界

星图模式已成为探索地图默认视图(节点阈值达标后从二级入口升级)。边界:图规模到千级节点时 O(n²) 斥力需要换成 Barnes-Hut 或分块布局,页面结构已为此预留(渲染器与数据层解耦,输入只是那份 JSON)。

下一步

方向筛选(只看“文章→标签”类边)、跨类型路径高亮动画(尊重 reduced-motion)、以及基于入度的“枢纽文章”榜单接入首页。