Update nexus wiki content
This commit is contained in:
68
wiki/concepts/LSPOrchestrator.md
Normal file
68
wiki/concepts/LSPOrchestrator.md
Normal 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]]
|
||||
Reference in New Issue
Block a user