Appearance
功能规格说明:LSP 集成支持
创建日期:2025-12-24
用户场景与测试 (必填)
用户故事:代码导航(优先级:P1)
作为 AI agent,我希望找到符号的定义,以便我可以在不手动搜索文件的情况下了解其实现方式。
为什么是这个优先级:对于代码理解和导航至关重要,尤其是在大型代码库中。
独立测试:在已知符号上调用 lsp 工具的 goToDefinition 操作并验证它返回正确的文件路径和行号。
验收场景:
- 假设支持的语言中的有效符号,当 agent 调用
goToDefinition时,则系统必须返回定义的位置(文件和范围)。 - 假设具有多个定义的符号(如重载方法),当 agent 调用
goToDefinition时,则系统应该返回所有相关位置。
用户故事:类型和文档检查(优先级:P1)
作为 AI agent,我希望获取符号的悬停信息,以便我可以看到其类型签名和文档。
为什么是这个优先级:帮助 agent 正确使用 API 并理解变量和函数的用途。
独立测试:在函数上调用 lsp 工具的 hover 操作并验证它返回文档字符串和类型信息。
验收场景:
- 假设有文档的符号,当 agent 调用
hover时,则系统必须返回文档和类型信息。
用户故事:调用层次探索(优先级:P2)
作为 AI agent,我希望看到哪些函数调用了特定方法,以便我可以了解更改它的影响。
为什么是这个优先级:对于重构和理解执行流程至关重要。
独立测试:调用 prepareCallHierarchy 然后调用 incomingCalls 并验证它返回调用者函数列表。
验收场景:
- 假设一个被其他函数调用的函数,当 agent 调用
incomingCalls时,则系统必须返回所有调用位置的列表。
边界情况
- 未配置服务器:如果文件扩展名没有映射的 LSP 服务器,工具应该返回清晰的错误。
- 服务器崩溃:如果 LSP 服务器进程死亡,
LspManager应该优雅地处理并可能重启它。 - 大型响应:某些 LSP 响应(如
findReferences)可能非常大;工具必须将结果截断为最多 1000 项和 100 个文件,以防止过多的 token 使用,同时在头部报告总数。 - 慢速服务器:实现超时以防止 agent 无限等待慢速语言服务器。
假设
- 用户的系统上已安装必要的语言服务器可执行文件。
- 如果需要自定义 LSP 服务器,项目包含
.lsp.json文件。 - 终端环境允许生成子进程。