Conversation
Summary of ChangesHello @gundermanc, 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 introduces new evaluations and updates core prompt instructions to enhance the agent's efficiency when using search tools. The goal is to ensure the agent minimizes context window usage by applying stricter limits on search results, thereby improving performance and reducing unnecessary data retrieval. Highlights
Changelog
Activity
Using Gemini Code AssistThe 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 by creating a comment using either
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 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
|
There was a problem hiding this comment.
Code Review
This pull request enhances the agent's search efficiency by refining the system prompt to encourage frugal use of search tools and adds corresponding evaluation tests. The prompt changes are clear and provide better guidance. I've suggested an improvement to the new evaluation test to make its validation logic more robust by ensuring a single search call is frugal in all expected ways, rather than checking for different aspects of frugality across multiple calls.
| const hasTotalMaxLimit = grepParams.some( | ||
| (p) => p.total_max_matches !== undefined && p.total_max_matches <= 100, | ||
| ); | ||
| expect( | ||
| hasTotalMaxLimit, | ||
| `Expected agent to use a small total_max_matches (<= 100) for a sample usage request. Actual values: ${JSON.stringify( | ||
| grepParams.map((p) => p.total_max_matches), | ||
| )}`, | ||
| ).toBe(true); | ||
|
|
||
| const hasMaxMatchesPerFileLimit = grepParams.some( | ||
| (p) => | ||
| p.max_matches_per_file !== undefined && p.max_matches_per_file <= 5, | ||
| ); | ||
| expect( | ||
| hasFrugalLimit, | ||
| `Expected agent to use a small total_max_matches for a sample usage request. Params used: ${JSON.stringify( | ||
| grepCalls.map(getGrepParams), | ||
| null, | ||
| 2, | ||
| hasMaxMatchesPerFileLimit, | ||
| `Expected agent to use a small max_matches_per_file (<= 5) for a sample usage request. Actual values: ${JSON.stringify( | ||
| grepParams.map((p) => p.max_matches_per_file), | ||
| )}`, | ||
| ).toBe(true); |
There was a problem hiding this comment.
The current test logic checks for total_max_matches and max_matches_per_file limits in separate some() calls. This means the test can pass if one grep call has a total_max_matches limit and a different call has a max_matches_per_file limit.
To ensure that the agent is making truly frugal calls, we should verify that at least one call includes both limits simultaneously. This can be done with a single some() and expect() call that combines both conditions.
const hasFrugalCall = grepParams.some(
(p) =>
(p.total_max_matches !== undefined && p.total_max_matches <= 100) &&
(p.max_matches_per_file !== undefined && p.max_matches_per_file <= 5),
);
expect(
hasFrugalCall,
`Expected agent to use a small total_max_matches (<= 100) AND max_matches_per_file (<= 5) in at least one call. Actual params: ${JSON.stringify(
grepParams,
)}`,
).toBe(true);|
Size Change: +208 B (0%) Total Size: 24.3 MB ℹ️ View Unchanged
|
…ini/gemini-cli (#37) * fix(cli): resolve double rendering in shpool and address vscode lint warnings (google-gemini#18704) * feat(plan): document and validate Plan Mode policy overrides (google-gemini#18825) * Fix pressing any key to exit select mode. (google-gemini#18421) * fix(cli): update F12 behavior to only open drawer if browser fails (google-gemini#18829) * feat(plan): allow skills to be enabled in plan mode (google-gemini#18817) Co-authored-by: Jerop Kipruto <jerop@google.com> * docs(plan): add documentation for plan mode tools (google-gemini#18827) * Remove experimental note in extension settings docs (google-gemini#18822) * Update prompt and grep tool definition to limit context size (google-gemini#18780) * docs(plan): add `ask_user` tool documentation (google-gemini#18830) * Revert unintended credentials exposure (google-gemini#18840) * feat(core): update internal utility models to Gemini 3 (google-gemini#18773) * feat(a2a): add value-resolver for auth credential resolution (google-gemini#18653) * Removed getPlainTextLength (google-gemini#18848) * More grep prompt tweaks (google-gemini#18846) * refactor(cli): Reactive useSettingsStore hook (google-gemini#14915) * fix(mcp): Ensure that stdio MCP server execution has the `GEMINI_CLI=1` env variable populated. (google-gemini#18832) * fix(core): improve headless mode detection for flags and query args (google-gemini#18855) * refactor(cli): simplify UI and remove legacy inline tool confirmation logic (google-gemini#18566) * feat(cli): deprecate --allowed-tools and excludeTools in favor of policy engine (google-gemini#18508) * fix(workflows): improve maintainer detection for automated PR actions (google-gemini#18869) * refactor(cli): consolidate useToolScheduler and delete legacy implementation (google-gemini#18567) * Update changelog for v0.28.0 and v0.29.0-preview0 (google-gemini#18819) * fix(core): ensure sub-agents are registered regardless of tools.allowed (google-gemini#18870) --------- Co-authored-by: Brad Dux <959674+braddux@users.noreply.github.com> Co-authored-by: Jerop Kipruto <jerop@google.com> Co-authored-by: Jacob Richman <jacob314@gmail.com> Co-authored-by: Sandy Tao <sandytao520@icloud.com> Co-authored-by: Adib234 <30782825+Adib234@users.noreply.github.com> Co-authored-by: christine betts <chrstn@uw.edu> Co-authored-by: Christian Gunderman <gundermanc@gmail.com> Co-authored-by: Adam Weidman <65992621+adamfweidman@users.noreply.github.com> Co-authored-by: Dev Randalpura <devrandalpura@google.com> Co-authored-by: Pyush Sinha <pyushsinha20@gmail.com> Co-authored-by: Richie Foreman <richie.foreman@gmail.com> Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com> Co-authored-by: Abhi <43648792+abhipatel12@users.noreply.github.com> Co-authored-by: Abhijit Balaji <abhijitbalaji@google.com> Co-authored-by: Bryan Morgan <bryanmorgan@google.com> Co-authored-by: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Co-authored-by: matt korwel <matt.korwel@gmail.com>
Summary
Adds another case to the grep prompt.
Details
Related Issues
How to Validate
Pre-Merge Checklist