Skip to content

Conversation

ThibaultScalbert
Copy link

@ThibaultScalbert ThibaultScalbert commented Sep 4, 2025

This PR adds a persist_memory flag to the AgentTool class, which allows the conversation history between a main agent and a sub-agent to be persisted across multiple calls to the AgentTool within the same session.

Fixes #2850

Testing Plan

I have added a new test case test_lru_cache to verify that the LRU cache evicts runners when the cache is full.

I have also updated the existing tests test_persist_memory and test_no_persist_memory to use a fixture to reduce code duplication.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @ThibaultScalbert, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the AgentTool by introducing a persist_memory flag. This feature allows the conversation history of sub-agents to be maintained across multiple interactions within a single session, providing a more continuous and context-aware experience for complex agent workflows.

Highlights

  • New persist_memory flag: Introduced a persist_memory boolean flag in the AgentTool's constructor and AgentToolConfig to control whether conversation history is maintained for sub-agents.
  • Conversation History Persistence: When persist_memory is enabled, the AgentTool now stores and reuses the Runner and Session objects for a given session ID, allowing the sub-agent's conversation history to persist across multiple run_async calls within the same session.
  • Conditional Runner Initialization: The run_async method has been updated to check the persist_memory flag and a new internal _runners dictionary. If persistence is enabled and a runner/session pair already exists for the current session, it reuses them; otherwise, it creates new ones.
  • Unit Tests for Persistence: Comprehensive unit tests (test_persist_memory and test_no_persist_memory) have been added to test_agent_tool.py to validate the correct behavior of the persist_memory flag, ensuring conversation history is either maintained or reset as expected.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@adk-bot adk-bot added bot triaged [Bot] This issue is triaged by ADK bot core [Component] This issue is related to the core interface and implementation labels Sep 4, 2025
@adk-bot adk-bot requested a review from Jacksunwei September 4, 2025 13:17
@adk-bot
Copy link
Collaborator

adk-bot commented Sep 4, 2025

Response from ADK Triaging Agent

Hello @ThibaultScalbert, thank you for creating this PR!

To help us review this PR, could you please:

  1. Associate a GitHub issue with this PR. If there is no existing issue, could you please create one?
  2. Add a "Testing Plan" section to your PR description explaining how you tested these changes.

This information will help reviewers to review your PR more efficiently. Thanks!

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a persist_memory flag to AgentTool, allowing conversation history to be maintained across multiple tool calls within a session. The implementation correctly caches and reuses Runner instances based on the session ID. The changes are accompanied by new unit tests that verify both the memory persistence and non-persistence scenarios.

My review focuses on a potential memory leak, code style improvements, and test code refactoring. Specifically:

  • There's a potential memory leak in AgentTool as cached runners are never cleaned up.
  • A redundant import was identified.
  • I've suggested adding a type hint for better code clarity.
  • The new tests have duplicated setup code that could be refactored into a pytest fixture for better maintainability.

Overall, the feature is well-implemented, but addressing the memory leak is important for production use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bot triaged [Bot] This issue is triaged by ADK bot core [Component] This issue is related to the core interface and implementation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

AgentTool do not persist memory
2 participants