---
title: "harness - LSP 服务接入"
---


马具可以接入 LSP（Language Server Protocol）服务，让 Agent 具备更深入的代码理解能力，例如定义跳转、引用查找、诊断等。MCP 第三方工具网关接入见 [《harness - MCP 服务接入》](/article/1433)，OpenAPI 业务接口接入见 [《harness - OpenAPI 业务接口接入》](/article/1437)。

### 1、开启 LSP 工具权限

`lsp` 已经在 `*`（全部公域）与 `**`（全部完整）的展开列表中（见《harness - 工具名映射与权限解析参考》），使用 `*` / `**` 时无需再单独配置；若 Agent 使用具名工具列表，则需要显式加入 `lsp`：

```java
HarnessEngine engine = HarnessEngine.of("work", ".soloncode/")
        .sessionProvider(sessionProvider)
        .toolsAdd(ToolName.TOOL_LSP)        // 开启 lsp 工具权限
        .build();
```

也可以在运行时动态授权：

```java
engine.allowTool("lsp");
```

### 2、构建期静态注册

`LspServerParameters` 有两个必填项：启动命令 `command` 与关联扩展名 `extensions`，缺少任一项时该服务器会被跳过（只打印警告日志）：

```java
LspServerParameters javaLsp = new LspServerParameters(
        Arrays.asList("jdtls", "-data", ".solon/lsp/java-workspace"),
        Arrays.asList(".java"));

HarnessEngine engine = HarnessEngine.of("work", ".soloncode/")
        .sessionProvider(sessionProvider)
        .toolsAdd(ToolName.TOOL_LSP)
        .lspServerAdd("java", javaLsp)
        .build();
```

如果项目需要多种语言服务，可以按名称分别注册：

```java
HarnessEngine engine = HarnessEngine.of("work", ".soloncode/")
        .sessionProvider(sessionProvider)
        .toolsAdd(ToolName.TOOL_LSP)
        .lspServerAdd("java", javaLspServer)
        .lspServerAdd("typescript", tsLspServer)
        .build();
```

`LspServerParameters` 字段：

| 字段 | 说明 |
|------|------|
| `command` | 启动命令（必填），如 `["jdtls", "-data", "…"]` |
| `extensions` | 关联文件扩展名（必填），如 `[".java", ".kt"]` |
| `enabled` | 是否启用，默认 `true`；禁用的服务器仍会登记配置，但路由时跳过 |
| `initialization` | 服务器初始化参数（可选） |
| `env` | 额外环境变量（可选） |

### 3、运行时动态管理

引擎启动后，仍可动态添加或移除 LSP 服务：

```java
engine.addLspServer("java", lspServerParameters);
engine.removeLspServer("java");
```

LSP 服务增删后，会触发主代理重建以刷新工具集，并对后续会话生效。

### 4、说明

| 配置 / 权限 | 说明 |
|------|------|
| `ToolName.TOOL_LSP` | 开启 LSP 工具权限 |
| `lsp` | 工具名，已包含在 `*` / `**` 展开列表中；运行时可通过 `allowTool("lsp")` 授权 |
| `lspServers` | LSP 服务配置集合 |

> LSP 能力更偏向“代码理解”，适合和 `read`、`grep`、`glob`、`code` 等工具一起使用。授权方式见 [《harness - 配置参考》](/article/1427)。
