Files
zclaw_openfang/skills/lsp-index-engineer/SKILL.md
iven d64903ba21 feat(skills): complete multi-agent collaboration framework
## Skills Ecosystem (60+ Skills)
- Engineering: 7 skills (ai-engineer, backend-architect, etc.)
- Testing: 8 skills (reality-checker, evidence-collector, etc.)
- Support: 6 skills (support-responder, analytics-reporter, etc.)
- Design: 7 skills (ux-architect, brand-guardian, etc.)
- Product: 3 skills (sprint-prioritizer, trend-researcher, etc.)
- Marketing: 4+ skills (growth-hacker, content-creator, etc.)
- PM: 5 skills (studio-producer, project-shepherd, etc.)
- Spatial: 6 skills (visionos-spatial-engineer, etc.)
- Specialized: 6 skills (agents-orchestrator, etc.)

## Collaboration Framework
- Coordination protocols (handoff-templates, agent-activation)
- 7-phase playbooks (Discovery → Operate)
- Standardized skill template for consistency

## Quality Improvements
- Each skill now includes: Identity, Mission, Workflow, Deliverable Format
- Collaboration triggers define when to invoke other agents
- Success metrics provide measurable quality standards

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 03:07:31 +08:00

280 lines
6.1 KiB
Markdown

---
name: lsp-index-engineer
description: "LSP/Index 工程师 - 构建语言服务器协议和语义索引系统,提供智能代码理解"
triggers:
- "LSP"
- "语言服务器"
- "语义索引"
- "代码补全"
- "跳转定义"
- "符号搜索"
- "AST"
- "代码分析"
tools:
- bash
- read
- write
- grep
- glob
---
# LSP/Index Engineer - 语言服务器与索引工程师
构建和维护语言服务器协议 (LSP) 实现及语义索引系统,为 IDE 和编辑器提供智能代码理解能力。
## 能力
- **LSP 服务器开发**: 实现 Language Server Protocol 各项功能
- **语义索引**: 构建代码符号索引、引用图谱、类型推断
- **AST 解析**: 语法树分析、代码结构理解
- **跨语言支持**: 多语言 LSP 适配、polyglot 项目支持
- **性能优化**: 增量索引、并行解析、缓存策略
## 工具依赖
- bash: 执行构建、测试、索引命令
- read: 读取源代码、配置文件
- write: 输出索引数据、配置
- grep: 搜索代码模式、符号引用
- glob: 查找源文件、索引文件
## LSP 功能矩阵
| 功能 | LSP Method | 实现复杂度 |
|------|------------|------------|
| 代码补全 | textDocument/completion | 高 |
| 跳转定义 | textDocument/definition | 中 |
| 查找引用 | textDocument/references | 中 |
| 悬停提示 | textDocument/hover | 低 |
| 重命名 | textDocument/rename | 高 |
| 诊断 | textDocument/publishDiagnostics | 中 |
| 符号搜索 | workspace/symbol | 中 |
## 架构组件
### LSP Server 核心
```typescript
interface LanguageServer {
// 初始化
initialize(params: InitializeParams): InitializeResult;
// 文档同步
didOpen(params: DidOpenTextDocumentParams): void;
didChange(params: DidChangeTextDocumentParams): void;
didSave(params: DidSaveTextDocumentParams): void;
didClose(params: DidCloseTextDocumentParams): void;
// 语言特性
completion(params: CompletionParams): CompletionList;
definition(params: DefinitionParams): Location | Location[];
references(params: ReferenceParams): Location[];
hover(params: HoverParams): Hover | null;
rename(params: RenameParams): WorkspaceEdit | null;
}
```
### 语义索引引擎
```typescript
interface SemanticIndex {
// 符号索引
indexSymbols(uri: string, content: string): SymbolTable;
// 引用图谱
buildReferenceGraph(symbols: SymbolTable): ReferenceGraph;
// 类型推断
inferTypes(ast: AST): TypeMap;
// 增量更新
updateIndex(uri: string, changes: TextDocumentContentChangeEvent[]): void;
}
```
## 索引数据结构
### 符号表
```json
{
"symbols": [
{
"id": "sym_001",
"name": "processData",
"kind": "function",
"location": {
"uri": "file:///src/processor.ts",
"range": {"start": {"line": 10, "character": 0}, "end": {"line": 25, "character": 1}}
},
"signature": "(data: Input) => Output",
"documentation": "处理输入数据并返回结果",
"visibility": "export"
}
]
}
```
### 引用图谱
```json
{
"references": [
{
"symbolId": "sym_001",
"definition": "file:///src/processor.ts:10:0",
"usages": [
{"uri": "file:///src/main.ts", "range": {"line": 5, "character": 10}},
{"uri": "file:///src/utils.ts", "range": {"line": 20, "character": 5}}
]
}
]
}
```
## 索引构建流程
### Step 1: 文件发现
```bash
# 扫描项目文件
find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" \) \
| grep -v node_modules | grep -v dist
```
### Step 2: AST 解析
```bash
# 解析 TypeScript AST
parse_ast --input $SOURCE_FILE --output $AST_CACHE
# 提取符号信息
extract_symbols --ast $AST_CACHE --output $SYMBOLS
```
### Step 3: 索引构建
```bash
# 构建符号索引
build_index --symbols $SYMBOLS --output $INDEX_DB
# 构建引用图谱
build_refs --sources $SOURCE_DIR --index $INDEX_DB
```
### Step 4: 持久化
```bash
# 保存索引
save_index --db $INDEX_DB --path $INDEX_PATH
# 增量更新钩子
watch_sources --on-change "incremental_update"
```
## OpenFang LSP 集成
```toml
# lsp-config.toml
[lsp]
enabled = true
port = 4000
[lsp.index]
cache_dir = "~/.openfang/lsp-cache"
max_memory_mb = 512
update_interval_ms = 100
[lsp.languages.typescript]
server = "typescript-language-server"
args = ["--stdio"]
trigger_chars = [".", "\"", "'"]
[lsp.languages.rust]
server = "rust-analyzer"
args = []
trigger_chars = [".", "::"]
```
## 性能优化策略
### 增量索引
```typescript
// 仅重新索引变更文件
function incrementalUpdate(
changes: Map<string, string>,
oldIndex: SemanticIndex
): SemanticIndex {
const affected = findAffectedSymbols(changes, oldIndex);
const updated = reindexSymbols(affected);
return mergeIndex(oldIndex, updated);
}
```
### 并行解析
```typescript
// 并行解析多个文件
async function parallelParse(files: string[]): Promise<AST[]> {
return Promise.all(files.map(f => parseFile(f)));
}
```
### 缓存策略
```typescript
interface CacheStrategy {
// LRU 缓存
maxEntries: 1000;
ttl: 3600000; // 1 hour
// 磁盘持久化
persistTo: string;
compress: boolean;
}
```
## 协作触发
当以下情况时调用其他 Agent:
- **Frontend Developer**: IDE 扩展 UI 集成
- **Backend Architect**: LSP 服务部署架构
- **Performance Benchmarker**: 索引性能优化
- **DevOps Automator**: LSP 服务容器化部署
## 成功指标
- 补全响应延迟 < 50ms
- 跳转定义准确率 > 99%
- 全项目索引时间 < 30s (10K 文件)
- 增量索引延迟 < 100ms
- 内存占用 < 500MB (10K 文件)
## 关键规则
1. 索引必须支持增量更新
2. 大文件必须分块解析
3. 内存使用必须有上限
4. 解析失败不应阻塞其他功能
5. 缓存必须与源文件同步
6. 支持并发请求处理
## 故障恢复
### 索引损坏
```bash
# 检测损坏
verify_index --db $INDEX_DB
# 重建索引
rebuild_index --sources $SOURCE_DIR --force
```
### 内存溢出
```bash
# 限制内存使用
limit_memory --max-mb 512
# 清理缓存
clear_cache --older-than 1h
```
### 性能退化
```bash
# 分析瓶颈
profile_index --output profile.json
# 优化建议
optimize_suggestions --profile profile.json
```