# dsh-easy-lsp

DSH 语言服务器(LSP)图形化管理插件:自持 LSP 引擎 + 一键安装器 + 主动诊断注入,统一在「LSP 服务」页面可视化管理。

[![dsh-plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

[English](README.md) | 中文

![LSP 服务页](images/screenshot.png)

## 功能

- **代码智能**:`lsp` 工具 —— goToDefinition / findReferences / goToImplementation / hover。
- **按需诊断**:`lsp_diagnostics` 工具 —— 模型自查文件的编译/类型错误(依赖服务器推送诊断,如 pyright)。
- **符号查找**:`lsp_symbols` 工具 —— 文档符号列表(官方 LSP 工具族没有的能力)。
- **语义重命名**:`lsp_rename` 工具 —— 跨整个项目重命名符号(含跨文件引用与重载);返回按文件分组的编辑清单(带原文锚点),由模型自行应用。
- **代码操作**:`lsp_code_actions` 工具 —— 列出服务器提供的标准修复(自动导入、修类型错误、快速重构)及其编辑;仅命令型动作标注「不可执行」。
- **格式化**:`lsp_format` 工具 —— 按服务器项目规则格式化文件;整文件替换时返回完整新内容,用 write 重写即可。
- **调用层级**:`lsp_callers` 工具 —— 符号的语义级 callers/callees 及精确调用点(单层)。
- **主动诊断注入**:agent 写/改代码后,未解决错误自动注入下一轮系统提示;半成品噪音由稳定性门槛过滤。
- **可视化管理**:设置 → LSP 服务 —— 新增/编辑/启用/删除/测试(测试结果展示服务器支持的能力)。
- **一键安装器**:内置 37 项预设(30 自动 + 7 指引),覆盖主流语言;装到用户级目录,无需 sudo。
- **自持引擎**:不依赖官方 `dsh-lsp` / `dsh-lsp-stdio` / `dsh-tool-lsp`。

## 安装

```sh
dsh plugin --profile web add dsh-easy-lsp      # 安装
dsh plugin --profile web remove dsh-easy-lsp   # 卸载
```

重启 `dsh web`,然后:设置 → **LSP 服务** → 添加语言服务器(如 TypeScript / Python)→ 一键安装或复制命令 → 保存并启用。

> **冲突提示**:工具名 `lsp` 与官方 `dsh-tool-lsp` 同名,二者选一。

## 配置

服务器配置存放在 `~/.dsh/settings.yaml` 的 `lsp` 段,在界面维护(手改也会热同步):

```yaml
lsp:
  servers:
    typescript:
      enabled: true
      command: typescript-language-server
      args: ['--stdio']
      extensionToLanguage: { '.ts': 'typescript', '.tsx': 'typescript' }
  diagnostics:
    autoRun: true
    inject: true
    stabilityRounds: 2
```

## 注意事项

- typescript-language-server 不推送瞬开诊断;pyright 类服务器正常。此类服务器的 code actions 在无诊断上下文中收集,可能不完整。
- typescript-language-server 无 callHierarchy 能力;pyright 无文档格式化能力 —— 不支持的操作会快速失败并给出明确提示。
- rename / format / code actions / call hierarchy 只返回编辑清单或信息,由模型用现有 write/edit 工具应用(不直接写文件)。
- 同一扩展名由第一个启用的服务器处理(UI 会提示冲突)。
- 主动注入缓存为全局(文件级),多会话共享同一文件的诊断状态。
- 不做:completion / signatureHelp / inlayHint / semanticTokens / workspace/symbol / typeHierarchy,以及代码图谱类能力(图谱请经 MCP 服务器接入)。

## 许可

MIT
