Skip to content

feat: add max_retries config for PydanticAI agent retries - #118

Closed
perce7al wants to merge 3 commits into
FSoft-AI4Code:mainfrom
perce7al:feat/max-retries
Closed

perce7al wants to merge 3 commits into
FSoft-AI4Code:mainfrom
perce7al:feat/max-retries

Conversation

@perce7al

Copy link
Copy Markdown

Summary

Add configurable max_retries support for PydanticAI agents.
This allows CodeWiki to control how many times an agent can retry a failed tool call before giving up.

Changes

  • Add max_retries to Config with a default value of 3.
  • Persist max_retries through Configuration serialization and backend configuration.
  • Add --max-retries to config set.
  • Add --max-retries as a per-run override for generate.
  • Pass config.max_retries to all CodeWiki PydanticAI agents via Agent(retries=...).
  • Add tests covering configuration and agent retry behavior..

Behavior

max_retries controls agent-level retries for failed tool calls. For example:

max_retries = 3

allows an agent to retry a failed tool call up to three additional times before giving up.

Add a configurable `max_retries` parameter (default: 3) that controls
the number of retries the PydanticAI agent attempts on failed tool calls
via `Agent(retries=...)`. The parameter flows through Config, Configuration
serialization, CLI (`config set`/`config show`/`generate`), and MCP server.
@perce7al
perce7al marked this pull request as ready for review September 26, 2026 12:24
@anhnh2002

Copy link
Copy Markdown
Collaborator

Thanks for this. It's fixed in #121 together with a few related agent-limit changes, so I'm closing this one.
The setting is called agent_retries (default 3) so it isn't mixed up with network retries. It works in config set, config show and as --agent-retries on generate, and it applies to every agent, including sub-module agents.

@anhnh2002 anhnh2002 closed this Sep 29, 2026
@perce7al
perce7al deleted the feat/max-retries branch September 29, 2026 09:50
pull Bot pushed a commit to soitun/CodeWiki that referenced this pull request Sep 29, 2026
…ons, ship updater

- Package: add codewiki.src.be.updater to [tool.setuptools] packages; a
  non-editable install had no updater, so every --update failed on import.
  New test checks every package directory is listed. (FSoft-AI4Code#119)
- Agent limits: pass UsageLimits(request_limit=...) to every agent run and
  retries=... to every Agent. pydantic-ai defaults are 50 requests per run and
  1 retry per failing tool call, which complex modules and
  generate_sub_module_documentation hit. New settings request_limit (default
  100) and agent_retries (default 3), in `codewiki config set`, `config show`
  and as per-run overrides on `codewiki generate`. (FSoft-AI4Code#115, FSoft-AI4Code#118)
- Fallback: FallbackModel now also falls back on UnexpectedModelBehavior (a 200
  response whose body does not parse), keeping ModelAPIError. (FSoft-AI4Code#117)
- Overview pages: MODULE_OVERVIEW_PROMPT / REPO_OVERVIEW_PROMPT had no slot for
  the user's instructions. complete() takes an optional system_prompt (OpenAI-
  compatible, litellm, Azure, and caw via CawAgent(system_prompt=...)), and
  parent/repo overviews send the instructions as a system message. (FSoft-AI4Code#116)
- Sub-module agents built their system prompt with a raw .format(), so with no
  instructions the prompt ended in the literal text "None"; they now use
  format_system_prompt / format_leaf_system_prompt like the top-level agents.

Reported in FSoft-AI4Code#115, FSoft-AI4Code#116, FSoft-AI4Code#117, FSoft-AI4Code#118, FSoft-AI4Code#119.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants