{ "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" }