33 lines
1.3 KiB
Markdown
33 lines
1.3 KiB
Markdown
---
|
||
title: "Incremental Graph Update"
|
||
type: concept
|
||
tags: [graph, real-time, file-watching]
|
||
sources: [lsp-index-engineer]
|
||
last_updated: 2026-04-25
|
||
---
|
||
|
||
## Definition
|
||
|
||
增量图谱更新(Incremental Graph Update)是 LSP/Index Engineer 维护代码语义图谱的核心策略——通过文件监视器(File Watchers)和 Git hooks 检测变更,仅更新受影响的图谱子图,而非全量重建,从而实现亚秒级增量同步。
|
||
|
||
## Trigger Mechanisms
|
||
|
||
- **文件监视器**:监听文件系统变更,触发相关符号的重新索引
|
||
- **Git hooks**:在提交前后执行图谱增量更新,确保版本控制集成
|
||
- **WebSocket 推送**:将图谱差异实时推送至连接的客户端
|
||
|
||
## Consistency Guarantees
|
||
|
||
LSP/Index Engineer 的原子性保证:图谱更新必须是原子性的——从不将图谱置于不一致状态。具体约束:
|
||
- 每个符号有且仅有一个定义节点
|
||
- 所有边必须引用有效节点 ID
|
||
- 文件节点必须在符号节点之前创建
|
||
- 导入边必须解析到实际文件/模块节点
|
||
|
||
## Performance Impact
|
||
|
||
增量更新使得图谱在 100k+ 符号规模下依然保持亚秒级响应:
|
||
- 文件保存后 → 图谱更新传播至客户端 <500ms
|
||
- 单个文件变更 → 仅更新受影响子图,而非全量重建
|
||
- WebSocket 推送延迟 <50ms
|