44 lines
1.8 KiB
Markdown
Raw Normal View History

2026-01-29 06:54:10 +01:00
# 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.