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

84 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基础设施设计
> **所属项目**: free-code .NET 10 重写
> **文档类型**: 模块索引
> **对应源码**: `../../src/services/mcp/`, `../../src/services/lsp/`, `../../src/bridge/`, `../../src/tasks/`, `../../src/state/`
> **配套文档**: [总体概述](../总体概述与技术选型/总体概述与技术选型.md) | [核心模块设计](../核心模块设计/核心模块设计.md)
---
## 概述
基础设施层负责支撑整个 CLI 运行时的底层能力包括外部协议对接、IDE 通信、任务调度和全局状态管理。这一层不直接实现业务逻辑,而是为核心模块提供可靠的基础服务。
原始 TypeScript 实现分散在多个目录中,总计约 76 个文件。.NET 10 重写将其整理为五个职责清晰的子模块,每个子模块通过接口向上层暴露能力,内部实现细节完全封装。
---
## 子模块列表
### [MCP 协议集成](基础设施设计-MCP协议集成.md)
管理多个 MCP 服务器连接,实现 JSON-RPC 2.0 传输层Stdio、SSE、Streamable HTTP、WebSocket、进程内并将 MCP 工具适配为统一的 `ITool` 接口供工具系统使用。
- 原始源码: `../../src/services/mcp/`22 个文件)
- 核心类型: `IMcpClientManager``MCPServerConnection``McpClient``McpAuthService`
---
### [LSP 集成](基础设施设计-LSP集成.md)
管理语言服务器协议LSP子进程的生命周期提供跳转定义、查找引用、悬停提示、重命名、诊断等 9 种标准 LSP 操作,以及诊断基线对比能力。
- 原始源码: `../../src/services/lsp/`7 个文件)
- 核心类型: `ILspClientManager``LspServerInstance``LspDiagnosticRegistry`
---
### [IDE 桥接](基础设施设计-IDE桥接.md)
实现 claude.ai 远程控制能力,通过轮询 API 获取工作项、生成隔离的会话目录git worktree并管理会话生命周期。支持 VS Code、JetBrains 等 IDE 的 MCP over SSE/WebSocket 接入。
- 原始源码: `../../src/bridge/`32 个文件)
- 核心类型: `IBridgeService``BridgeConfig``SpawnMode``IBridgeApiClient`
---
### [后台任务管理](基础设施设计-后台任务管理.md)
基于 `Channel<T>` 的任务调度系统,支持 7 种任务类型Shell、本地代理、远程代理、进程内协作代理、工作流、MCP 监控、Dream 记忆合并),作为 `IHostedService` 随应用生命周期启停。
- 原始源码: `../../src/tasks/`10 个文件)
- 核心类型: `BackgroundTask``IBackgroundTaskManager``BackgroundTaskManager`
---
### [状态管理](基础设施设计-状态管理.md)
应用全局不可变状态存储,采用 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](reference/原始代码映射-基础设施.md)。