7.7 KiB
7.7 KiB
原始代码映射 — 核心模块
所属项目: free-code .NET 10 重写 文档类型: 参考映射表 上级文档: 核心模块设计总览
说明
本文档建立 .NET 10 类型与原始 TypeScript 源文件之间的映射关系。每一行说明对应 .NET 类型重写了哪个 TS 文件的哪部分逻辑,以及重写时做出的关键设计决策。
核心模块映射表
启动与 CLI 解析
| .NET 类型 | 原始 TS 文件 | 对应逻辑 | 设计变化 |
|---|---|---|---|
Program |
../../../src/entrypoints/cli.tsx |
模块顶层的入口逻辑和条件分支 | 拆分为四阶段,引入 IHostBuilder 管理生命周期 |
QuickPathHandler |
../../../src/entrypoints/cli.tsx |
文件顶部散布的 process.argv.includes() 快速路径检查 |
集中到静态类,Phase 1 执行,无 DI 开销 |
CliCommandBuilder |
../../../src/entrypoints/cli.tsx |
Commander.js 的 program.option(...).action(...) 配置 |
映射到 System.CommandLine 的 RootCommand + Option<T> |
OneShotMode |
../../../src/entrypoints/cli.tsx |
-p 参数触发的非交互式执行路径 |
独立类,与 REPL 模式分离 |
REPLMode |
../../../src/screens/REPL.tsx |
React/Ink 交互式 UI 主循环 | 替换为基于 Spectre.Console 或原生终端 API 的 .NET UI |
查询引擎
| .NET 类型 | 原始 TS 文件 | 对应逻辑 | 设计变化 |
|---|---|---|---|
IQueryEngine |
../../../src/QueryEngine.ts |
隐式的模块导出函数签名 | 显式接口,便于测试替换 |
QueryEngine |
../../../src/QueryEngine.ts |
核心消息循环(约 800 行) | 提取 System Prompt 构建为独立类;IAsyncEnumerable 替换回调式流 |
SubmitMessageOptions |
../../../src/QueryEngine.ts |
query() 函数的参数对象 |
record 类型,不可变,编译期类型安全 |
SystemPromptBuilder |
../../../src/QueryEngine.ts |
内联的 getSystemPrompt() 函数(约 200 行) |
提取为独立接口 IPromptBuilder,支持 DI 替换 |
SDKMessage(联合类型) |
../../../src/types/message.ts |
SDKMessage TypeScript 联合类型 |
C# discriminated union 通过继承体系实现 |
TokenUsage |
../../../src/QueryEngine.ts |
内联的 token 统计逻辑 | 独立 record,从 API 响应头提取 |
工具系统
| .NET 类型 | 原始 TS 文件 | 对应逻辑 | 设计变化 |
|---|---|---|---|
ITool |
../../../src/Tool.ts |
工具基础接口定义(约 40 行) | 拆分为非泛型 ITool 和泛型 ITool<TInput,TOutput> 两层 |
ITool<TInput,TOutput> |
../../../src/Tool.ts |
工具执行方法签名 | 泛型化,输入/输出类型在编译期检查 |
ToolBase<TInput,TOutput> |
../../../src/Tool.ts |
工具基类的默认实现 | 抽象类,集成 FluentValidation 验证点 |
ToolExecutionContext |
../../../src/Tool.ts |
工具执行时接收的上下文对象 | record 类型,不可变,避免工具意外修改上下文 |
ToolCategory |
../../../src/Tool.ts |
工具分类枚举 | 直接映射,枚举成员一一对应 |
BashTool |
../../../src/tools/BashTool.tsx |
Bash 工具完整实现 | child_process.spawn → Process;Promise.race → .WaitAsync(timeout) |
BashToolInput |
../../../src/tools/BashTool.tsx |
Bash 工具输入类型 | TypeScript 接口 → C# record,不可变 |
BashToolOutput |
../../../src/tools/BashTool.tsx |
Bash 工具输出类型 | 同上 |
ToolRegistry |
../../../src/tools.ts |
getTools() 函数和工具数组 |
注册表类,懒加载缓存,稳定排序保证 prompt cache |
CommandClassifier |
../../../src/tools/BashTool.tsx |
命令只读性判断逻辑 | 提取为独立工具类 |
命令系统
| .NET 类型 | 原始 TS 文件 | 对应逻辑 | 设计变化 |
|---|---|---|---|
ICommand |
../../../src/commands.ts |
命令对象的隐式接口约定 | 显式接口,CommandCategory 和 CommandAvailability 枚举化 |
CommandContext |
../../../src/commands.ts |
命令执行时传入的上下文 | 独立 record,包含会话状态和 UI 接口 |
CommandResult |
../../../src/commands.ts |
命令执行返回值 | record(bool Success, string? Output) |
CommandRegistry |
../../../src/commands.ts |
COMMAND_LIST 数组及导出函数 |
注册表类,按认证状态和 feature flag 动态过滤 |
CommandCategory |
../../../src/commands.ts |
type: 'prompt' | 'local' | 'local-jsx' |
C# enum,JSX 对话框模式映射为 LocalDialog |
CommandAvailability |
../../../src/commands.ts |
availability: string 字段 |
C# enum,强类型替换字符串约定 |
| 各具体命令类 | ../../../src/commands/ |
各 *Command.ts 文件 |
一一对应,每个文件对应一个实现类 |
API 多提供商路由
| .NET 类型 | 原始 TS 文件 | 对应逻辑 | 设计变化 |
|---|---|---|---|
IApiProvider |
../../../src/services/api/ |
各提供商模块的导出函数签名 | 统一抽象接口,所有提供商实现同一接口 |
ApiProviderRouter |
../../../src/services/api/ |
process.env 条件判断选择客户端 |
路由器类,构造时确定提供商,运行时不再判断 |
ApiProviderType |
../../../src/services/api/ |
字符串常量区分提供商 | C# enum,编译期安全 |
ApiRequest |
../../../src/services/api/ |
API 调用参数对象 | record,不可变 |
AnthropicProvider |
../../../src/services/api/claude.ts |
Anthropic SDK 流式调用(约 2000 行) | 移除 SDK 依赖,直接 HttpClient + 手动 SSE 解析 |
CodexProvider |
../../../src/services/api/ |
OpenAI Codex 客户端 | 对应原始 Codex fetch adapter |
BedrockProvider |
../../../src/services/api/ |
AWS Bedrock 客户端 | 使用 AWS SDK for .NET |
VertexProvider |
../../../src/services/api/ |
Google Vertex 客户端 | 使用 Google Cloud SDK for .NET |
FoundryProvider |
../../../src/services/api/ |
Anthropic Foundry 客户端 | 基于 AnthropicProvider 适配自定义端点 |
未直接映射的原始文件
以下 ../../../src/ 文件的逻辑分散到了基础设施设计或服务子系统文档中:
| 原始文件 | 重写位置 |
|---|---|
../../../src/state/ |
基础设施设计 — 状态管理 |
../../../src/services/mcp* |
基础设施设计 — MCP 协议集成 |
../../../src/services/oauth/ |
服务子系统设计 — 认证 |
../../../src/skills/ |
服务子系统设计 — 技能系统 |
../../../src/plugins/ |
服务子系统设计 — 插件系统 |
../../../src/bridge/ |
服务子系统设计 — IDE 桥接 |
../../../src/tasks/ |
服务子系统设计 — 后台任务 |
../../../src/voice/ |
服务子系统设计 — 语音输入 |
../../../src/components/ |
UI 与扩展设计 |
../../../src/hooks/ |
UI 与扩展设计 |