Update nexus wiki content

This commit is contained in:
2026-05-03 05:42:06 +08:00
parent 90f3811b83
commit 111bc65b7b
707 changed files with 32306 additions and 7289 deletions

View File

@@ -0,0 +1,68 @@
---
title: "LSPOrchestrator"
type: concept
tags: ["LSP", "code-intelligence", "orchestration", "multi-language"]
sources: ["lsp-index-engineer.md"]
last_updated: 2026-04-29
---
## Definition
LSP 编排器LSP Orchestrator是在 graphd 架构中协调多个语言服务器并发运行的中间层,负责统一管理不同语言的 LSP 客户端、正确处理各服务器的能力协商、并将对异构 LSP 响应格式标准化为统一格式。
## Core Mechanism
### Client Initialization
```typescript
class LSPOrchestrator {
async initialize(projectRoot: string) {
const tsClient = new LanguageClient('typescript', {
command: 'typescript-language-server',
args: ['--stdio'],
rootPath: projectRoot
});
const phpClient = new LanguageClient('php', {
command: 'intelephense',
args: ['--stdio'],
rootPath: projectRoot
});
await Promise.all([
this.initializeClient('typescript', tsClient),
this.initializeClient('php', phpClient)
]);
}
}
```
### Multi-Language Coordination
- **并行初始化**:所有语言服务器并发启动
- **能力协商**:为每个服务器独立检查 `ServerCapabilities`
- **语言检测**:根据文件扩展名路由到对应语言服务器
- **请求批处理**:合并相邻请求以减少往返开销
- **缓存策略**:积极缓存但精确失效
### Capability-Negotiation Pattern
```typescript
async getDefinition(uri: string, position: Position): Promise<Location[]> {
const lang = this.detectLanguage(uri);
const client = this.clients.get(lang);
if (!client || !this.capabilities.get(lang)?.definitionProvider) {
return [];
}
return client.sendRequest('textDocument/definition', {
textDocument: { uri },
position
});
}
```
## Performance Optimization
- **请求批处理**:合并多个相邻 LSP 请求
- **零拷贝技术**:内存映射文件和大数据集
- **Worker Threads**CPU 密集型操作分流到 Worker
- **锁无关数据结构**:并发访问无锁化
## Connections
- [[LSPOrchestrator]] ← part_of ← [[GraphDaemon]]
- [[LSPOrchestrator]] ← coordinates ← [[LanguageServerProtocol]]
- [[LSPOrchestrator]] ← feeds ← [[SemanticCodeGraph]]
- [[LSPOrchestrator]] ← uses ← [[IncrementalGraphUpdate]]