HARNESS / LSP COMPATIBILITY
Harness/LSP 兼容配置
区分完整 Driver、LSP client 与 Harness Orch,并启动 workspace-scoped mcp-lsp。
先说结论
完整 Harness Driver、LSP client 和 Harness Orch 是三个不同的兼容层。Codex 是当前集成且默认的完整 Driver 路径;Claude Driver 仍在适配、不是默认路径,且不支持子 Agent Orch;Google Antigravity 只记录了本地 LSP client 接入。其他 Harness 属于计划方向,尚未验证。
兼容矩阵
| Harness | 完整 Driver | LSP client | Harness Orch | 当前口径 |
|---|---|---|---|---|
| OpenAI Codex | 已集成,默认 | 已配置/验证入口 | 已集成 | 当前主路径 |
| Claude Code | 适配中,非默认 | 可配置 | 子 Agent Orch 不支持 | 不应描述为与 Codex 等价 |
| Google Antigravity | 不支持/未验证 | 可配置 | 不支持/未验证 | LSP-only |
| 其他 Harness | 计划中,未验证 | 计划中,未验证 | 计划中,未验证 | 不构成支持承诺 |
LSP 服务提供什么
cmd/mcp-lsp 构建产物作为本地 stdio MCP server,公开七个工具:
| 工具 | 主要能力 |
|---|---|
file | 读取、打开文件与 diagnostics |
inspect | hover、definition、implementation、type definition、signature help |
xref | references、call hierarchy 与 type hierarchy |
grep | 文本或 AST 搜索 |
structure | document/workspace symbols、folding range、semantic tokens |
patch_edit | patch、rename、code action 与 format |
completion | 光标位置补全 |
运行时声明 27 个 primary language ID:Go、JavaScript、Python、CSS、HTML、JSON、YAML、Markdown、Vue、Svelte、C、Swift、C#、PHP、Ruby、Kotlin、Dart、Lua、Dockerfile、Terraform、GraphQL、Prisma、Rust、Java、Shell、Proto 和 SQL。
这里的“27”是 primary 路由/注册入口,不是“27 种语言全部完整支持”的承诺。别名和文件扩展可能共享一个语言服务器;包内实际启用集合可能被发行 bundle 筛选;definition、diagnostics、semantic tokens、format 等能力取决于已安装/打包的 server、平台与上游能力。grep.text_search 等本地动作也不依赖语言服务器。
启动模式
三种模式使用同一 fail-fast 启动契约,但路径体系必须与承载 sidecar 的进程一致。
| 模式 | command / sidecar | cwd | resources 与 roots | Windows gopls bundle |
|---|---|---|---|---|
| Windows 原生直连 | Windows .exe | Windows drive/UNC 路径 | Windows drive/UNC 路径 | 必需 |
| WSL 原生直连 | Linux 二进制 | Linux /mnt/... 路径 | Linux /mnt/... 路径 | 不使用 |
| Windows Host → WSL2 | C:/Windows/System32/wsl.exe 桥接 Linux 二进制 | Windows 路径 | 传入 WSL 进程的 /mnt/... 路径 | 不使用 |
| 客户端 | 项目级 LSP 配置 | 验证入口 |
|---|---|---|
| Codex | .codex/config.toml 的 [mcp_servers.lsp] | /mcp 或 codex mcp list |
| Claude Code | .mcp.json 的 mcpServers.lsp | /mcp、claude mcp list/get |
| Google Antigravity | .agents/mcp_config.json | MCP Servers Refresh 或 /mcp |
Codex 示例骨架:
[mcp_servers.lsp]
enabled = true
required = true
command = "/absolute/path/to/mcp-lsp"
args = []
cwd = "/absolute/path/to/project"
startup_timeout_sec = 30
[mcp_servers.lsp.env]
SUPER_DOLPHIN_RUNTIME_MODE = "dev"
SUPER_DOLPHIN_RUNTIME_RESOURCES_DIR = "/absolute/path/to/source-checkout"
SUPER_DOLPHIN_DEPENDENCY_PROFILE = "production"
GO_AGENT_LSP_ROOT = "/absolute/path/to/project"
GO_AGENT_LSP_ROOTS = '["/absolute/path/to/project"]'
Claude 与 Antigravity 使用等价 JSON 字段仅表示 LSP sidecar 配置可以表达;不等于它们获得完整 Driver 或 Orch。GO_AGENT_LSP_ROOTS 的值仍是一个 JSON 字符串。
Windows 原生直连还必须在 MCP server 的 env 中绑定发行包内受信的 Go LSP:
SUPER_DOLPHIN_LSP_BUNDLE_DIR = "G:/project/bin/LSP/lsp"
SUPER_DOLPHIN_LSP_MANIFEST = "G:/project/bin/LSP/lsp/lsp-manifest.json"
Windows 客户端需要运行 WSL2 sidecar 时必须显式桥接:command 使用 C:/Windows/System32/wsl.exe,host cwd 使用 Windows 路径,而传给 WSL 的 resources、roots、PATH 与 sidecar 命令全部使用对应 Linux 路径。两边必须映射到同一个目录。
怎么验证
- 选择原生直连或 Windows Host → WSL2 显式桥接,并配套设置 command、cwd、resources 和 roots。
- 完成 workspace trust/MCP approval 后重启或刷新客户端。
- 先检查
tools/list正好包含七个工具,再实际调用file、structure、inspect、xref和file(action=diagnostics)。 - 对目标语言记录可用 server、平台、版本和具体 action 的结果;不要用 primary ID 的存在替代行为验证。
- 在包含中文、空格或字面
%的路径重复 diagnostics。
常见问题
- 客户端显示 enabled 但工具失败:enabled 不是 PASS,读取 sidecar 的 fail-fast 错误并实际调用 diagnostics。
- Windows 原生 bundle 失败:缺少 bundle、manifest、摘要或原生
gopls.exe时修复发行包与两个字段;不得回退到 PATH 中的任意 gopls。 - WSL 只出现
file/grep:语义语言服务器尚未就绪,不是完整 LSP;检查非登录桥接进程的 Linux PATH。 - 某个 primary language ID 存在但 action 失败:核对 server/bundle 和上游 capability;这不与“27 个入口”矛盾。
- JSON/TOML 解析失败:用解析器验证配置,并确认没有覆盖已有 MCP server。
适用范围
- 示例路径必须替换为本机绝对路径;发行包中的
bin/LSP只是布局示例。 - Codex stdio 配置不需要额外的
type = "stdio"。 - Antigravity 的
serverUrl仅用于远程 server,本地 sidecar 使用command。 - 兼容矩阵固定到产品 commit
8ed277ce674195cd29b97231c31f9690f3f2407b;项目尚无经过验证的公开版本,计划项不承诺日期或支持。
延伸阅读
理解各工具的语义边界请读代码理解与多语言 LSP;如仍无法启动,按故障排查收集最小、脱敏的复现证据。