llmcodegen/design.json

2030 lines
65 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"project_name": "llm-codegen",
"version": "0.0.1",
"description": "基于大语言模型的代码生成工具",
"files": [
{
"path": ".python-version",
"summary": "这是一个Python版本配置文件指定了项目使用的Python版本为3.13。",
"dependencies": [],
"functions": [],
"classes": [],
"design_updates": {}
},
{
"path": "README.md",
"summary": "这是一个README.md文件描述了LLM代码生成工具的项目概述、核心特性、安装方法、使用方式、设计层、工作流、配置和开发指南。它不是一个Python源码文件而是一个项目文档文件因此不包含Python代码定义。",
"dependencies": [],
"functions": [],
"classes": [],
"design_updates": {}
},
{
"path": "pyproject.toml",
"summary": "这是一个Python项目的配置文件pyproject.toml定义了项目的构建系统、元数据、依赖项、脚本入口和自定义工具配置。",
"dependencies": [],
"functions": [],
"classes": [],
"design_updates": {}
},
{
"path": ".gitignore",
"summary": "这是一个.gitignore文件用于指定Git版本控制系统中应忽略的文件和目录主要针对Python项目、虚拟环境、日志、缓存和配置文件等。",
"dependencies": [],
"functions": [],
"classes": [],
"design_updates": {}
},
{
"path": "tests/__init__.py",
"summary": "This file initializes the tests package for llm-codegen, allowing it to be recognized as a Python package.",
"dependencies": [],
"functions": [],
"classes": [],
"design_updates": {}
},
{
"path": "tests/test_cli.py",
"summary": "这是一个测试文件用于测试基于LLM的自动化代码生成与维护工具的CLI命令包括init、enhance、fix、check和help命令的成功与失败场景。",
"dependencies": [
"src/llm_codegen/cli.py"
],
"functions": [
{
"name": "test_cli_init_success",
"summary": "测试init命令成功执行模拟CodeGenerator并验证输出。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_init_failure_no_readme",
"summary": "测试init命令当README文件不存在时失败。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_enhance_success",
"summary": "测试enhance命令成功执行模拟CodeGenerator和Path.exists。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_fix_success",
"summary": "测试fix命令成功执行模拟CodeGenerator和Path.exists。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_help",
"summary": "测试CLI帮助命令验证帮助文本输出。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_enhance_no_design",
"summary": "测试enhance命令当design.json不存在时失败。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_fix_no_design",
"summary": "测试fix命令当design.json不存在时失败。",
"inputs": [],
"outputs": []
},
{
"name": "test_cli_check_success",
"summary": "测试check命令成功执行模拟CodeGenerator和Checker。",
"inputs": [],
"outputs": []
}
],
"classes": [],
"design_updates": {}
},
{
"path": "tests/test_diff_applier.py",
"summary": "这是一个测试文件用于测试diff_applier模块中的parse_diff和apply_diff函数包含多个测试用例验证统一差异解析和应用功能。",
"dependencies": [
"src/llm_codegen/diff_applier.py"
],
"functions": [
{
"name": "test_parse_diff",
"summary": "测试解析统一差异字符串以提取文件路径的功能。",
"inputs": [],
"outputs": []
},
{
"name": "test_apply_diff_new_file",
"summary": "测试应用创建新文件的差异。",
"inputs": [],
"outputs": []
},
{
"name": "test_apply_diff_modify_existing_file",
"summary": "测试应用修改现有文件的差异。",
"inputs": [],
"outputs": []
},
{
"name": "test_apply_diff_conflict_handling",
"summary": "测试应用导致冲突的差异处理。",
"inputs": [],
"outputs": []
},
{
"name": "test_apply_diff_empty_diff",
"summary": "测试应用空差异字符串。",
"inputs": [],
"outputs": []
},
{
"name": "test_apply_diff_invalid_directory",
"summary": "测试应用差异到不存在的目录。",
"inputs": [],
"outputs": []
},
{
"name": "test_apply_diff_no_git_repo_initialization",
"summary": "测试应用差异到非git目录。",
"inputs": [],
"outputs": []
}
],
"classes": [],
"design_updates": {}
},
{
"path": "tests/test_checker.py",
"summary": "这是一个测试文件用于测试Checker类的功能包括检查工具的运行、错误收集和自动修复。它定义了FakeCodeGenerator类作为模拟对象以及多个pytest fixture和测试类TestChecker包含各种测试方法。",
"dependencies": [
"src/llm_codegen/checker.py",
"src/llm_codegen/core.py",
"src/llm_codegen/utils.py"
],
"functions": [
{
"name": "fake_code_generator",
"summary": "pytest fixture返回一个假的CodeGenerator实例用于测试。",
"inputs": [],
"outputs": [
"FakeCodeGenerator实例"
]
},
{
"name": "checker",
"summary": "pytest fixture创建Checker实例使用临时目录和假的code_generator。",
"inputs": [
"fake_code_generator",
"tmp_path"
],
"outputs": [
"Checker实例"
]
}
],
"classes": [
{
"name": "FakeCodeGenerator",
"summary": "假的CodeGenerator类用于替代真实的LLM调用模拟_call_llm方法。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeCodeGenerator实例设置_call_llm调用标志和参数。",
"inputs": [
"self",
"return_value"
],
"outputs": []
},
{
"name": "_call_llm",
"summary": "模拟_call_llm方法记录调用参数并返回预设值。",
"inputs": [
"self",
"system_prompt",
"user_prompt",
"temperature"
],
"outputs": [
"return_value"
]
}
]
},
{
"name": "TestChecker",
"summary": "测试类包含多个测试方法用于验证Checker类的各种功能。",
"methods": [
{
"name": "test_init",
"summary": "测试Checker的初始化方法验证属性设置。",
"inputs": [
"self",
"checker",
"tmp_path"
],
"outputs": []
},
{
"name": "test_run_check_success",
"summary": "测试run_check方法成功运行检查工具的情况。",
"inputs": [
"self",
"checker",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_run_check_timeout",
"summary": "测试run_check方法处理超时的情况。",
"inputs": [
"self",
"checker",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_run_parallel_checks",
"summary": "测试并行运行检查工具的方法。",
"inputs": [
"self",
"checker",
"tmp_path",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_save_results",
"summary": "测试保存检查结果到文件的方法。",
"inputs": [
"self",
"checker",
"tmp_path"
],
"outputs": []
},
{
"name": "test_collect_errors",
"summary": "测试从结果中收集错误的方法。",
"inputs": [
"self",
"checker",
"tmp_path"
],
"outputs": []
},
{
"name": "test_collect_errors_no_results",
"summary": "测试无结果文件时收集错误的方法。",
"inputs": [
"self",
"checker"
],
"outputs": []
},
{
"name": "test_auto_fix",
"summary": "测试自动修复错误的方法。",
"inputs": [
"self",
"checker",
"tmp_path"
],
"outputs": []
},
{
"name": "test_auto_fix_no_errors",
"summary": "测试无错误时自动修复的方法。",
"inputs": [
"self",
"checker"
],
"outputs": []
},
{
"name": "test_run_full_check_and_fix",
"summary": "测试完整检查与修复循环成功的情况。",
"inputs": [
"self",
"checker",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_run_full_check_and_fix_failure",
"summary": "测试完整检查与修复循环失败的情况。",
"inputs": [
"self",
"checker",
"monkeypatch"
],
"outputs": []
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/init_generator.py",
"summary": "处理 init 命令的生成器类,继承自 CodeGenerator用于从 README 初始化项目。",
"dependencies": [
"src/llm_codegen/core.py",
"src/llm_codegen/design_generator.py",
"src/llm_codegen/design_manager.py"
],
"functions": [],
"classes": [
{
"name": "InitGenerator",
"summary": "处理 init 命令的生成器类,继承自 CodeGenerator用于从 README 初始化项目。",
"methods": [
{
"name": "__init__",
"summary": "初始化 InitGenerator设置 API 参数、输出目录等,并创建 DesignGenerator 实例。",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: str",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "run",
"summary": "处理 init 命令逻辑:根据 README.md 初始化项目,包括读取 README、生成设计文件、排序文件、生成代码、执行命令等步骤。",
"inputs": [
"readme_path: Path"
],
"outputs": []
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/enhance_generator.py",
"summary": "定义了一个增强生成器类EnhanceGenerator继承自CodeGenerator专门处理enhance命令逻辑用于根据需求工单对现有项目进行功能增强包括读取工单、分析变更、生成或修改文件、更新设计等操作。",
"dependencies": [
"src/llm_codegen/core.py",
"src/llm_codegen/design_manager.py"
],
"functions": [],
"classes": [
{
"name": "EnhanceGenerator",
"summary": "增强生成器类继承自CodeGenerator专门处理enhance命令逻辑用于根据需求工单对现有项目进行功能增强。",
"methods": [
{
"name": "__init__",
"summary": "初始化EnhanceGenerator继承BaseGenerator的配置设置API密钥、基础URL、模型、输出目录、日志文件和最大并发数。",
"inputs": [
"api_key",
"base_url",
"model",
"output_dir",
"log_file",
"max_concurrency"
],
"outputs": []
},
{
"name": "process_enhance",
"summary": "处理enhance命令的核心逻辑读取工单分析变更生成或修改文件更新设计。",
"inputs": [
"issue_file_path",
"output_format"
],
"outputs": [
"bool"
]
}
]
}
],
"design_updates": {}
},
{
"path": "tests/test_core.py",
"summary": "这是一个测试文件用于测试CodeGenerator类及其相关功能包括模拟OpenAI客户端、测试初始化、解析README、生成设计JSON、生成文件、执行命令、断点续写和拓扑排序等功能。",
"dependencies": [
"src/llm_codegen/core.py",
"src/llm_codegen/models.py"
],
"functions": [],
"classes": [
{
"name": "FakeChatCompletion",
"summary": "模拟OpenAI的chat.completions.create返回值包含choices属性。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeChatCompletion实例设置choices属性。",
"inputs": [
"self",
"content"
],
"outputs": []
}
]
},
{
"name": "FakeChoice",
"summary": "模拟OpenAI的choice对象包含message属性。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeChoice实例设置message属性。",
"inputs": [
"self",
"message"
],
"outputs": []
}
]
},
{
"name": "FakeMessage",
"summary": "模拟OpenAI的message对象包含content和reasoning_content属性。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeMessage实例设置content和reasoning_content属性。",
"inputs": [
"self",
"content"
],
"outputs": []
}
]
},
{
"name": "FakeOpenAIClient",
"summary": "假的OpenAI客户端用于替换真实客户端包含chat属性。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeOpenAIClient实例设置chat属性为FakeChat实例。",
"inputs": [
"self"
],
"outputs": []
}
]
},
{
"name": "FakeChat",
"summary": "模拟OpenAI的chat对象包含completions属性。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeChat实例设置completions属性为FakeCompletions实例。",
"inputs": [
"self"
],
"outputs": []
}
]
},
{
"name": "FakeCompletions",
"summary": "模拟OpenAI的completions对象包含create方法用于记录调用和返回模拟值。",
"methods": [
{
"name": "__init__",
"summary": "初始化FakeCompletions实例设置create_called、create_kwargs和create_return_value属性。",
"inputs": [
"self"
],
"outputs": []
},
{
"name": "create",
"summary": "模拟OpenAI的create方法记录调用参数并返回FakeChatCompletion实例。",
"inputs": [
"self",
"*args",
"**kwargs"
],
"outputs": [
"FakeChatCompletion"
]
}
]
},
{
"name": "TestCodeGenerator",
"summary": "测试CodeGenerator类的测试类包含多个测试方法覆盖初始化、文件解析、设计生成、命令执行、断点续写和拓扑排序等功能。",
"methods": [
{
"name": "test_init_success",
"summary": "测试CodeGenerator初始化成功验证API密钥、模型、输出目录和客户端替换。",
"inputs": [
"self",
"code_generator",
"tmp_path",
"fake_openai_client"
],
"outputs": []
},
{
"name": "test_init_no_api_key",
"summary": "测试没有API密钥时CodeGenerator初始化抛出ValueError。",
"inputs": [
"self",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_parse_readme_success",
"summary": "测试解析README文件成功返回文件内容。",
"inputs": [
"self",
"code_generator",
"tmp_path"
],
"outputs": []
},
{
"name": "test_parse_readme_file_not_found",
"summary": "测试README文件不存在时解析抛出异常。",
"inputs": [
"self",
"code_generator"
],
"outputs": []
},
{
"name": "test_generate_design_json",
"summary": "测试生成design.json文件模拟LLM调用并验证设计模型和文件写入。",
"inputs": [
"self",
"code_generator",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_generate_file_with_dependencies",
"summary": "测试生成文件包含依赖文件模拟LLM调用并验证返回的代码、描述和命令。",
"inputs": [
"self",
"code_generator",
"monkeypatch",
"tmp_path"
],
"outputs": []
},
{
"name": "test_execute_command_success",
"summary": "测试执行命令成功模拟subprocess.run返回成功。",
"inputs": [
"self",
"code_generator",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_execute_command_dangerous",
"summary": "测试阻止危险命令执行模拟is_dangerous_command返回危险。",
"inputs": [
"self",
"code_generator",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_execute_command_failure",
"summary": "测试命令执行失败模拟subprocess.run返回失败。",
"inputs": [
"self",
"code_generator",
"monkeypatch"
],
"outputs": []
},
{
"name": "test_run_with_state_resume",
"summary": "测试断点续写功能,模拟状态文件存在时的运行流程。",
"inputs": [
"self",
"code_generator",
"monkeypatch",
"tmp_path"
],
"outputs": []
},
{
"name": "test_run_without_state",
"summary": "测试没有状态文件时的首次运行,模拟完整流程。",
"inputs": [
"self",
"code_generator",
"monkeypatch",
"tmp_path"
],
"outputs": []
},
{
"name": "test_topological_sort_normal",
"summary": "测试拓扑排序正常依赖排序,验证排序顺序正确。",
"inputs": [
"self",
"code_generator"
],
"outputs": []
},
{
"name": "test_topological_sort_cycle_detection",
"summary": "测试拓扑排序循环依赖检测验证抛出ValueError。",
"inputs": [
"self",
"code_generator"
],
"outputs": []
},
{
"name": "test_topological_sort_empty",
"summary": "测试拓扑排序空输入,验证返回空列表。",
"inputs": [
"self",
"code_generator"
],
"outputs": []
},
{
"name": "test_topological_sort_partial_deps",
"summary": "测试拓扑排序部分依赖不在列表中,验证忽略不在列表中的依赖。",
"inputs": [
"self",
"code_generator"
],
"outputs": []
},
{
"name": "test_topological_sort_complex",
"summary": "测试拓扑排序复杂依赖关系,验证排序满足所有依赖。",
"inputs": [
"self",
"code_generator"
],
"outputs": []
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/design_generator.py",
"summary": "该文件是LLM代码生成工具的一部分包含一个设计生成器类用于处理设计文件的生成、增量更新和源代码分析包括模拟git忽略文件的功能。",
"dependencies": [
"./core",
"./models"
],
"functions": [
{
"name": "get_non_ignored_files",
"summary": "模拟git行为递归遍历目录并应用.gitignore规则返回所有未被忽略的文件。",
"inputs": [
"root_path: Path"
],
"outputs": [
"result_files: List[Path]"
]
},
{
"name": "is_ignored",
"summary": "判断一个文件是否被.gitignore规则忽略通过合并所有祖先目录的规则进行匹配。",
"inputs": [
"file_path: Path",
"root_path: Path",
"specs: dict"
],
"outputs": [
"bool"
]
}
],
"classes": [
{
"name": "DesignGenerator",
"summary": "设计生成器类继承自CodeGenerator专门处理设计文件的生成、增量更新和源代码分析。",
"methods": [
{
"name": "__init__",
"summary": "初始化设计生成器设置API密钥、输出目录等参数。",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: str",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "process_design_command",
"summary": "处理设计命令,基于工单内容实现设计文件的生成和增量更新逻辑。",
"inputs": [
"issue_content: str",
"issue_type: str"
],
"outputs": [
"bool"
]
},
{
"name": "_analyze_single_file",
"summary": "分析单个文件并返回设计信息字典,包括摘要、依赖、函数和类。",
"inputs": [
"file_path: Path",
"root_dir: Path"
],
"outputs": [
"Dict[str, Any]"
]
},
{
"name": "analyze_source_files",
"summary": "分析源代码目录以提取设计信息用于生成或刷新design.json。",
"inputs": [
"source_dir: Path"
],
"outputs": [
"Dict[str, Any]"
]
},
{
"name": "refresh_design_from_source",
"summary": "从源代码目录刷新design.json基于分析结果。",
"inputs": [
"source_dir: Path"
],
"outputs": [
"bool"
]
},
{
"name": "update_single_file_design",
"summary": "更新design.json中单个文件的条目基于文件内容。",
"inputs": [
"file_path: Path"
],
"outputs": [
"bool"
]
},
{
"name": "run",
"summary": "主执行流程用于集成到命令行接口支持从README生成、处理工单或更新单个文件。",
"inputs": [
"readme_path: Optional[Path]",
"issue_content: Optional[str]",
"update_file: Optional[Path]"
],
"outputs": []
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/__init__.py",
"summary": "llm-codegen包的初始化文件定义包版本和描述并导出核心模块以便从包级别导入。",
"dependencies": [],
"functions": [],
"classes": [],
"design_updates": {}
},
{
"path": "src/llm_codegen/models.py",
"summary": "该文件定义了多个Pydantic模型用于代码生成工具中的数据结构包括设计模型、工单模型、状态模型和响应模型。",
"dependencies": [],
"functions": [],
"classes": [
{
"name": "FileStatus",
"summary": "文件生成状态枚举定义pending、generating、success和failed四种状态。",
"methods": []
},
{
"name": "OutputFormat",
"summary": "输出格式枚举定义full和diff两种格式。",
"methods": []
},
{
"name": "FunctionModel",
"summary": "函数模型对应design.json中的functions字段用于表示函数的结构。",
"methods": []
},
{
"name": "ClassModel",
"summary": "类模型对应design.json中的classes字段用于表示类的结构。",
"methods": []
},
{
"name": "FileModel",
"summary": "文件模型对应design.json中的files字段用于表示文件的结构并包含合并设计更新的方法。",
"methods": [
{
"name": "merge_design_updates",
"summary": "合并设计更新到当前文件模型。",
"inputs": [
"updates"
],
"outputs": []
}
]
},
{
"name": "DesignModel",
"summary": "设计模型对应design.json的根结构用于表示整个项目的设计信息。",
"methods": []
},
{
"name": "FeatureIssue",
"summary": "需求工单模型基于README中的模板用于表示需求工单的结构。",
"methods": []
},
{
"name": "BugIssue",
"summary": "Bug工单模型基于README中的模板用于表示Bug工单的结构。",
"methods": []
},
{
"name": "StateModel",
"summary": "状态模型,用于保存生成过程中的断点状态。",
"methods": []
},
{
"name": "LLMResponse",
"summary": "LLM响应模型用于解析generate_file方法的返回表示LLM生成的代码和相关信息。",
"methods": []
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/fix_generator.py",
"summary": "定义了一个处理Bug修复逻辑的生成器类FixGenerator继承自CodeGenerator用于读取Bug工单、分析变更、生成并应用修复代码。",
"dependencies": [
"src/llm_codegen/core.py",
"src/llm_codegen/models.py",
"src/llm_codegen/design_manager.py"
],
"functions": [],
"classes": [
{
"name": "FixGenerator",
"summary": "处理Bug修复逻辑的生成器类继承自CodeGenerator用于处理fix命令包括读取Bug工单、分析变更、生成修复代码并应用。",
"methods": [
{
"name": "__init__",
"summary": "初始化FixGenerator继承基类参数。",
"inputs": [
"**kwargs"
],
"outputs": []
},
{
"name": "process_fix",
"summary": "处理fix命令逻辑读取Bug工单文件分析变更生成并应用修复代码支持不同输出格式。",
"inputs": [
"bug_issue_path",
"output_format"
],
"outputs": [
"bool",
"List[Path]"
]
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/cli.py",
"summary": "LLM代码生成工具的命令行接口使用typer构建CLI支持init、enhance、fix、design四种操作模式用于自动化代码生成与维护。",
"dependencies": [
"src/llm_codegen/init_generator.py",
"src/llm_codegen/enhance_generator.py",
"src/llm_codegen/fix_generator.py",
"src/llm_codegen/design_generator.py"
],
"functions": [
{
"name": "init_logging",
"summary": "初始化日志配置将日志输出到logs/目录,支持控制台和文件记录。",
"inputs": [
"output_dir: Path",
"log_file: Optional[str] = None",
"command_name: str = \"cli\""
],
"outputs": [
"str"
]
}
],
"classes": [],
"design_updates": {}
},
{
"path": "src/llm_codegen/design_manager.py",
"summary": "设计管理类,用于处理 design.json 文件的加载、保存、README 哈希计算、校验和同步功能。",
"dependencies": [
"src/llm_codegen/models.py",
"src/llm_codegen/utils.py"
],
"functions": [],
"classes": [
{
"name": "DesignManager",
"summary": "设计管理类,用于处理 design.json 文件的加载、保存、README 哈希计算、校验和同步功能。",
"methods": [
{
"name": "__init__",
"summary": "初始化 DesignManager设置可选的 design.json 文件路径。",
"inputs": [
"design_file_path: Optional[Path] = None"
],
"outputs": []
},
{
"name": "load_design",
"summary": "加载 design.json 文件并解析为 DesignModel 对象。",
"inputs": [
"file_path: Optional[Path] = None"
],
"outputs": [
"DesignModel"
]
},
{
"name": "save_design",
"summary": "将 DesignModel 对象保存为 design.json 文件。",
"inputs": [
"design: DesignModel",
"file_path: Optional[Path] = None"
],
"outputs": []
},
{
"name": "compute_readme_hash",
"summary": "计算 README 文件的 SHA256 哈希值。",
"inputs": [
"readme_path: Path"
],
"outputs": [
"str"
]
},
{
"name": "validate_readme_hash",
"summary": "校验 README 文件的哈希值与 design.json 中存储的哈希值是否一致。",
"inputs": [
"design: DesignModel",
"readme_path: Optional[Path] = None"
],
"outputs": [
"bool"
]
},
{
"name": "sync_with_readme",
"summary": "同步 design.json 与 README 文件,更新 readme_path 和 readme_hash。",
"inputs": [
"design: DesignModel",
"readme_path: Path"
],
"outputs": [
"DesignModel"
]
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/core.py",
"summary": "该文件定义了一个代码生成器基类CodeGenerator用于基于LLM生成代码文件支持设计层管理、断点续写、并发生成、依赖分析和命令执行等功能。",
"dependencies": [
".llm_client",
".utils",
".models",
".design_manager"
],
"functions": [],
"classes": [
{
"name": "CodeGenerator",
"summary": "代码生成器基类,封装公共逻辑,支持设计层、断点续写和命令执行",
"methods": [
{
"name": "__init__",
"summary": "初始化生成器设置API客户端、输出目录和状态文件",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: Path",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "_call_llm",
"summary": "调用LLM客户端生成响应支持系统提示和用户提示",
"inputs": [
"system_prompt: str",
"user_prompt: str",
"temperature: float",
"expect_json: bool"
],
"outputs": [
"result"
]
},
{
"name": "parse_readme",
"summary": "读取README文件内容并返回",
"inputs": [
"readme_path: Path"
],
"outputs": [
"content: str"
]
},
{
"name": "load_state",
"summary": "加载断点续写状态文件,返回状态模型",
"inputs": [],
"outputs": [
"state: Optional[StateModel]"
]
},
{
"name": "save_state",
"summary": "保存断点续写状态,适应并发生成(线程安全)",
"inputs": [
"generated_files: List[str]",
"dependencies_map: Dict[str, List[str]]"
],
"outputs": []
},
{
"name": "get_project_structure",
"summary": "从design.json获取文件列表和依赖关系",
"inputs": [],
"outputs": [
"files: List[str]",
"dependencies: Dict[str, List[str]]"
]
},
{
"name": "_add_implicit_dependencies",
"summary": "添加隐式依赖关系,基于文件路径和常见模式",
"inputs": [
"files: List[str]",
"dependencies: Dict[str, List[str]]"
],
"outputs": [
"enhanced: Dict[str, List[str]]"
]
},
{
"name": "generate_file",
"summary": "生成单个文件,返回代码、描述和命令列表",
"inputs": [
"file_path: str",
"prompt_instruction: str",
"dependency_files: List[str]",
"existing_content: Optional[str]",
"output_format: str"
],
"outputs": [
"code: str",
"description: str",
"commands: List[str]"
]
},
{
"name": "_generate_file_task",
"summary": "并发任务函数,用于生成单个文件",
"inputs": [
"file_path: str",
"dependencies: List[str]",
"generated_files: set"
],
"outputs": [
"success: bool",
"error_message: str"
]
},
{
"name": "_topological_sort",
"summary": "对文件列表进行拓扑排序,基于依赖关系",
"inputs": [
"files: List[str]",
"dependencies: Dict[str, List[str]]"
],
"outputs": [
"sorted_files: List[str]"
]
},
{
"name": "execute_command",
"summary": "执行单个命令,检查风险,失败仅记录错误不抛出异常",
"inputs": [
"cmd: str",
"cwd: Optional[Path]"
],
"outputs": [
"success: bool"
]
},
{
"name": "_analyze_issue",
"summary": "调用LLM分析工单返回结构化变更计划",
"inputs": [
"issue_content: str",
"issue_type: str"
],
"outputs": [
"result: Dict[str, Any]"
]
},
{
"name": "sync_readme",
"summary": "同步README.md和design.json利用哈希值判断一致性并更新",
"inputs": [],
"outputs": [
"success: bool"
]
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/llm_client.py",
"summary": "LLM客户端类用于与LLM模型交互管理API调用、重试逻辑和响应记录保存。",
"dependencies": [],
"functions": [],
"classes": [
{
"name": "LLMClient",
"summary": "LLM客户端负责与模型交互并管理响应记录。",
"methods": [
{
"name": "__init__",
"summary": "初始化LLM客户端设置API参数、输出目录和重试配置。",
"inputs": [
"api_key",
"base_url",
"model",
"output_dir",
"max_retries",
"retry_delay"
],
"outputs": []
},
{
"name": "call",
"summary": "调用LLM并返回解析后的结果支持JSON输出和重试机制。",
"inputs": [
"messages",
"temperature",
"expect_json"
],
"outputs": [
"Dict[str, Any]"
]
},
{
"name": "_save_response",
"summary": "将LLM响应保存到文件中包括消息、内容和元数据。",
"inputs": [
"messages",
"content",
"reasoning_content",
"temperature",
"expect_json"
],
"outputs": []
}
]
}
],
"design_updates": {}
},
{
"path": "src/llm_codegen/utils.py",
"summary": "该文件是LLM代码生成项目中的一个工具模块提供了一系列实用函数和类包括命令安全检查、文件操作、路径处理、错误日志记录、依赖图构建和拓扑排序、并发队列管理以及进度条创建等功能。",
"dependencies": [],
"functions": [
{
"name": "is_dangerous_command",
"summary": "判断命令字符串是否包含危险关键词,返回布尔值和原因。",
"inputs": [
"cmd"
],
"outputs": [
"bool",
"str"
]
},
{
"name": "read_file",
"summary": "读取指定文件路径的内容返回文件内容字符串失败时抛出IOError。",
"inputs": [
"file_path"
],
"outputs": [
"str"
]
},
{
"name": "write_file",
"summary": "将内容写入指定文件路径确保目录存在失败时抛出IOError。",
"inputs": [
"file_path",
"content"
],
"outputs": []
},
{
"name": "ensure_dir",
"summary": "确保指定目录存在,如果不存在则创建。",
"inputs": [
"directory"
],
"outputs": []
},
{
"name": "safe_join",
"summary": "安全地拼接基础路径和多个部分,防止目录遍历攻击,返回绝对路径。",
"inputs": [
"base_path",
"*paths"
],
"outputs": [
"str"
]
},
{
"name": "log_error",
"summary": "记录和显示错误信息,根据是否致命使用不同日志级别。",
"inputs": [
"error",
"message",
"is_fatal"
],
"outputs": []
},
{
"name": "is_fatal_error",
"summary": "判断异常对象是否为致命错误类型如SystemExit、KeyboardInterrupt等。",
"inputs": [
"error"
],
"outputs": [
"bool"
]
},
{
"name": "build_dependency_graph",
"summary": "基于文件列表构建依赖图,返回邻接表表示的字典。",
"inputs": [
"files"
],
"outputs": [
"Dict[str, List[str]]"
]
},
{
"name": "compute_in_degrees",
"summary": "计算依赖图中每个节点的入度值,返回字典。",
"inputs": [
"graph"
],
"outputs": [
"Dict[str, int]"
]
},
{
"name": "add_implicit_dependency",
"summary": "根据文件内容检查并添加隐式依赖到依赖列表,返回更新后的列表。",
"inputs": [
"file_content",
"current_deps",
"implicit_dep_file"
],
"outputs": [
"List[str]"
]
},
{
"name": "create_progress_bar",
"summary": "创建并配置一个标准的rich进度条实例用于任务进度显示。",
"inputs": [
"total",
"description",
"columns",
"auto_refresh"
],
"outputs": [
"Progress"
]
},
{
"name": "topological_sort",
"summary": "基于依赖图进行拓扑排序,检测循环依赖并报错,返回排序后的节点列表。",
"inputs": [
"graph"
],
"outputs": [
"List[str]"
]
}
],
"classes": [
{
"name": "ConcurrentQueueManager",
"summary": "管理并发队列的简单类,用于并行任务如代码生成或检查,提供队列操作功能。",
"methods": [
{
"name": "__init__",
"summary": "初始化队列,设置最大大小。",
"inputs": [
"maxsize"
],
"outputs": []
},
{
"name": "enqueue",
"summary": "将项目加入队列。",
"inputs": [
"item"
],
"outputs": []
},
{
"name": "dequeue",
"summary": "从队列中取出项目,可设置阻塞和超时。",
"inputs": [
"block",
"timeout"
],
"outputs": [
"Any"
]
},
{
"name": "is_empty",
"summary": "检查队列是否为空。",
"inputs": [],
"outputs": [
"bool"
]
},
{
"name": "size",
"summary": "获取队列中项目数量。",
"inputs": [],
"outputs": [
"int"
]
}
]
}
],
"design_updates": {}
},
{
"path": "design.json",
"summary": "这是一个名为 llm-codegen 的基于大语言模型的代码生成工具的设计文件,描述了项目的整体结构、文件依赖关系、函数和类定义,用于自动化代码生成与维护。",
"dependencies": [
"src/llm_codegen/init_generator.py",
"src/llm_codegen/design_generator.py",
"src/llm_codegen/enhance_generator.py",
"src/llm_codegen/models.py",
"src/llm_codegen/__init__.py",
"src/llm_codegen/fix_generator.py",
"src/llm_codegen/core.py",
"src/llm_codegen/cli.py",
"src/llm_codegen/utils.py"
],
"functions": [
{
"name": "is_dangerous_command",
"summary": "检查命令是否危险从utils模块导入用于execute_command方法中验证命令安全性。",
"inputs": [
"cmd: str"
],
"outputs": [
"bool",
"str"
]
},
{
"name": "init_logging",
"summary": "初始化日志配置到logs/目录,设置控制台和文件日志处理器。",
"inputs": [
"output_dir: Path",
"log_file: Optional[str]",
"command_name: str"
],
"outputs": [
"str"
]
},
{
"name": "is_dangerous_command",
"summary": "判断命令字符串是否包含危险关键词。",
"inputs": [
"cmd"
],
"outputs": [
"Tuple[bool, str]"
]
},
{
"name": "read_file",
"summary": "读取指定文件路径的内容。",
"inputs": [
"file_path"
],
"outputs": [
"str"
]
},
{
"name": "write_file",
"summary": "将内容写入指定文件路径,自动创建父目录。",
"inputs": [
"file_path",
"content"
],
"outputs": [
"None"
]
},
{
"name": "ensure_dir",
"summary": "确保指定目录存在,如果不存在则创建。",
"inputs": [
"directory"
],
"outputs": [
"None"
]
},
{
"name": "safe_join",
"summary": "安全地拼接路径,防止目录遍历攻击。",
"inputs": [
"base_path",
"*paths"
],
"outputs": [
"str"
]
},
{
"name": "log_error",
"summary": "记录和显示错误信息,支持自定义消息和致命错误标记。",
"inputs": [
"error",
"message",
"is_fatal"
],
"outputs": [
"None"
]
},
{
"name": "is_fatal_error",
"summary": "判断异常是否为致命错误类型。",
"inputs": [
"error"
],
"outputs": [
"bool"
]
},
{
"name": "build_dependency_graph",
"summary": "基于文件列表构建依赖图。",
"inputs": [
"files"
],
"outputs": [
"Dict[str, List[str]]"
]
},
{
"name": "compute_in_degrees",
"summary": "计算依赖图中每个节点的入度。",
"inputs": [
"graph"
],
"outputs": [
"Dict[str, int]"
]
},
{
"name": "add_implicit_dependency",
"summary": "根据文件内容添加隐式依赖。",
"inputs": [
"file_content",
"current_deps",
"implicit_dep_file"
],
"outputs": [
"List[str]"
]
},
{
"name": "create_progress_bar",
"summary": "创建并配置一个标准的rich进度条。",
"inputs": [
"total",
"description",
"columns",
"auto_refresh"
],
"outputs": [
"Progress"
]
},
{
"name": "topological_sort",
"summary": "基于依赖图进行拓扑排序,检测循环依赖。",
"inputs": [
"graph"
],
"outputs": [
"List[str]"
]
}
],
"classes": [
{
"name": "InitGenerator",
"summary": "处理 init 命令的生成器类,继承自 CodeGenerator用于从 README 初始化项目。",
"methods": [
{
"name": "__init__",
"summary": "初始化 InitGenerator设置 API 密钥、基础 URL、模型、输出目录、日志文件和最大并发数。",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: str",
"log_file: Optional[str]",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "run",
"summary": "处理 init 命令逻辑:根据 README.md 初始化项目,包括读取 README、生成设计文件、获取项目结构、拓扑排序、生成文件、执行命令和保存状态。",
"inputs": [
"readme_path: Path"
],
"outputs": []
}
]
},
{
"name": "DesignGenerator",
"summary": "设计生成器类,负责处理设计文件的生成、更新和源代码分析。",
"methods": [
{
"name": "__init__",
"summary": "初始化设计生成器设置API密钥、输出目录等参数并继承父类初始化。",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: str",
"log_file: Optional[str]",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "process_design_command",
"summary": "处理设计命令基于工单内容实现设计文件的生成和增量更新包括源文件分析、LLM调用和合并/覆盖处理。",
"inputs": [
"issue_content: str",
"issue_type: str"
],
"outputs": [
"bool"
]
},
{
"name": "analyze_source_files",
"summary": "分析源代码目录以提取设计信息用于生成或刷新design.json通过调用LLM分析每个Python文件。",
"inputs": [
"source_dir: Path"
],
"outputs": [
"Dict[str, Any]"
]
},
{
"name": "refresh_design_from_source",
"summary": "从源代码目录刷新design.json基于analyze_source_files的分析结果构建并保存DesignModel。",
"inputs": [
"source_dir: Path"
],
"outputs": [
"bool"
]
},
{
"name": "run",
"summary": "主执行流程用于集成到命令行接口支持从README生成design.json或处理工单内容。",
"inputs": [
"readme_path: Optional[Path]",
"issue_content: Optional[str]"
],
"outputs": []
}
]
},
{
"name": "EnhanceGenerator",
"summary": "增强生成器类继承自BaseGenerator专门处理enhance命令逻辑用于根据需求工单feature.issue对现有项目进行功能增强。",
"methods": [
{
"name": "__init__",
"summary": "初始化EnhanceGenerator继承BaseGenerator的配置。",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: str",
"log_file: Optional[str]",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "process_enhance",
"summary": "处理enhance命令的核心逻辑读取工单分析变更生成或修改文件更新设计。",
"inputs": [
"issue_file_path: Path",
"output_format: str"
],
"outputs": [
"bool"
]
}
]
},
{
"name": "FileStatus",
"summary": "文件生成状态枚举定义了pending、generating、success和failed四种状态。",
"methods": []
},
{
"name": "OutputFormat",
"summary": "输出格式枚举定义了full和diff两种格式。",
"methods": []
},
{
"name": "FunctionModel",
"summary": "函数模型对应design.json中的functions字段用于表示函数信息。",
"methods": []
},
{
"name": "ClassModel",
"summary": "类模型对应design.json中的classes字段用于表示类信息。",
"methods": []
},
{
"name": "FileModel",
"summary": "文件模型对应design.json中的files字段用于表示文件信息并包含合并设计更新的方法。",
"methods": [
{
"name": "merge_design_updates",
"summary": "合并设计更新到当前文件模型。",
"inputs": [
"updates"
],
"outputs": []
}
]
},
{
"name": "DesignModel",
"summary": "设计模型对应design.json的根结构用于表示整个项目的设计信息。",
"methods": []
},
{
"name": "FeatureIssue",
"summary": "需求工单模型基于README中的模板用于表示功能需求工单。",
"methods": []
},
{
"name": "BugIssue",
"summary": "Bug工单模型基于README中的模板用于表示Bug报告工单。",
"methods": []
},
{
"name": "StateModel",
"summary": "状态模型,用于保存生成过程中的断点状态,如文件索引和状态。",
"methods": []
},
{
"name": "LLMResponse",
"summary": "LLM响应模型用于解析generate_file方法的返回包含代码、描述和输出格式等信息。",
"methods": []
},
{
"name": "FixGenerator",
"summary": "处理Bug修复逻辑的生成器类继承自CodeGenerator用于处理fix命令包括读取Bug工单、分析变更、生成并应用修复代码。",
"methods": [
{
"name": "__init__",
"summary": "初始化FixGenerator继承基类参数。",
"inputs": [
"**kwargs"
],
"outputs": []
},
{
"name": "process_fix",
"summary": "处理fix命令逻辑读取Bug工单分析变更生成并应用修复代码。",
"inputs": [
"bug_issue_path: Path",
"output_format: OutputFormat = OutputFormat.FULL"
],
"outputs": [
"bool"
]
}
]
},
{
"name": "CodeGenerator",
"summary": "代码生成器基类,封装公共逻辑,支持设计层、断点续写和命令执行。",
"methods": [
{
"name": "__init__",
"summary": "初始化生成器设置API客户端、输出目录、日志和状态。",
"inputs": [
"api_key: Optional[str]",
"base_url: str",
"model: str",
"output_dir: str",
"log_file: Optional[str]",
"max_concurrency: int"
],
"outputs": []
},
{
"name": "_call_llm",
"summary": "调用LLM并返回解析后的JSON保存响应到文件。",
"inputs": [
"system_prompt: str",
"user_prompt: str",
"temperature: float",
"expect_json: bool"
],
"outputs": [
"Dict[str, Any]"
]
},
{
"name": "parse_readme",
"summary": "读取README文件内容。",
"inputs": [
"readme_path: Path"
],
"outputs": [
"str"
]
},
{
"name": "generate_design_json",
"summary": "调用LLM生成design.json内容并解析为DesignModel。",
"inputs": [],
"outputs": [
"DesignModel"
]
},
{
"name": "load_state",
"summary": "加载断点续写状态。",
"inputs": [],
"outputs": [
"Optional[StateModel]"
]
},
{
"name": "save_state",
"summary": "保存断点续写状态,适应并发生成(线程安全)。",
"inputs": [
"generated_files: List[str]",
"dependencies_map: Dict[str, List[str]]"
],
"outputs": []
},
{
"name": "get_project_structure",
"summary": "从design.json获取文件列表和依赖关系。",
"inputs": [],
"outputs": [
"Tuple[List[str], Dict[str, List[str]]]"
]
},
{
"name": "_add_implicit_dependencies",
"summary": "添加隐式依赖关系,基于文件路径和常见模式。",
"inputs": [
"files: List[str]",
"dependencies: Dict[str, List[str]]"
],
"outputs": [
"Dict[str, List[str]]"
]
},
{
"name": "generate_file",
"summary": "生成单个文件,返回代码、描述和命令列表。",
"inputs": [
"file_path: str",
"prompt_instruction: str",
"dependency_files: List[str]",
"existing_content: Optional[str]",
"output_format: str"
],
"outputs": [
"Tuple[str, str, List[str]]"
]
},
{
"name": "_generate_file_task",
"summary": "并发任务函数,用于生成单个文件。",
"inputs": [
"file_path: str",
"dependencies: List[str]",
"generated_files: set"
],
"outputs": [
"Tuple[bool, str]"
]
},
{
"name": "_topological_sort",
"summary": "对文件列表进行拓扑排序,基于依赖关系。",
"inputs": [
"files: List[str]",
"dependencies: Dict[str, List[str]]"
],
"outputs": [
"List[str]"
]
},
{
"name": "execute_command",
"summary": "执行单个命令,检查风险,失败仅记录错误不抛出异常。",
"inputs": [
"cmd: str",
"cwd: Optional[Path]"
],
"outputs": [
"bool"
]
},
{
"name": "_analyze_issue",
"summary": "调用LLM分析工单返回结构化变更计划。",
"inputs": [
"issue_content: str",
"issue_type: str"
],
"outputs": [
"Dict[str, Any]"
]
},
{
"name": "_update_design",
"summary": "根据生成的变更更新design.json。",
"inputs": [
"generated_files: List[str]",
"design_updates: Dict[str, Any]"
],
"outputs": []
},
{
"name": "refresh_design",
"summary": "重新生成design.json基于当前README内容或加载的design.json。",
"inputs": [],
"outputs": [
"bool"
]
},
{
"name": "update_file_entry",
"summary": "更新design.json中单个文件的条目基于提供的文件内容。",
"inputs": [
"file_path: str",
"file_content: str"
],
"outputs": [
"bool"
]
},
{
"name": "sync_readme",
"summary": "同步README.md和design.json确保内容一致性。",
"inputs": [],
"outputs": [
"bool"
]
}
]
},
{
"name": "ConcurrentQueueManager",
"summary": "管理并发队列的简单类,用于并行任务如代码生成或检查。",
"methods": [
{
"name": "__init__",
"summary": "初始化队列。",
"inputs": [
"maxsize"
],
"outputs": [
"None"
]
},
{
"name": "enqueue",
"summary": "将项目加入队列。",
"inputs": [
"item"
],
"outputs": [
"None"
]
},
{
"name": "dequeue",
"summary": "从队列中取出项目。",
"inputs": [
"block",
"timeout"
],
"outputs": [
"Any"
]
},
{
"name": "is_empty",
"summary": "检查队列是否为空。",
"inputs": [],
"outputs": [
"bool"
]
},
{
"name": "size",
"summary": "获取队列中项目数量。",
"inputs": [],
"outputs": [
"int"
]
}
]
}
],
"design_updates": {}
}
],
"commands": [],
"check_tools": [],
"readme_path": "README.md",
"readme_hash": "5d0832d556d6aaf64718fc8d29516653fe61f550fb52e3cd924e91ec1979c84a"
}