06.2 MCP、LSP 与插件能力面

关注源码

  • src/services/mcp/*
  • src/services/lsp/*
  • src/services/plugins/*
  • src/services/mcp/MCPConnectionManager.tsx
  • src/services/mcp/useManageMCPConnections.ts

MCP 是第一类能力源

MCP 在这套系统里不是附属集成,而是直接参与:

  • tools
  • commands
  • resources
  • skill discovery
  • permission / channel / elicitation

这使它在运行时地位上几乎与内建工具等价。

MCP 连接管理是“状态同步器”

useManageMCPConnections.ts 不只负责建立连接,还负责:

  • 初始化客户端集合
  • 拉取 tools / commands / resources
  • 批量写回 AppState.mcp
  • 处理 reconnect / toggle enabled
  • 监听 channel 通知、permission relay、elicitation
  • 记录 plugin errors

它本质上是在把外部 server 状态持续同步进本地运行时。

MCPConnectionManager.tsx 的意义

它给 UI 层暴露:

  • reconnectMcpServer
  • toggleMcpServer

让 MCP 状态管理成为应用级 context,而不是零散按钮逻辑。

LSP 的位置

LSP 不是单独的工具系统,而是:

  • services/lsp/manager.ts 维护服务端实例
  • LSPDiagnosticRegistry 管理诊断数据
  • LSPTool 把相关能力暴露给模型

这意味着 LSP 更像“辅助感知层”,并与 diagnostic UI、plugin recommendation、context suggestions 相连。

插件系统的作用

插件层主要负责:

  • 安装与更新
  • 命令注入
  • MCP server 暴露
  • settings / trust / marketplace 约束

插件不会绕开主系统,而是通过命令池、MCP 池和 settings/policy 体系接入。

设计上的关键点

1. MCP、插件、LSP 不是三套平行孤岛

插件可以带 MCP,MCP 能变成 skill/command/tool,LSP 又能反哺上下文和推荐。

2. 集成状态进入 AppState

这意味着外部系统不是“需要时现查”,而是被持续维护成前台可消费的状态。

3. 平台能力接入仍服从主运行时约束

即使是外部工具,也仍然要经过:

  • tool pool 装配
  • permissions
  • UI 渲染
  • transcript/message 语义