🚀 代码自动生成模块

基于 OpenClaw + Claude Code 的端到端研发自动化系统核心组件
请求/响应结构体 · 错误码体系 · 认证鉴权规则 全自动生成

Version 1.0.0 | 2026 年 3 月

模块概述

本模块是OpenClaw + Claude Code 端到端研发自动化系统的核心组件,负责根据配置自动生成多语言的 请求/响应结构体、错误码体系和认证鉴权规则。通过声明式配置,开发者可以快速生成高质量、标准化的 API 代码, 大幅提升研发效率。

🎯

多语言支持

支持 Python、Java、Go、TypeScript 四种主流编程语言,一套配置多端生成

高效生成

秒级生成完整代码结构,包含数据模型、错误处理、认证中间件等全套组件

🔐

安全认证

内置 JWT、OAuth2、RBAC、ABAC、API Key 等多种认证方式,灵活配置

🌍

国际化支持

错误码体系支持多语言国际化,轻松应对全球化业务场景

📦

类型安全

生成的代码具备完整的类型定义和验证逻辑,减少运行时错误

🔄

人机协同

支持人工干预和自定义扩展,AI 生成 + 人工优化完美结合

核心价值

维度 传统开发 使用本模块 效率提升
Schema 定义 手动编写每个字段 配置驱动自动生成 90%↓
错误码管理 分散维护,易冲突 统一注册表,自动分类 80%↓
认证实现 重复造轮子 开箱即用的认证服务 95%↓
多语言适配 多套代码分别维护 一套配置多端生成 75%↓
文档同步 手动更新,易过期 代码即文档,实时同步 100%↓

系统架构

📄 配置文件

YAML / JSON

API 规范定义

🔍 ConfigParser

配置解析器

解析验证配置

⚙️ Generator Core

生成引擎核心

调度各生成器

📦 SchemaGenerator

结构体生成器

请求/响应模型

⚠️ ErrorCodeGenerator

错误码生成器

错误体系 + i18n

🔐 AuthGenerator

认证生成器

JWT/RBAC/OAuth2

📁 输出代码

Python/Java/Go/TS

生产就绪代码

数据流说明

  1. 配置输入:开发者编写 YAML/JSON 配置文件,定义 Schema、错误码、认证规则
  2. 解析验证:ConfigParser 解析配置文件,进行语法和语义验证
  3. 模板渲染:TemplateEngine 根据目标语言选择合适的模板进行渲染
  4. 代码生成:各生成器并行工作,生成对应语言的源代码文件
  5. 质量检查:生成的代码经过格式化和基础语法检查
  6. 输出交付:输出完整的目录结构,包含 README 和生成摘要

目录结构

generated/
├── python/                    # Python 代码
│   ├── schemas/              # 数据模型 (Pydantic)
│   │   ├── user_request.py
│   │   ├── order_response.py
│   │   └── __init__.py
│   ├── errors/               # 错误码和异常处理
│   │   ├── error_codes.py
│   │   ├── error_handler.py
│   │   ├── i18n/
│   │   │   ├── zh.json
│   │   │   └── en.json
│   │   └── __init__.py
│   └── auth/                 # 认证鉴权模块
│       ├── auth_config.py
│       ├── jwt_auth.py
│       ├── rbac.py
│       ├── middleware.py
│       └── __init__.py
├── java/                     # Java 代码
│   ├── schemas/              # 数据模型 (POJO + Lombok)
│   ├── errors/               # 错误码枚举
│   └── auth/                 # 认证配置
├── go/                       # Go 代码
│   ├── schemas/              # 数据结构
│   ├── errors/               # 错误定义
│   └── auth/                 # 认证模块
├── typescript/               # TypeScript 代码
│   ├── schemas/              # 接口定义
│   ├── errors/               # 错误码
│   └── auth/                 # 认证服务
├── README.md                 # 项目说明
└── generation_summary.json   # 生成摘要

核心模块详解

  • 📋 ConfigParser (配置解析器)
    负责解析 YAML/JSON 配置文件,提取 Schema 定义、错误码、认证规则等信息。 支持数据验证、默认值填充、嵌套字段解析等功能。

    主要类:ConfigParser, FieldDefinition, SchemaDefinition, ErrorCodeDefinition, AuthRule
  • 📦 SchemaGenerator (结构体生成器)
    根据配置的 Schema 定义,生成多语言的数据模型代码。 Python 使用 Pydantic,Java 使用 POJO+Lombok,Go 使用 Struct,TypeScript 使用 Interface。 支持必填/可选字段、类型转换、验证规则等特性。

    生成内容:数据模型类、字段定义、类型注解、文档注释
  • ⚠️ ErrorCodeGenerator (错误码生成器)
    生成完整的错误码体系,包括错误码常量、注册表、国际化文件、异常处理类。 支持错误码分类(SUCCESS、CLIENT_ERROR、SERVER_ERROR、BUSINESS、AUTH、VALIDATION 等)。

    生成内容:错误码枚举、注册表、i18n 文件、异常基类、工具函数
  • 🔐 AuthGenerator (认证鉴权生成器)
    生成认证鉴权相关代码,支持 JWT、OAuth2、RBAC、ABAC、API Key 等多种认证方式。 包含认证配置、Token 服务、权限检查、中间件等完整组件。

    生成内容:认证配置、JWT 服务、RBAC 服务、认证中间件、权限装饰器
  • 🎨 TemplateEngine (模板引擎)
    提供模板渲染能力,支持 Jinja2 风格的变量替换。 内置多种语言的标准模板,也支持自定义模板扩展。

    功能:模板加载、变量渲染、缓存机制、内置模板库
  • ⚙️ CodeGenerator (主生成器)
    统一的生成器入口,协调各子生成器工作。 支持命令行调用和编程式调用,提供完整的生成流程控制和进度反馈。

    功能:配置加载、生成调度、文件输出、日志记录、错误处理

快速开始

1. 安装依赖

# Python 环境要求:3.8+
pip install pydantic pyyaml

2. 准备配置文件

# api_config.yaml
project_name: "MyAPI"
version: "1.0.0"
languages:
  - python
  - typescript

schemas:
  - name: UserRequest
    description: "用户请求"
    fields:
      - name: username
        type: string
        required: true
      - name: email
        type: string
        required: true

3. 运行生成器

# 命令行方式
python -m code_generator.generator -c api_config.yaml -o ./generated

# 或编程方式
from code_generator import CodeGenerator

generator = CodeGenerator.from_yaml("api_config.yaml")
result = generator.generate_all(output_dir="./generated")

print(f"Generated {len(result)} files")

4. 使用生成的代码

# Python 示例
from generated.python.schemas import UserRequest
from generated.python.errors import ErrorCodes, handle_error
from generated.python.auth import JWTAuthService, require_permission

# 使用 Schema
user = UserRequest(username="john", email="john@example.com")

# 使用错误处理
try:
    if not user.username:
        raise handle_error(ErrorCodes.VAL_001)
except APIException as e:
    print(e.to_dict())

# 使用认证
jwt_service = JWTAuthService()
token = jwt_service.create_access_token(user_id="123", username="john")

配置选项详解

Schema 字段配置

属性 类型 必填 说明 示例
name string 字段名称 username
type string 数据类型 string, integer, boolean, array
required boolean 是否必填 (默认 true) true
description string 字段描述 "用户名称"
default any 默认值 "guest"
validation object 验证规则 {"min_length": 3}

错误码分类

分类 编码范围 说明 HTTP 状态
SUCCESS 000-099 成功状态码 200
CLIENT_ERROR 100-199 客户端错误 400-499
SERVER_ERROR 200-299 服务端错误 500-599
BUSINESS 300-399 业务逻辑错误 400-499
AUTH 400-499 认证授权错误 401-403
VALIDATION 500-599 参数验证错误 422
RATE_LIMIT 600-699 限流错误 429

完整示例

配置文件示例

# api_config.yaml - 完整配置示例
project_name: "ECommerceAPI"
version: "2.0.0"
base_package: "com.ecommerce.api"
languages:
  - python
  - typescript
  - java

schemas:
  - name: ProductCreateRequest
    description: "产品创建请求"
    fields:
      - name: name
        type: string
        required: true
        description: "产品名称"
        validation:
          min_length: 2
          max_length: 100
      - name: price
        type: number
        required: true
        description: "价格"
        validation:
          minimum: 0
      - name: stock
        type: integer
        required: false
        description: "库存数量"
        default: 0

error_codes:
  - code: PROD_001
    http_status: 404
    message: "产品不存在"
    message_en: "Product not found"
    category: BUSINESS
    solution: "请检查产品 ID 是否正确"
  
  - code: PROD_002
    http_status: 400
    message: "库存不足"
    message_en: "Insufficient stock"
    category: BUSINESS
    retryable: true

auth_rules:
  - name: jwt_auth
    type: JWT
    enabled: true
    config:
      secret_key: "${JWT_SECRET}"
      algorithm: HS256
      access_token_expire_minutes: 30
    roles:
      - admin
      - user

endpoints:
  - path: /api/v1/products
    method: POST
    summary: "创建产品"
    request_schema: ProductCreateRequest
    auth_rules:
      - jwt_auth

生成的 Python 代码示例

# generated/python/schemas/product_create_request.py
from typing import Optional
from pydantic import BaseModel, Field

class ProductCreateRequest(BaseModel):
    """产品创建请求"""
    
    name: str  # 产品名称
    price: float  # 价格
    stock: Optional[int] = 0  # 库存数量
    
    class Config:
        json_schema_extra = {
            "description": "产品创建请求"
        }
# generated/python/errors/error_codes.py
from enum import Enum
from dataclasses import dataclass

@dataclass
class ErrorCodeInfo:
    code: str
    http_status: int
    message: str
    message_en: str
    category: str
    solution: str = ""
    retryable: bool = False

class ErrorCodes:
    """错误码定义"""
    
    PROD_001 = "PROD_001"  # HTTP 404: 产品不存在
    PROD_002 = "PROD_002"  # HTTP 400: 库存不足

ERROR_CODE_REGISTRY = {
    ErrorCodes.PROD_001: ErrorCodeInfo(
        code="PROD_001",
        http_status=404,
        message="产品不存在",
        message_en="Product not found",
        category="BUSINESS",
        solution="请检查产品 ID 是否正确",
        retryable=False
    ),
    ErrorCodes.PROD_002: ErrorCodeInfo(
        code="PROD_002",
        http_status=400,
        message="库存不足",
        message_en="Insufficient stock",
        category="BUSINESS",
        retryable=True
    )
}

API 参考文档

CodeGenerator 类

class CodeGenerator:
    """代码生成器主类"""
    
    def __init__(self, config: ConfigData)
    
    @classmethod
    def from_yaml(cls, yaml_path: str) -> CodeGenerator
        """从 YAML 配置文件创建生成器"""
    
    @classmethod
    def from_json(cls, json_path: str) -> CodeGenerator
        """从 JSON 配置文件创建生成器"""
    
    @classmethod
    def from_dict(cls, config_dict: dict) -> CodeGenerator
        """从字典配置创建生成器"""
    
    def generate_all(
        output_dir: str = None,
        languages: list[str] = None
    ) -> dict[str, list[str]]
        """生成所有代码文件"""
    
    def generate_schema(
        output_dir: str = None,
        languages: list[str] = None
    ) -> list[str]
        """生成 Schema 文件"""
    
    def generate_error_codes(
        output_dir: str = None,
        languages: list[str] = None
    ) -> list[str]
        """生成错误码文件"""
    
    def generate_auth(
        output_dir: str = None,
        languages: list[str] = None
    ) -> list[str]
        """生成认证模块文件"""

命令行接口

# 基本用法
python -m code_generator.generator -c config.yaml

# 指定输出目录
python -m code_generator.generator -c config.yaml -o ./output

# 指定生成语言
python -m code_generator.generator -c config.yaml -l python typescript

# 查看帮助
python -m code_generator.generator --help

# 参数说明
-c, --config     配置文件路径 (YAML 或 JSON) [必填]
-o, --output     输出目录 [默认:./generated]
-l, --languages  目标语言列表 [默认:配置文件中定义]

支持的类型映射

通用类型 Python Java Go TypeScript
string str String string string
integer int Integer int64 number
number float Double float64 number
boolean bool Boolean bool boolean
array List List []interface{} any[]
datetime datetime LocalDateTime time.Time Date