84 lines
3.7 KiB
Markdown
84 lines
3.7 KiB
Markdown
# 基础设施设计
|
||
|
||
> **所属项目**: 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)。
|