mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
changed.对启动器重构的尝试
This commit is contained in:
88
docs/auto_commit_md/20260528_1ee6e68.md
Normal file
88
docs/auto_commit_md/20260528_1ee6e68.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: 1ee6e68f33f0a1bbeccf7cef8f3767e65d6916c9
|
||||
- **短哈希**: 1ee6e68
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 10:28:31 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
refactor(launcher): converge plugin pending to Host via PluginPackaging
|
||||
|
||||
## 变更统计
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 变更文件数 | 32 |
|
||||
| 新增行数 | 881 |
|
||||
| 删除行数 | 1917 |
|
||||
| 净变化 | -1036 |
|
||||
|
||||
## 详细变更分析
|
||||
|
||||
### 架构变更概述
|
||||
此提交进行了重要的架构调整:将插件待处理(pending)功能从 Launcher 移到了 Host(主程序),并引入了新的 PluginPackaging 项目。
|
||||
|
||||
### 新增项目
|
||||
1. **LanMountainDesktop.PluginPackaging** - 新的插件打包项目
|
||||
- `PendingPluginUpgradeStore.cs` - 待处理插件升级存储
|
||||
- `PluginPackageInstallOptions.cs` - 插件包安装选项
|
||||
- `PluginPackageInstallResult.cs` - 插件包安装结果
|
||||
- `PluginPackageInstaller.cs` - 插件包安装器
|
||||
- `PluginPackageManifest.cs` - 插件包清单
|
||||
- `PluginPackageManifestReader.cs` - 插件包清单读取器
|
||||
- `PluginPackagingConstants.cs` - 插件打包常量
|
||||
|
||||
### 删除项目
|
||||
1. **LanMountainDesktop.PluginUpgradeHelper** - 已删除的插件升级辅助项目
|
||||
- `Program.cs` - 主程序(372行)
|
||||
|
||||
### 主要删除的文件
|
||||
1. `FlexibleHostLocator.cs` - 灵活主机定位器(634行)
|
||||
2. `UpdateCheckService.cs` - 更新检查服务(161行)
|
||||
3. `LauncherClient.cs` - Launcher 客户端(210行)
|
||||
4. `CliLauncherUpdateBridge.cs` - CLI Launcher 更新桥接(48行)
|
||||
5. `IpcLauncherUpdateBridge.cs` - IPC Launcher 更新桥接(171行)
|
||||
|
||||
### 主要变更的文件
|
||||
1. `PendingPluginUpgradeService.cs` - 大幅简化
|
||||
2. `PluginMarketInstallService.cs` - 大幅简化,移除了通过 Launcher 安装的逻辑
|
||||
3. `PluginRuntimeService.cs` - 新增 `ApplyPendingPluginOperations()` 方法
|
||||
4. 多个文档文件更新 - 反映架构变更
|
||||
|
||||
### 架构变化要点
|
||||
|
||||
#### 1. 职责转移
|
||||
- **之前**:Launcher 负责插件待处理安装/升级
|
||||
- **现在**:Host(主程序)负责在启动时应用待处理插件操作
|
||||
|
||||
#### 2. 新的流程
|
||||
1. 插件市场下载包到用户的待处理队列
|
||||
2. 下次 Host 启动时,在插件发现前应用待处理操作
|
||||
3. Launcher 保留 CLI 命令作为维护兼容性入口
|
||||
|
||||
#### 3. 新增功能
|
||||
- `PluginRuntimeService.ApplyPendingPluginOperations()` - 应用待处理插件操作
|
||||
- `PendingPluginUpgradeService.AddPendingInstallOrUpgrade()` - 添加待处理安装或升级
|
||||
- 新增 `RestartRequired` 状态到 `AirAppMarketInstallState`
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
### 优势
|
||||
1. **架构更清晰**:Launcher 专注于版本管理和更新,Host 专注于插件运行时
|
||||
2. **减少权限需求**:插件安装不需要通过 Launcher,减少了权限提升的场景
|
||||
3. **简化代码**:删除了大量桥接代码和复杂的协调逻辑
|
||||
4. **更好的用户体验**:插件安装在 Host 启动时完成,用户体验更流畅
|
||||
|
||||
### 潜在风险
|
||||
1. **功能回归风险**:删除了大量代码,需要确保所有功能都已正确迁移
|
||||
2. **兼容性**:CLI 命令作为兼容性入口,需要确保仍然正常工作
|
||||
3. **升级路径**:现有用户的待处理插件队列需要正确迁移
|
||||
4. **错误处理**:Host 启动时的插件安装失败需要妥善处理
|
||||
|
||||
### 建议
|
||||
1. 完整测试插件市场安装/升级流程
|
||||
2. 测试 CLI 插件命令的兼容性
|
||||
3. 测试待处理插件操作在 Host 启动时的应用
|
||||
4. 验证升级路径,确保现有用户平滑过渡
|
||||
5. 检查错误处理和日志记录是否完善
|
||||
83
docs/auto_commit_md/20260528_1ef47c7.md
Normal file
83
docs/auto_commit_md/20260528_1ef47c7.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: 1ef47c780bea380088d2615e8f4ec7d478ca5aa5
|
||||
- **短哈希**: 1ef47c7
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 11:13:14 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
refactor(launcher): add DI, IUpdateEngine facade, and architecture tests
|
||||
|
||||
## 变更统计
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 变更文件数 | 31 |
|
||||
| 新增行数 | 168 |
|
||||
| 删除行数 | 1512 |
|
||||
| 净变化 | -1344 |
|
||||
|
||||
## 详细变更分析
|
||||
|
||||
### 新增文件
|
||||
1. `LanMountainDesktop.Launcher/Update/IUpdateEngine.cs` - 新增更新引擎接口
|
||||
2. `LanMountainDesktop.Tests/LauncherArchitectureTests.cs` - 新增架构测试文件
|
||||
|
||||
### 删除文件
|
||||
1. `LanMountainDesktop.Launcher/Services/LauncherFlowCoordinator.cs`
|
||||
2. `LanMountainDesktop.Launcher/Services/LauncherFlowCoordinator.HostStartupMonitor.cs`
|
||||
3. `LanMountainDesktop.Launcher/Services/LauncherFlowCoordinator.LaunchOrchestrator.cs`
|
||||
4. `LanMountainDesktop.Launcher/Services/LauncherFlowCoordinator.UiPresenter.cs`
|
||||
|
||||
### 重命名文件
|
||||
1. `LanMountainDesktop.Launcher/Update/UpdateEngineService.cs` → `LanMountainDesktop.Launcher/Update/UpdateEngineFacade.cs`
|
||||
|
||||
### 主要变更点
|
||||
|
||||
#### 1. 依赖注入重构
|
||||
- 新增 `LanMountainDesktop.Launcher/Shell/LauncherServiceRegistration.cs` - DI 服务注册
|
||||
- 修改 `LanMountainDesktop.Launcher/Shell/LauncherCompositionRoot.cs` - 组合根
|
||||
- 更新 `LanMountainDesktop.Launcher/Program.cs` - 入口点调整
|
||||
|
||||
#### 2. 更新引擎重构
|
||||
- 新增 `IUpdateEngine` 接口,定义更新引擎契约
|
||||
- `UpdateEngineService` 重命名为 `UpdateEngineFacade` 并实现接口
|
||||
- 将更新相关逻辑从巨大的协调器中解耦
|
||||
|
||||
#### 3. 协调器移除
|
||||
- 删除了 `LauncherFlowCoordinator` 及其分部类(共约 1436 行代码)
|
||||
- 功能已由 `LauncherOrchestrator` + `LaunchPipeline` 替代
|
||||
|
||||
#### 4. 架构测试
|
||||
- 新增 `LauncherArchitectureTests` 测试:
|
||||
- 验证 Deployment/Update/Startup/Infrastructure 命名空间不依赖 Avalonia
|
||||
- 确认 `LauncherFlowCoordinator` 已不存在
|
||||
|
||||
#### 5. 命名空间调整
|
||||
- 多个视图文件的 `using` 语句从 `LanMountainDesktop.Launcher.Services` 改为 `LanMountainDesktop.Launcher.Infrastructure`
|
||||
|
||||
#### 6. 文档更新
|
||||
- 更新 `docs/LAUNCHER.md`,反映新的架构设计
|
||||
- 移除对 `LauncherFlowCoordinator` 的描述
|
||||
- 添加对 `LauncherOrchestrator` / `LaunchPipeline` 的说明
|
||||
- 文档化 `IUpdateEngine` / `UpdateEngineFacade`
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
### 优势
|
||||
1. **架构清晰**:通过 DI 和接口解耦,代码结构更清晰
|
||||
2. **责任分离**:将巨型协调器拆分为多个职责单一的组件
|
||||
3. **可测试性**:新增架构测试,确保关键架构约束得到执行
|
||||
4. **文档更新**:同步更新了架构文档
|
||||
5. **代码简化**:净减少 1344 行代码,去除了冗余
|
||||
|
||||
### 潜在风险
|
||||
1. **大规模删除**:删除了大量代码,需要确保没有遗漏功能
|
||||
2. **依赖注入引入**:新引入 DI 框架,需要验证服务注册是否完整
|
||||
3. **接口变更**:`UpdateEngineService` 重命名并改为接口实现,需确保所有引用都已更新
|
||||
|
||||
### 建议
|
||||
1. 运行完整的测试套件,特别是启动流程和更新相关测试
|
||||
2. 进行端到端测试,验证启动流程是否正常工作
|
||||
3. 检查插件相关功能是否仍然正常(提到了插件 pending 处理)
|
||||
45
docs/auto_commit_md/20260528_545dee8.md
Normal file
45
docs/auto_commit_md/20260528_545dee8.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: 545dee85a79942a18b18a81a86a53bb700161f9d
|
||||
- **短哈希**: 545dee8
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 10:28:16 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
fix(launcher): wire HostStartupMonitor into launch flow
|
||||
|
||||
## 变更统计
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 变更文件数 | 1 |
|
||||
| 新增行数 | 1 |
|
||||
| 删除行数 | 1 |
|
||||
| 净变化 | 0 |
|
||||
|
||||
## 详细变更分析
|
||||
|
||||
### 变更的文件
|
||||
`LanMountainDesktop.Launcher/Startup/HostStartupMonitor.cs`
|
||||
|
||||
### 具体变更
|
||||
修改了 `HostStartupMonitor` 中的 `Request` 记录的 `ComposeLaunchDetails` 函数签名:
|
||||
- **之前**:`Func<bool, bool, bool, Dictionary<string, string>>`
|
||||
- **之后**:`Func<bool, bool, Dictionary<string, string>>`
|
||||
|
||||
移除了第三个布尔参数。
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
### 优势
|
||||
1. **简化接口**:减少了不必要的参数
|
||||
2. **保持兼容性**:这是一个小的调整,不会造成大的影响
|
||||
|
||||
### 潜在风险
|
||||
1. **调用点需要同步更新**:需要确保所有调用 `HostStartupMonitor` 的地方都已同步更新
|
||||
2. **参数用途不明确**:不清楚移除的参数原本的用途
|
||||
|
||||
### 建议
|
||||
1. 检查所有调用点,确保已同步更新
|
||||
2. 运行相关测试,确保功能正常
|
||||
98
docs/auto_commit_md/20260528_a26b6fa.md
Normal file
98
docs/auto_commit_md/20260528_a26b6fa.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: a26b6faace509f2ff8806e95fe5891ce4b325fc4
|
||||
- **短哈希**: a26b6fa
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 11:03:49 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
refactor(launcher): replace LauncherFlowCoordinator with LaunchPipeline and slim App shell
|
||||
|
||||
## 变更统计
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 变更文件数 | 19 |
|
||||
| 新增行数 | 2517 |
|
||||
| 删除行数 | 788 |
|
||||
| 净变化 | +1729 |
|
||||
|
||||
## 详细变更分析
|
||||
|
||||
### 新增文件
|
||||
1. `LanMountainDesktop.Launcher/Shell/EntryHandlers/LaunchEntryHandlers.cs` - 启动入口处理器
|
||||
2. `LanMountainDesktop.Launcher/Shell/EntryHandlers/PreviewEntryHandler.cs` - 预览入口处理器
|
||||
3. `LanMountainDesktop.Launcher/Shell/LauncherCompositionRoot.cs` - 组合根
|
||||
4. `LanMountainDesktop.Launcher/Shell/LauncherOrchestrator.cs` - 启动协调器
|
||||
5. `LanMountainDesktop.Launcher/Startup/ExistingHostProbe.cs` - 现有主机探测
|
||||
6. `LanMountainDesktop.Launcher/Startup/HostLaunchModels.cs` - 主机启动模型
|
||||
7. `LanMountainDesktop.Launcher/Startup/HostLaunchService.cs` - 主机启动服务
|
||||
8. `LanMountainDesktop.Launcher/Startup/LaunchAttemptDetails.cs` - 启动尝试详情
|
||||
9. `LanMountainDesktop.Launcher/Startup/LaunchPipeline.cs` - 启动管道
|
||||
10. `LanMountainDesktop.Launcher/Startup/LaunchUiPresenter.cs` - UI 展示器
|
||||
11. `LanMountainDesktop.Launcher/Startup/Phases/ApplyPendingUpdatePhase.cs` - 应用待更新阶段
|
||||
12. `LanMountainDesktop.Launcher/Startup/Phases/CleanupDeploymentsPhase.cs` - 清理部署阶段
|
||||
13. `LanMountainDesktop.Launcher/Startup/Phases/ExistingHostProbePhase.cs` - 现有主机探测阶段
|
||||
14. `LanMountainDesktop.Launcher/Startup/Phases/LaunchHostPhase.cs` - 启动主机阶段
|
||||
15. `LanMountainDesktop.Launcher/Startup/Phases/MonitorStartupPhase.cs` - 监控启动阶段
|
||||
16. `LanMountainDesktop.Launcher/Startup/Phases/OobeGatePhase.cs` - OOBE 关卡阶段
|
||||
|
||||
### 主要变更文件
|
||||
1. `LanMountainDesktop.Launcher/App.axaml.cs` - 大幅精简,移除大量逻辑
|
||||
|
||||
### 主要变更点
|
||||
|
||||
#### 1. 架构重构
|
||||
- **移除巨型协调器**:将 `LauncherFlowCoordinator` 的功能拆分到多个职责单一的类中
|
||||
- **引入管道模式**:新增 `LaunchPipeline` 来管理启动流程
|
||||
- **阶段化设计**:将启动流程拆分为多个独立的阶段(Phase)
|
||||
|
||||
#### 2. 启动阶段设计
|
||||
新增以下启动阶段:
|
||||
- `CleanupDeploymentsPhase` - 清理部署
|
||||
- `ExistingHostProbePhase` - 现有主机探测
|
||||
- `ApplyPendingUpdatePhase` - 应用待更新
|
||||
- `OobeGatePhase` - OOBE 关卡
|
||||
- `LaunchHostPhase` - 启动主机
|
||||
- `MonitorStartupPhase` - 监控启动
|
||||
|
||||
#### 3. 核心组件
|
||||
- **LauncherOrchestrator** - 负责整体协调
|
||||
- **LauncherCompositionRoot** - 组合根,负责对象组装
|
||||
- **HostLaunchService** - 主机启动服务
|
||||
- **ExistingHostProbe** - 现有主机探测逻辑
|
||||
- **LaunchUiPresenter** - UI 展示逻辑
|
||||
|
||||
#### 4. 入口处理
|
||||
- 新增 `LaunchEntryHandlers` 和 `PreviewEntryHandler`
|
||||
- 将入口处理逻辑从 `App` 类中移出
|
||||
|
||||
#### 5. App 类精简
|
||||
- `App.axaml.cs` 从 815 行大幅减少
|
||||
- 逻辑被分散到各个专门的类中
|
||||
|
||||
#### 6. 测试更新
|
||||
- `LauncherAirAppLifecycleServiceTests` 更新以使用新的入口处理器
|
||||
- `LauncherGlobalUsings.cs` 添加新的命名空间引用
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
### 优势
|
||||
1. **职责分离**:每个类职责更加单一清晰
|
||||
2. **可扩展性**:通过阶段模式,方便添加新的启动阶段
|
||||
3. **可测试性**:各个组件可以独立测试
|
||||
4. **代码组织**:文件结构更清晰,便于维护
|
||||
5. **增量变化**:虽然新增了很多代码,但这是为了更好的架构
|
||||
|
||||
### 潜在风险
|
||||
1. **复杂度增加**:组件数量增多,理解整个流程需要查看更多文件
|
||||
2. **阶段顺序依赖**:阶段之间有依赖关系,需要确保顺序正确
|
||||
3. **状态管理**:`LaunchContext` 需要在多个阶段之间传递状态,需确保状态一致性
|
||||
4. **回归风险**:大规模重构可能引入隐藏的 bug
|
||||
|
||||
### 建议
|
||||
1. 为每个阶段编写单元测试
|
||||
2. 编写集成测试验证完整启动流程
|
||||
3. 考虑添加流程图文档,帮助理解各阶段关系
|
||||
4. 进行充分的端到端测试,确保各种启动场景正常工作
|
||||
109
docs/auto_commit_md/20260528_b219f10.md
Normal file
109
docs/auto_commit_md/20260528_b219f10.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: b219f109ec1c69c21d57be7ac3e03dcd6f981877
|
||||
- **短哈希**: b219f10
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 10:43:30 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
refactor(launcher): reorganize into responsibility folders
|
||||
|
||||
## 变更统计
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 变更文件数 | 57 |
|
||||
| 新增行数 | 92 |
|
||||
| 删除行数 | 197 |
|
||||
| 净变化 | -105 |
|
||||
|
||||
## 详细变更分析
|
||||
|
||||
### 主要目录重组
|
||||
此提交主要是将文件从单一的 `Services` 文件夹重新组织到按职责划分的文件夹中:
|
||||
|
||||
#### 1. AirApp 相关
|
||||
- 从 `Services/AirApp/` 移动到 `AirApp/`
|
||||
- 涉及文件:
|
||||
- `AirAppHostLocator.cs`
|
||||
- `AirAppInstanceKey.cs`
|
||||
- `IAirAppProcessStarter.cs`
|
||||
- `LauncherAirAppLifecycleIpcHost.cs`
|
||||
- `LauncherAirAppLifecycleService.cs`
|
||||
|
||||
#### 2. Deployment 相关
|
||||
- 从 `Services/` 移动到 `Deployment/`
|
||||
- 涉及文件:
|
||||
- `DeploymentLocator.cs`
|
||||
- `HostDiscoveryOptions.cs`
|
||||
- `HostLaunchPlan.cs`
|
||||
- `HostResolutionResult.cs`
|
||||
- `LegacyVersionDetector.cs`
|
||||
|
||||
#### 3. Infrastructure 相关
|
||||
- 从 `Services/` 移动到 `Infrastructure/`
|
||||
- 涉及文件:
|
||||
- `Commands.cs`
|
||||
- `DataLocationResolver.cs`
|
||||
- `DeferredSplashStageReporter.cs`
|
||||
- `DotNetRuntimeProbe.cs`
|
||||
- `ISplashStageReporter.cs`
|
||||
- `LanguagePreferenceService.cs`
|
||||
- `LauncherBackgroundService.cs`
|
||||
- `LauncherDebugSettingsStore.cs`
|
||||
- `LauncherExecutionContext.cs`
|
||||
- `Logger.cs`
|
||||
- `ThemeService.cs`
|
||||
|
||||
#### 4. Oobe 相关
|
||||
- 从 `Services/` 移动到 `Oobe/`
|
||||
- 涉及文件:
|
||||
- `DataLocationOobeStep.cs`
|
||||
- `HostAppSettingsOobeMerger.cs`
|
||||
- `IOobeStep.cs`
|
||||
- `LauncherWindowsStartupService.cs`
|
||||
- `OobeStateService.cs`
|
||||
- `PrivacyAgreementService.cs`
|
||||
- `WelcomeOobeStep.cs`
|
||||
|
||||
#### 5. Startup 相关
|
||||
- 从 `Services/` 移动到 `Startup/`
|
||||
- 涉及文件:
|
||||
- `StartupAttemptRegistry.cs`
|
||||
- `StartupDiagnostics.cs`
|
||||
- `StartupSuccessTracker.cs`
|
||||
|
||||
#### 6. Update 相关
|
||||
- 从 `Services/` 移动到 `Update/`
|
||||
- 涉及文件:
|
||||
- `IUpdateProgressReporter.cs`
|
||||
- `NullUpdateProgressReporter.cs`
|
||||
- `UpdateCheckService.cs`
|
||||
- `UpdateEngineService.cs`
|
||||
|
||||
### 其他变更
|
||||
1. 新增 `GlobalUsings.cs` - 添加全局 using 语句
|
||||
2. 新增 `LauncherGlobalUsings.cs`(测试项目)- 测试项目的全局 using
|
||||
3. `OobeWindow.axaml.cs` - 更新命名空间引用
|
||||
4. 多个测试文件更新 - 更新命名空间引用
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
### 优势
|
||||
1. **更好的组织结构**:按职责划分文件夹,代码组织更清晰
|
||||
2. **易于导航**:开发者可以更快找到相关功能的文件
|
||||
3. **模块化**:每个文件夹代表一个功能模块
|
||||
4. **可维护性提升**:相关文件放在一起,便于维护
|
||||
|
||||
### 潜在风险
|
||||
1. **合并冲突风险**:大量文件移动可能导致合并冲突
|
||||
2. **引用更新不完整**:需要确保所有 using 语句和引用都已更新
|
||||
3. **文档需要同步**:相关文档可能需要更新以反映新的文件结构
|
||||
4. **Git 历史**:文件移动可能会影响 Git 历史追踪
|
||||
|
||||
### 建议
|
||||
1. 运行完整的编译检查,确保没有遗漏的引用
|
||||
2. 运行测试套件,确保所有测试通过
|
||||
3. 检查相关文档是否需要更新
|
||||
4. 考虑为新的文件夹结构添加 README 说明
|
||||
103
docs/auto_commit_md/20260528_ebe35d6.md
Normal file
103
docs/auto_commit_md/20260528_ebe35d6.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: ebe35d6f91b844dcdf3729d0d894875804749e9a
|
||||
- **短哈希**: ebe35d6
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 10:27:33 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
fix(launcher): extract startup subsystem and harden IPC detection
|
||||
|
||||
## 变更统计
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 变更文件数 | 14 |
|
||||
| 新增行数 | 1990 |
|
||||
| 删除行数 | 1535 |
|
||||
| 净变化 | +455 |
|
||||
|
||||
## 详细变更分析
|
||||
|
||||
### 概述
|
||||
此提交将启动子系统从庞大的 `LauncherFlowCoordinator` 中提取出来,形成独立的、职责更清晰的模块,并加强了 IPC 检测机制。
|
||||
|
||||
### 新增文件
|
||||
|
||||
#### 1. 启动子系统核心组件
|
||||
- `HostActivationPolicy.cs` - 主机激活策略
|
||||
- `HostStartupMonitor.cs` - 主机启动监控器
|
||||
- `PublicIpcConnection.cs` - 公共 IPC 连接
|
||||
- `StartupDiagnostics.cs` - 启动诊断
|
||||
- `StartupSuccessTracker.cs` - 启动成功跟踪器
|
||||
- `StartupTimeoutPolicy.cs` - 启动超时策略
|
||||
|
||||
#### 2. 分部类文件
|
||||
- `LauncherFlowCoordinator.HostStartupMonitor.cs` - 主机启动监控器分部类
|
||||
- `LauncherFlowCoordinator.LaunchOrchestrator.cs` - 启动协调器分部类
|
||||
- `LauncherFlowCoordinator.UiPresenter.cs` - UI 展示器分部类
|
||||
|
||||
#### 3. 测试文件
|
||||
- `HostActivationPolicyTests.cs` - 主机激活策略测试
|
||||
- `StartupSuccessTrackerTests.cs` - 启动成功跟踪器测试
|
||||
|
||||
### 主要变更的文件
|
||||
- `LauncherFlowCoordinator.cs` - 大幅简化(1612行 → 更少)
|
||||
- `LauncherMultiInstancePolicyTests.cs` - 更新命名空间引用
|
||||
- `LauncherStartupTimeoutPolicyTests.cs` - 更新测试以引用新文件
|
||||
|
||||
### 核心功能改进
|
||||
|
||||
#### 1. 提取启动子系统
|
||||
- 将启动相关逻辑从 `LauncherFlowCoordinator` 中分离
|
||||
- 形成独立的、可测试的组件
|
||||
- 每个组件职责单一清晰
|
||||
|
||||
#### 2. 主机激活策略 (`HostActivationPolicy`)
|
||||
- `ShouldProbeExistingHostBeforeLaunch()` - 决定是否在启动前探测现有主机
|
||||
- `IsExistingHostReadyForLauncherDecision()` - 检查现有主机是否准备好
|
||||
- `IsRecoverableActivationFailure()` - 判断激活失败是否可恢复
|
||||
- 退出码分类方法
|
||||
|
||||
#### 3. 启动成功跟踪器 (`StartupSuccessTracker`)
|
||||
- 支持多种启动策略(前台、重启后台、重启托盘)
|
||||
- 根据不同阶段判断启动成功
|
||||
- 提供恢复成功状态构建
|
||||
|
||||
#### 4. 启动超时策略 (`StartupTimeoutPolicy`)
|
||||
- 软超时:30秒
|
||||
- 硬超时:120秒
|
||||
- IPC 连接超时配置
|
||||
- 重试间隔配置
|
||||
|
||||
#### 5. 启动诊断 (`StartupDiagnostics`)
|
||||
- 可通过环境变量 `LMD_LAUNCHER_STARTUP_DIAG=1` 启用
|
||||
- 记录启动事件到 JSONL 文件
|
||||
- 追踪 Shell 状态变化
|
||||
|
||||
#### 6. 加强 IPC 检测 (`PublicIpcConnection`)
|
||||
- 带退避的连接尝试
|
||||
- 更好的错误处理
|
||||
- 超时控制
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
### 优势
|
||||
1. **更好的模块化**:代码组织更清晰,每个组件职责单一
|
||||
2. **可测试性提升**:提取出的组件都有对应的测试
|
||||
3. **诊断能力增强**:新增启动诊断功能,便于问题排查
|
||||
4. **IPC 检测更健壮**:带退避的重试机制,超时配置更精细
|
||||
5. **代码可读性**:庞大的协调器被拆解,更易理解和维护
|
||||
|
||||
### 潜在风险
|
||||
1. **回归风险**:大规模重构可能引入隐藏的 bug
|
||||
2. **组件协调**:需要确保新组件之间的交互正确
|
||||
3. **测试覆盖**:需要确保所有路径都有充分的测试
|
||||
|
||||
### 建议
|
||||
1. 完整测试启动流程,包括各种边缘情况
|
||||
2. 测试多实例场景
|
||||
3. 测试重启场景(托盘、后台等)
|
||||
4. 启用启动诊断,验证诊断功能正常
|
||||
5. 测试超时场景
|
||||
Reference in New Issue
Block a user