From ab48aad213c824842623182129412bf7211cd030 Mon Sep 17 00:00:00 2001 From: Coco Sheng Date: Mon, 4 May 2026 12:05:24 -0400 Subject: [PATCH] perf: skip redundant GEMINI.md loading in partialConfig (#26443) --- packages/cli/src/config/config.test.ts | 14 ++++++++++++++ packages/cli/src/config/config.ts | 10 ++++++++-- packages/cli/src/gemini.tsx | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index 312517db56..9cb48dfc7b 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -1174,6 +1174,20 @@ describe('Hierarchical Memory Loading (config.ts) - Placeholder Suite', () => { ['.git'], // boundaryMarkers ); }); + + it('should NOT call loadServerHierarchicalMemory when skipMemoryLoad is true', async () => { + process.argv = ['node', 'script.js']; + const settings = createTestMergedSettings({ + experimental: { jitContext: false }, + }); + + const argv = await parseArguments(settings); + await loadCliConfig(settings, 'session-id', argv, { + skipMemoryLoad: true, + }); + + expect(ServerConfig.loadServerHierarchicalMemory).not.toHaveBeenCalled(); + }); }); describe('mergeMcpServers', () => { diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 97689b5fe5..389fc4d2a7 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -560,6 +560,7 @@ export interface LoadCliConfigOptions { }; worktreeSettings?: WorktreeSettings; skipExtensions?: boolean; + skipMemoryLoad?: boolean; } export async function loadCliConfig( @@ -568,7 +569,12 @@ export async function loadCliConfig( argv: CliArgs, options: LoadCliConfigOptions = {}, ): Promise { - const { cwd = process.cwd(), projectHooks, skipExtensions = false } = options; + const { + cwd = process.cwd(), + projectHooks, + skipExtensions = false, + skipMemoryLoad = false, + } = options; const debugMode = isDebugMode(argv); const worktreeSettings = @@ -681,7 +687,7 @@ export async function loadCliConfig( const finalExtensionLoader = extensionManager ?? new SimpleExtensionLoader([]); - if (!experimentalJitContext) { + if (!experimentalJitContext && !skipMemoryLoad) { // Call the (now wrapper) loadHierarchicalGeminiMemory which calls the server's version const result = await loadServerHierarchicalMemory( cwd, diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index f64c3a9cfd..7bd3f3955b 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -412,6 +412,7 @@ export async function main() { const partialConfig = await loadCliConfig(settings.merged, sessionId, argv, { projectHooks: settings.workspace.settings.hooks, skipExtensions: true, + skipMemoryLoad: true, }); adminControlsListner.setConfig(partialConfig);