-
Notifications
You must be signed in to change notification settings - Fork 1
LSP Navigation zh
未实现——上游的语义代码导航在当前 Edge 部署中不可用。
上游参考:LSP 导航
LSP 接缝是一个可选的能力层,通过 ctx.lsp 暴露语义代码导航。分布在三个包中:
-
dsh-lsp — 服务定义:
LspService,提供 provider 注册和查询分发 -
dsh-lsp-stdio — stdio 宿主:通过
node:child_process启动语言服务器进程(TypeScript、Python、Go 等) - dsh-tool-lsp — 工具消费者:注册模型可用的四个语义查询工具
四个操作组成封闭联合:goToDefinition、findReferences、goToImplementation、hover。每个 provider 注册稳定的 ID 和扩展名到语言的映射。该服务可选,不在 agent loop 核心执行路径上。
未实现 三个 LSP 包均不在 Edge 的依赖中。没有 ctx.lsp 服务。模型无法执行跳转定义、查找引用或悬浮查询。
主要阻塞是 stdio 宿主(dsh-lsp-stdio):它通过 node:child_process 启动长期运行的语言服务器进程,这在 Cloudflare Workers 中不可用。
| 方案 | 能力 | 所需 Plan | 复杂度 |
|---|---|---|---|
| Cloudflare Containers | 完整 LSP——在 Linux 容器中运行真正的语言服务器(tsserver、pylsp、gopls)。进程跨 turn 持久化,预热后响应快。 | Workers Paid 或 Enterprise | 高——需要容器生命周期、stdio 桥接、工作区同步 |
| Tree-sitter WASM | 部分——符号提取、常见语言的跳转定义。无悬浮文档,跨文件引用有限。在 Workers 中运行,无需容器。 | 免费 plan 兼容 | 中——实现基于 Tree-sitter WASM 解析器的 LspProvider
|
容器方案:ContainerLspProvider 实现上游 LspProvider 接口,在 Container 内启动语言服务器而非通过 stdio。容器生命周期可按 workspace 管理——首次 LSP 查询时启动,session 期间保活,session 结束时释放。需要将 DO VFS 中的工作区文件同步到容器文件系统。
Tree-sitter 方案:适用于免费 plan 的轻量替代。Tree-sitter WASM 解析器可以提取符号、在文件或项目内导航定义、提供基本的结构信息。无法达到完整 LSP 的精度(无类型推断、无语言服务器的悬浮文档),但能覆盖最常见的导航需求。
| 组件 | 状态 | 备注 |
|---|---|---|
| LspService (dsh-lsp) | 缺失 | 服务定义——无平台依赖,可直接安装 |
| Stdio 宿主 (dsh-lsp-stdio) | 缺失 | 需要 node:child_process——需要 Container 替换 |
| 工具消费者 (dsh-tool-lsp) | 缺失 | 无平台依赖——服务就绪后可直接安装 |
关键观察:服务定义和工具消费者包没有平台依赖——可以直接安装。只有 stdio 宿主需要平台相关的替换(Container 或 Tree-sitter 方案)。上游的
LspProvider接口是正确的扩展点。
**评估 Container 支撑的 LSP provider。**Cloudflare Containers 能否以可接受的启动延迟运行 tsserver/pylsp?从 DO VFS 到容器文件系统的工作区同步开销多大?容器是否能在交互式开发 session 期间持久化足够长?
**评估 Tree-sitter WASM 作为免费 plan 替代。**哪些语言有成熟的 Tree-sitter WASM 解析器?仅用 Tree-sitter 查询能否实现跨文件的跳转定义和查找引用?包含 WASM 解析器对 bundle 大小的影响?
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发