44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
|
|
# Refactor Plan for `agent_run()` in `src/agent.c`
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The `agent_run()` function is a core component responsible for orchestrating the agent's lifecycle, including message handling, API communication, error handling, and recursive task management. Its length and complexity hinder maintainability and readability.
|
||
|
|
|
||
|
|
## Proposed Refactor
|
||
|
|
|
||
|
|
To improve the code quality, the function will be split into smaller, focused functions:
|
||
|
|
|
||
|
|
### 1. `build_request()`
|
||
|
|
- Purpose: Construct the JSON payload for the API request.
|
||
|
|
- Benefits: Isolates request construction, making it easier to modify and test.
|
||
|
|
|
||
|
|
### 2. `process_response()`
|
||
|
|
- Purpose: Handle the API response, including parsing, error detection, and extracting the choice.
|
||
|
|
- Benefits: Separates response handling logic, simplifies main loop.
|
||
|
|
|
||
|
|
### 3. `handle_tool_calls()`
|
||
|
|
- Purpose: Manage execution of tool calls, including calling tools and integrating results.
|
||
|
|
- Benefits: Encapsulates tool execution, improves clarity.
|
||
|
|
|
||
|
|
### 4. `check_incomplete_response()`
|
||
|
|
- Purpose: Detect if the response indicates incomplete work, triggering context shrinking.
|
||
|
|
- Benefits: Isolates heuristic checks, makes main loop cleaner.
|
||
|
|
|
||
|
|
### 5. `perform_iteration()`
|
||
|
|
- Purpose: Encapsulate one iteration of the agent loop, calling the above functions.
|
||
|
|
- Benefits: Modularizes iteration logic, facilitates retries and control flow.
|
||
|
|
|
||
|
|
## Rationale
|
||
|
|
|
||
|
|
This refactor aims to:
|
||
|
|
- Enhance readability and maintainability.
|
||
|
|
- Facilitate unit testing of individual components.
|
||
|
|
- Simplify control flow and error handling.
|
||
|
|
|
||
|
|
## Implementation
|
||
|
|
|
||
|
|
The implementation will involve creating these functions in `src/agent.c` and replacing the main loop in `agent_run()` with calls to `perform_iteration()` until completion or error.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
This plan will be executed in the next step.
|