Sooua
登录
返回文章列表
OpenCode··4 分钟阅读

LSP 与 ACP

flowchart TB

目标:理解语言服务器协议和 ACP 支持,提升 AI 代码理解能力


LSP 集成架构


LSP 基础

LSP(Language Server Protocol)是微软提出的协议,让编辑器与语言分析工具解耦。

OpenCode 为什么需要 LSP

能力无 LSP有 LSP
类型推断❌ 猜测✅ 精确
跳转定义❌ 文本搜索✅ 符号解析
引用查找❌ 字符串匹配✅ 语义分析
诊断错误❌ 无法获取✅ 实时诊断
自动补全❌ 无✅ 智能提示

配置 LSP 服务器

TypeScript/JavaScript

// opencode.json
{
  "lsp": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"]
    }
  }
}

Rust

{
  "lsp": {
    "rust": {
      "command": "rust-analyzer"
    }
  }
}

Go

{
  "lsp": {
    "go": {
      "command": "gopls",
      "args": ["serve", "-rpc.trace"]
    }
  }
}

Python

{
  "lsp": {
    "python": {
      "command": "pyright-langserver",
      "args": ["--stdio"]
    }
  }
}

多语言配置

{
  "lsp": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"]
    },
    "rust": {
      "command": "rust-analyzer"
    },
    "go": {
      "command": "gopls"
    },
    "python": {
      "command": "pyright-langserver",
      "args": ["--stdio"]
    },
    "lua": {
      "command": "lua-language-server"
    }
  }
}

LSP 与 AI 协作流程


安装 LSP 服务器

语言服务器安装命令
TypeScripttypescript-language-servernpm i -g typescript-language-server
Rustrust-analyzerrustup component add rust-analyzer
Gogoplsgo install golang.org/x/tools/gopls@latest
Pythonpyrightnpm i -g pyright
Lualua-language-serverbrew install lua-language-server
C/C++clangdbrew install llvm

ACP 支持

什么是 ACP

ACP(Agent Context Protocol)是 OpenCode 的扩展协议,位于 MCP 之上。

MCP vs ACP

MCPACP
层级工具层代理层
功能提供工具给 AI代理间协作
通信AI → 工具AI → AI
示例文件读取、数据库查询代码审查、测试生成

ACP 配置

{
  "acp": {
    "reviewer": {
      "url": "https://reviewer-agent.company.com",
      "auth": {
        "type": "bearer",
        "token": "${REVIEWER_TOKEN}"
      }
    },
    "tester": {
      "url": "https://test-agent.company.com",
      "timeout": 120
    }
  }
}

ACP 使用示例

调用 reviewer 审查 @src/auth.ts 的修改

AI 会将代码发送给审查代理,返回专业审查意见。


FAQ

Q: LSP 和 Tree-sitter 有什么区别?

LSP 提供语义分析(类型、定义、引用),Tree-sitter 提供语法分析(AST)。两者互补。

Q: 所有语言都需要 LSP 吗?

不是必须,但强烈推荐。没有 LSP 时 AI 只能通过文本分析理解代码。

Q: ACP 可以用于什么场景?

多代理协作:审查代理 + 测试代理 + 文档代理,各司其职。


下一篇:21. IDE 扩展开发

分享

评论

登录 后参与讨论。

加载中…

相关文章