跳转到内容

inside cfggen

arch cfggen 采用以 Context 为核心的模块化架构,通过统一的配置定义生成多语言代码。系统支持 Excel、CSV、JSON 等多种数据源,可输出 Java、C#、Go、Lua、TypeScript 等目标语言。

系统核心控制器,协调所有模块的交互和数据流。

  • Context:全局上下文管理
  • DirectoryStructure:目录结构管理
    • ExplicitDir:显式目录配置
  • Watcher:文件监控器

配置Schema的定义、解析和验证。

  • CfgSchema:Schema模型
  • CfgSchemaResolver:Schema解析器
  • CfgSchemaFilterByTag 被tag过滤后的Schema

从不同格式文件读取配置数据。

  • CfgData:数据模型
  • CfgDataReader:数据读取器
  • CfgSchemaAlignToData 根据数据修改Schema

配置值的解析、转换和验证。

  • CfgValue:值模型
  • CfgValueParser:值解析器
    • VTableParser:excel表解析器
    • VTableJsonParser:josn表解析器
  • RefValidator 数据一致性验证

多语言配置和术语管理。

  • GenI18nById:基于ID的国际化
  • GenI18nByValue:基于值的国际化

多语言代码生成实现。

  • GenJavaCode:Java代码生成器
  • GenCs:C#代码生成器
  • GenGo:Go代码生成器
  • GenLua:Lua代码生成器
  • GenTs:TypeScript代码生成器
  • GenJson:JSON生成器
  • GenJsonByAI:AI辅助JSON生成器
  • GenGd:GDScript代码生成器(Godot引擎)

为外部编辑器提供配置服务。

  • EditorServer:编辑器服务
    • RecordService:记录服务
    • SchemaService:Schema服务

为AI助手提供配置数据查询和操作能力。

  • CfgMcpServer:MCP服务器主类
    • WriteRecordTool:记录写入工具(添加/更新记录)
    • ReadRecordTool:记录读取工具(查询记录)
    • SearchTool:搜索工具(字符串/数字搜索)
    • SchemaTool:模式查询工具(表结构查询)

负责配置数据的持久化存储和文件操作。

  • VTableStorage:table格式表存储(核心写入逻辑)
  • VTableJsonStorage:JSON格式的表存储
  • RecordBlockMapper:记录块映射器(VStruct到RecordBlock映射)
  • RecordBlock:记录块(数据块表示)
  • TableFile:表文件接口
    • ExcelTableFile:Excel表文件实现
    • CsvTableFile:CSV表文件实现
    • ColumnModeExcelTableFile:列模式Excel表文件
    • ColumnModeCsvTableFile:列模式CSV表文件
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Schema │───│ Data │───│ Value │───│ Generators │
│ (Schema) │ │ (数据) │ │ (值处理) │ │ (生成器) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
└────────────────┼────────────────┼────────────────┘
│ │
┌─────▼────────────────▼─────┐
│ Context │
│ (核心协调) │
└────────────────────────────┘
  1. 初始化

    • Context创建和模块注册
    • 目录结构配置
  2. Schema处理

    • 解析Schema定义文件
    • 构建类型系统
    • 验证Schema完整性
  3. 数据读取

    • 识别数据源文件
    • 解析Excel/CSV/JSON格式
    • 转换为内部数据结构
  4. 值处理

    • 解析和转换配置值
    • 类型推断和约束检查
    • 构建关联关系
  5. 代码生成

    • 选择目标语言生成器
    • 渲染代码模板
    • 输出生成文件
  • 上下文传递:Context对象在各模块间传递状态
  • 数据传递:Schema→Data→Value→Generators
  • 写入管道:editorserver/mcpserver/genjsonbyAI→write→文件系统
  • 职责分离,便于维护扩展
  • 接口清晰,模块间解耦
  • 可插拔架构,灵活替换
  • 统一Schema定义
  • 模板驱动代码生成
  • 适配各语言特性(Java、C#、Go、Lua、TypeScript、GDScript)
  • 双模式(ID/值)支持
  • 运行时语言切换
  • 术语验证管理
  • 生成器注册管理
  • 自定义模板支持
  • AI辅助生成