基于 OpenClaw + Claude Code 的端到端研发自动化系统核心组件
请求/响应结构体 · 错误码体系 · 认证鉴权规则 全自动生成
本模块是OpenClaw + Claude Code 端到端研发自动化系统的核心组件,负责根据配置自动生成多语言的 请求/响应结构体、错误码体系和认证鉴权规则。通过声明式配置,开发者可以快速生成高质量、标准化的 API 代码, 大幅提升研发效率。
支持 Python、Java、Go、TypeScript 四种主流编程语言,一套配置多端生成
秒级生成完整代码结构,包含数据模型、错误处理、认证中间件等全套组件
内置 JWT、OAuth2、RBAC、ABAC、API Key 等多种认证方式,灵活配置
错误码体系支持多语言国际化,轻松应对全球化业务场景
生成的代码具备完整的类型定义和验证逻辑,减少运行时错误
支持人工干预和自定义扩展,AI 生成 + 人工优化完美结合
| 维度 | 传统开发 | 使用本模块 | 效率提升 |
|---|---|---|---|
| Schema 定义 | 手动编写每个字段 | 配置驱动自动生成 | 90%↓ |
| 错误码管理 | 分散维护,易冲突 | 统一注册表,自动分类 | 80%↓ |
| 认证实现 | 重复造轮子 | 开箱即用的认证服务 | 95%↓ |
| 多语言适配 | 多套代码分别维护 | 一套配置多端生成 | 75%↓ |
| 文档同步 | 手动更新,易过期 | 代码即文档,实时同步 | 100%↓ |
YAML / JSON
API 规范定义
配置解析器
解析验证配置
生成引擎核心
调度各生成器
结构体生成器
请求/响应模型
错误码生成器
错误体系 + i18n
认证生成器
JWT/RBAC/OAuth2
Python/Java/Go/TS
生产就绪代码
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 # 生成摘要
# Python 环境要求:3.8+
pip install pydantic pyyaml
# 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
# 命令行方式
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")
# 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")
| 属性 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| 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
# 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
)
}
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 |