3.7 KiB
基础设施设计
所属项目: 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 个文件) - 核心类型:
IMcpClientManager、MCPServerConnection、McpClient、McpAuthService
LSP 集成
管理语言服务器协议(LSP)子进程的生命周期,提供跳转定义、查找引用、悬停提示、重命名、诊断等 9 种标准 LSP 操作,以及诊断基线对比能力。
- 原始源码:
../../src/services/lsp/(7 个文件) - 核心类型:
ILspClientManager、LspServerInstance、LspDiagnosticRegistry
IDE 桥接
实现 claude.ai 远程控制能力,通过轮询 API 获取工作项、生成隔离的会话目录(git worktree),并管理会话生命周期。支持 VS Code、JetBrains 等 IDE 的 MCP over SSE/WebSocket 接入。
- 原始源码:
../../src/bridge/(32 个文件) - 核心类型:
IBridgeService、BridgeConfig、SpawnMode、IBridgeApiClient
后台任务管理
基于 Channel<T> 的任务调度系统,支持 7 种任务类型(Shell、本地代理、远程代理、进程内协作代理、工作流、MCP 监控、Dream 记忆合并),作为 IHostedService 随应用生命周期启停。
- 原始源码:
../../src/tasks/(10 个文件) - 核心类型:
BackgroundTask、IBackgroundTaskManager、BackgroundTaskManager
状态管理
应用全局不可变状态存储,采用 Redux/Elm 风格的 updater 函数模式。AppState 是一个深层嵌套的不可变 record,AppStateStore 通过加锁保证线程安全,并在每次更新后触发订阅通知。
- 原始源码:
../../src/state/(5 个文件) - 核心类型:
AppState、IAppStateStore、AppStateStore、StateSelectors
依赖关系
核心模块(工具系统、查询引擎)
↓ 使用
基础设施层
├── MCP 协议集成 ──→ 状态管理(更新 McpState)
├── LSP 集成 ──→ 状态管理(无直接依赖,通过工具层间接访问)
├── IDE 桥接 ──→ 状态管理(更新桥接状态字段)
└── 后台任务管理 ──→ 状态管理(更新 Tasks 字典)
所有子模块都通过依赖注入接收 IAppStateStore,并在状态变更时调用 Update() 方法。UI 层订阅 StateChanged 事件实现响应式刷新。
原始代码映射
完整的 .NET 类型与原始 TypeScript 文件对应关系,参见 reference/原始代码映射-基础设施.md。