## LSP 工具

### 核心工具及应用场景

| 工具 | 主要用途 | 优先级 |
|------|---------|--------|
| `find_definition` | 查找符号定义，验证依赖存在性 | 高 |
| `find_references` | 查找所有引用，追踪数据流 | 高 |
| `restart_server` | 重启LSP服务器（仅在LSP工具失效时使用） | 低 |

### LSP支持的语言

- **JavaScript/TypeScript** (`.js`, `.ts`, `.jsx`, `.tsx`)
- **Python** (`.py`, `.pyi`)
- **Go** (`.go`)
- **C/C++** (`.c`, `.cpp`, `.cc`, `.h`, `.hpp`)
- **Ruby** (`.rb`)
- **PHP** (`.php`)
- **Lua** (`.lua`)
- **Java** (`.java`)

**其他语言**：直接使用 Grep + Read，不调用LSP工具。

### 使用原则

1. **语言检查**：只对支持的语言文件使用LSP工具，其他语言直接用 Grep + Read
2. **LSP优先于Grep**：符号分析使用LSP，避免误报（注释、字符串）
3. **组合使用**：`find_references` + `Read`、`find_definition` + `Read`
4. **失败降级**：
   - 遇到 `No LSP server available` 错误时：
     1. 先调用 `restart_server` 重启LSP服务器
     2. 重试一次LSP操作
     3. 仍失败则降级使用 Grep + Read
   - 其他LSP错误：直接降级使用 Grep + Read
