lsp.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. """
  2. LSP Tool - 通过 Bun 适配器调用 OpenCode
  3. Language Server Protocol 集成,提供代码诊断、补全等功能。
  4. """
  5. from typing import Optional
  6. from agent.tools import tool, ToolResult, ToolContext
  7. from agent.tools.adapters.opencode_bun_adapter import OpenCodeBunAdapter
  8. # 创建适配器实例
  9. _adapter = None
  10. def _get_adapter():
  11. global _adapter
  12. if _adapter is None:
  13. _adapter = OpenCodeBunAdapter()
  14. return _adapter
  15. @tool(description="获取文件的 LSP 诊断信息(语法错误、类型错误等)")
  16. async def lsp_diagnostics(
  17. file_path: str,
  18. uid: str = "",
  19. context: Optional[ToolContext] = None
  20. ) -> ToolResult:
  21. """
  22. 获取 LSP 诊断信息
  23. 使用 OpenCode 的 LSP 工具(通过 Bun 适配器调用)。
  24. 返回文件的语法错误、类型错误、代码警告等。
  25. Args:
  26. file_path: 文件路径
  27. uid: 用户 ID
  28. context: 工具上下文
  29. Returns:
  30. ToolResult: 诊断信息
  31. """
  32. adapter = _get_adapter()
  33. args = {
  34. "filePath": file_path,
  35. }
  36. return await adapter.adapt_execute(
  37. tool_name="lsp",
  38. args=args,
  39. context=context
  40. )