free-code-dotnet/docs/基础设施设计/基础设施设计.md
应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

3.7 KiB
Raw Blame History

基础设施设计

所属项目: free-code .NET 10 重写 文档类型: 模块索引 对应源码: ../../src/services/mcp/, ../../src/services/lsp/, ../../src/bridge/, ../../src/tasks/, ../../src/state/ 配套文档: 总体概述 | 核心模块设计


概述

基础设施层负责支撑整个 CLI 运行时的底层能力包括外部协议对接、IDE 通信、任务调度和全局状态管理。这一层不直接实现业务逻辑,而是为核心模块提供可靠的基础服务。

原始 TypeScript 实现分散在多个目录中,总计约 76 个文件。.NET 10 重写将其整理为五个职责清晰的子模块,每个子模块通过接口向上层暴露能力,内部实现细节完全封装。


子模块列表

MCP 协议集成

管理多个 MCP 服务器连接,实现 JSON-RPC 2.0 传输层Stdio、SSE、Streamable HTTP、WebSocket、进程内并将 MCP 工具适配为统一的 ITool 接口供工具系统使用。

  • 原始源码: ../../src/services/mcp/22 个文件)
  • 核心类型: IMcpClientManagerMCPServerConnectionMcpClientMcpAuthService

LSP 集成

管理语言服务器协议LSP子进程的生命周期提供跳转定义、查找引用、悬停提示、重命名、诊断等 9 种标准 LSP 操作,以及诊断基线对比能力。

  • 原始源码: ../../src/services/lsp/7 个文件)
  • 核心类型: ILspClientManagerLspServerInstanceLspDiagnosticRegistry

IDE 桥接

实现 claude.ai 远程控制能力,通过轮询 API 获取工作项、生成隔离的会话目录git worktree并管理会话生命周期。支持 VS Code、JetBrains 等 IDE 的 MCP over SSE/WebSocket 接入。

  • 原始源码: ../../src/bridge/32 个文件)
  • 核心类型: IBridgeServiceBridgeConfigSpawnModeIBridgeApiClient

后台任务管理

基于 Channel<T> 的任务调度系统,支持 7 种任务类型Shell、本地代理、远程代理、进程内协作代理、工作流、MCP 监控、Dream 记忆合并),作为 IHostedService 随应用生命周期启停。

  • 原始源码: ../../src/tasks/10 个文件)
  • 核心类型: BackgroundTaskIBackgroundTaskManagerBackgroundTaskManager

状态管理

应用全局不可变状态存储,采用 Redux/Elm 风格的 updater 函数模式。AppState 是一个深层嵌套的不可变 recordAppStateStore 通过加锁保证线程安全,并在每次更新后触发订阅通知。

  • 原始源码: ../../src/state/5 个文件)
  • 核心类型: AppStateIAppStateStoreAppStateStoreStateSelectors

依赖关系

核心模块(工具系统、查询引擎)
        ↓ 使用
基础设施层
  ├── MCP 协议集成  ──→  状态管理(更新 McpState
  ├── LSP 集成       ──→  状态管理(无直接依赖,通过工具层间接访问)
  ├── IDE 桥接       ──→  状态管理(更新桥接状态字段)
  └── 后台任务管理   ──→  状态管理(更新 Tasks 字典)

所有子模块都通过依赖注入接收 IAppStateStore,并在状态变更时调用 Update() 方法。UI 层订阅 StateChanged 事件实现响应式刷新。


原始代码映射

完整的 .NET 类型与原始 TypeScript 文件对应关系,参见 reference/原始代码映射-基础设施.md