graph LR
TestAgent["TestAgent"]
AgentSearch["AgentSearch"]
AgentWritePatch["AgentWritePatch"]
AgentReviewer["AgentReviewer"]
AgentSelect["AgentSelect"]
AgentCommon["AgentCommon"]
PatchUtils["PatchUtils"]
AgentProxy["AgentProxy"]
Unclassified["Unclassified"]
TestAgent -- "informs" --> AgentSearch
TestAgent -- "depends_on" --> AgentCommon
AgentSearch -- "informs" --> AgentWritePatch
AgentSearch -- "depends_on" --> AgentCommon
AgentWritePatch -- "provides_patches_to" --> AgentReviewer
AgentWritePatch -- "provides_patches_to" --> AgentSelect
AgentWritePatch -- "depends_on" --> AgentCommon
AgentWritePatch -- "uses" --> PatchUtils
AgentReviewer -- "provides_feedback_to" --> AgentWritePatch
AgentReviewer -- "provides_evaluation_results_to" --> AgentSelect
AgentReviewer -- "depends_on" --> AgentCommon
AgentReviewer -- "uses" --> PatchUtils
AgentSelect -- "depends_on" --> AgentCommon
AgentSelect -- "uses" --> PatchUtils
AgentCommon -- "supports" --> TestAgent
AgentCommon -- "supports" --> AgentSearch
AgentCommon -- "supports" --> AgentWritePatch
AgentCommon -- "supports" --> AgentReviewer
AgentCommon -- "supports" --> AgentSelect
PatchUtils -- "supports" --> AgentWritePatch
PatchUtils -- "supports" --> AgentReviewer
PatchUtils -- "supports" --> AgentSelect
AgentProxy -- "orchestrates" --> TestAgent
AgentProxy -- "orchestrates" --> AgentSearch
AgentProxy -- "orchestrates" --> AgentWritePatch
AgentProxy -- "orchestrates" --> AgentReviewer
AgentProxy -- "orchestrates" --> AgentSelect
This graph illustrates the architecture of an agent-based system designed for automated bug reproduction and patching. The main flow involves a TestAgent generating and refining reproduction tests, an AgentSearch providing code context, an AgentWritePatch proposing fixes, an AgentReviewer evaluating patches, and an AgentSelect choosing the best solution. AgentCommon and PatchUtils provide shared utilities, while AgentProxy orchestrates the overall process. The system's purpose is to autonomously identify, reproduce, and fix software bugs.
Manages the entire process of generating, executing, and validating reproduction tests for a given bug. It iteratively refines test scripts based on execution feedback to ensure the bug is reliably reproducible. This is fundamental for confirming the bug and validating fixes.
Related Classes/Methods:
Responsible for intelligently searching the codebase to retrieve relevant code context, file paths, and function definitions. This component is crucial for providing other agents with the necessary information to understand the bug and formulate fixes, acting as the knowledge provider.
Related Classes/Methods:
Generates candidate code patches to address the identified bug. This involves synthesizing information from the bug reproduction phase and code search results to propose a fix. This is the core "repair" component.
Related Classes/Methods:
Evaluates the quality, correctness, and adherence to coding standards of the patches generated by AgentWritePatch. It provides critical feedback to refine or reject proposed fixes, ensuring patch quality.
Related Classes/Methods:
Selects the most appropriate and effective patch from a set of generated and reviewed candidates. This selection might be based on successful test runs, review scores, or other defined metrics. This component makes the final decision on which fix to apply.
Related Classes/Methods:
Provides a set of shared utilities and foundational elements used across all specialized agents. This includes common exception handling (InvalidLLMResponse) and mechanisms for managing LLM interaction patterns (e.g., replace_system_prompt). It's essential for consistency and reusability across agents.
Related Classes/Methods:
Contains helper functions for manipulating, analyzing, or applying code patches. This utility component supports the patch generation, review, and selection processes.
Related Classes/Methods:
Serves as an abstraction layer or a generic interface for interacting with different agents, or it could facilitate inter-agent communication. This component is critical for orchestrating the flow and communication between the various specialized agents.
Related Classes/Methods:
Component for all unclassified files and utility functions (Utility functions/External Libraries/Dependencies)
Related Classes/Methods: None