free-code-dotnet/docs/测试与构建/测试与构建-迁移路线图.md
应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

235 lines
8.2 KiB
Markdown
Raw Permalink 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 重写
> 文档类型: 规划设计
> 来源章节: DESIGN-NET10-PART3.md § 24
> 上级文档: [测试与构建总览](测试与构建.md)
---
## 概述
从 TypeScript/Bun 到 .NET 10 的完整重写分 12 个阶段、35 个工作周推进,设置 8 个里程碑节点作为质量检查点。第 36-37 周为缓冲期和文档收尾,实际总工期约 37 周。
路线图遵循"先主路径、后完整功能、最后质量和发布"的顺序,确保每个里程碑都有可运行的产物,而不是等到全部完成才能验证。
---
## 24.1 35 周详细规划
### Phase 1: 基础框架Week 1-4
```
Phase 1: 基础框架 (Week 1-4)
├── Week 1: 解决方案结构 + Directory.Build.props + 所有 17 个项目创建
├── Week 2: DI 容器 + 核心接口 (ITool, ICommand, IApiProvider, IQueryEngine)
├── Week 3: System.CommandLine CLI 解析 + QuickPathHandler
├── Week 4: AppState record + AppStateStore + FeatureFlags
└── 里程碑 M1: dotnet run 输出版本号
```
**目标**: 建立可编译的解决方案骨架,所有接口定义就位,最基础的 CLI 入口可以运行。
---
### Phase 2: 核心引擎Week 5-8
```
Phase 2: 核心引擎 (Week 5-8)
├── Week 5: QueryEngine 流式循环 + Message 类型
├── Week 6: SystemPromptBuilder (6段构建)
├── Week 7: ToolBase<TInput,TOutput> + FluentValidation
├── Week 8: ToolRegistry + CommandRegistry 注册
└── 里程碑 M2: 一次性 prompt 模式工作 (-p)
```
**目标**: 一次性模式(`-p "prompt"`)可以向 API 发送请求并接收流式响应,不需要完整 UI。
---
### Phase 3: API 提供商Week 9-11
```
Phase 3: API 提供商 (Week 9-11)
├── Week 9: AnthropicProvider SSE 解析
├── Week 10: CodexProvider 消息格式适配
├── Week 11: BedrockProvider + VertexProvider + FoundryProvider
└── 里程碑: 所有 5 个提供商路由工作
```
**目标**: 环境变量切换任意一个提供商都能正常处理流式响应。
---
### Phase 4: 核心工具Week 12-15
```
Phase 4: 核心工具 (Week 12-15)
├── Week 12: FileReadTool + FileEditTool + FileWriteTool
├── Week 13: BashTool + GlobTool + GrepTool
├── Week 14: AgentTool + SkillTool
├── Week 15: WebFetch + WebSearch + TodoWrite + AskUser + 其他
└── 里程碑 M3: Bash/Read/Edit 工具链可用
```
**目标**: 模型可以调用文件操作和 Shell 命令工具,完成基本编码任务。
---
### Phase 5: 命令实现Week 16-18
```
Phase 5: 命令实现 (Week 16-18)
├── Week 16: 核心 30 个命令 (help, exit, clear, config, model, login...)
├── Week 17: 功能命令 25 个 (mcp, plugins, skills, tasks...)
├── Week 18: 条件 + 内部命令 15 个
└── 里程碑: 所有 70+ 命令注册
```
**目标**: 全部斜杠命令可以被解析和分发,核心命令(`/help``/model``/login`)有完整实现。
---
### Phase 6: 终端 UIWeek 19-22
```
Phase 6: 终端 UI (Week 19-22)
├── Week 19: Terminal.Gui App + REPLScreen 基本布局
├── Week 20: PromptInput + MessageList + 流式渲染
├── Week 21: PermissionDialog + ToolUseDisplay + StatusBar
├── Week 22: Theme + Keybindings + CompanionSprite
└── 里程碑 M4: 交互式 REPL 可用
```
**目标**: 用户可以在终端中交互式输入 prompt 并看到流式输出,工具调用有权限确认界面。
---
### Phase 7: 基础设施Week 23-25
```
Phase 7: 基础设施 (Week 23-25)
├── Week 23: MCP SDK (传输层 + 客户端 + McpClientManager)
├── Week 24: LSP (LspClientManager + LspServerInstance)
├── Week 25: OAuth + Bridge + BackgroundTasks + RateLimit
└── 里程碑 M5: 功能对等原始项目
```
**目标**: MCP 服务器可以连接并提供工具LSP 集成工作Bridge 模式可以与 IDE 通信,这是与原始 TypeScript 项目功能对等的节点。
---
### Phase 8: 高级服务Week 26-28
```
Phase 8: 高级服务 (Week 26-28)
├── Week 26: SessionMemory + AutoDream
├── Week 27: TeamMemorySync + RemoteSessions
├── Week 28: Voice + Notifications + Companion
└── 里程碑: 所有高级功能工作
```
**目标**: 会话记忆、团队记忆同步、语音输入、Companion 精灵等扩展功能全部就位。
---
### Phase 9: 扩展系统Week 29-30
```
Phase 9: 扩展系统 (Week 29-30)
├── Week 29: SkillLoader + frontmatter 解析
├── Week 30: PluginManager + AssemblyLoadContext + Marketplace
└── 里程碑 M6: 可加载外部技能和插件
```
**目标**: 外部 `.md` 技能文件和 `.dll` 插件可以在运行时动态加载,插件市场接口就位。
---
### Phase 10: 测试Week 31-33
```
Phase 10: 测试 (Week 31-33)
├── Week 31: 120 单元测试 (工具/引擎/提供商/服务)
├── Week 32: 60 集成测试 (MCP/LSP/Bridge/管道)
├── Week 33: 20 E2E 测试 + 性能基准
└── 里程碑 M7: 核心路径 80%+ 覆盖率
```
**目标**: 三层测试套件全部通过,覆盖率报告显示核心路径 80% 以上,性能基准记录在案。
---
### Phase 11: 构建发布Week 34-35
```
Phase 11: 构建发布 (Week 34-35)
├── Week 34: AOT 优化 + Source Generator + 5 平台构建
├── Week 35: 安装脚本 + CI/CD + 文档
└── 里程碑 M8: 一键安装脚本工作
```
**目标**: `install.sh` 可以在 macOS 和 Linux 上一键安装CI/CD 管道自动构建和发布。
---
### Phase 12: 文档Week 36-37缓冲期
```
Phase 12: 文档 (Week 36-37, buffer)
├── README + 架构文档 + API 文档
└── 最终验收
```
**目标**: 文档完整,所有设计文档更新为最终实现,项目可以公开发布。
---
## 24.2 里程碑表
| 里程碑 | 完成周 | 验收标准 | 依赖 |
|--------|--------|---------|------|
| M1 | Week 4 | `dotnet run` 输出版本号,无运行时错误 | Phase 1 完成 |
| M2 | Week 8 | `-p "hello"` 返回 API 响应,流式输出到终端 | Phase 2 完成 |
| M3 | Week 15 | 模型成功调用 Bash/Read/Edit 工具完成简单任务 | Phase 4 完成 |
| M4 | Week 22 | 交互式 REPL 可用,权限确认 UI 正常 | Phase 6 完成 |
| M5 | Week 25 | 功能对等原始 TypeScript 项目MCP/LSP/Bridge 工作 | Phase 7 完成 |
| M6 | Week 30 | 可加载外部技能文件和插件 dll | Phase 9 完成 |
| M7 | Week 33 | 测试覆盖率 >= 80%,全部测试通过 | Phase 10 完成 |
| M8 | Week 35 | 一键安装脚本在 macOS/Linux 工作CI 绿灯 | Phase 11 完成 |
---
## 24.3 风险评估
| 风险 | 概率 | 影响 | 缓解策略 |
|------|------|------|---------|
| MCP SDK 无成熟 .NET 库 | 高 | 高 | Phase 7 前期自研传输层,参考官方 TypeScript SDK 实现 |
| Terminal.Gui v2 组件不足 | 中 | 中 | Spectre.Console 补充缺失组件,必要时自定义 View |
| AOT 反射限制 | 中 | 高 | Source Generator 生成序列化代码,启用 `EnableAotAnalyzer` 提前暴露问题 |
| 插件 ALC 卸载内存泄漏 | 低 | 中 | 定期监控内存,提供强制 GC 入口,文档说明已知限制 |
| LSP OmniSharp 库兼容性 | 中 | 中 | StreamJsonRpc 作为备选,最坏情况自实现 JSON-RPC 层 |
| StreamJsonRpc AOT 兼容 | 中 | 中 | 评估期间同时准备自定义 JSON-RPC 实现Phase 7 初期决策 |
---
## 24.4 并行开发策略
各阶段内部的周可以部分并行推进。具体来说:
- Phase 3 的三家次要提供商Bedrock、Vertex、Foundry可以分配给不同开发者同时实现
- Phase 4 中文件操作工具Week 12和 Shell 工具Week 13无依赖关系可并行
- Phase 10 的单元测试可以在 Phase 7-9 期间随功能完成同步编写,不必等到 Phase 10 才开始
单人开发时按串行顺序执行,团队协作时按上述拆分并行。
---
## 参考资料
- [测试与构建总览](测试与构建.md)
- [测试方案设计](测试与构建-测试方案设计.md)
- [构建与部署](测试与构建-构建与部署.md)
- [原始代码映射 — 测试与构建](reference/原始代码映射-测试与构建.md)
- [总体概述与技术选型](../总体概述与技术选型/总体概述与技术选型.md)