8.2 KiB
迁移路线图
所属项目: free-code .NET 10 重写 文档类型: 规划设计 来源章节: DESIGN-NET10-PART3.md § 24 上级文档: 测试与构建总览
概述
从 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: 终端 UI(Week 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 才开始
单人开发时按串行顺序执行,团队协作时按上述拆分并行。