From 92af02c4942a3846dffc02ca9421f03cc10e1535 Mon Sep 17 00:00:00 2001 From: "koalazf.99" Date: Tue, 16 Sep 2025 16:27:01 +0800 Subject: [PATCH] remove read_folder context before user input --- packages/cli/src/config/config.ts | 1 + packages/cli/src/config/settingsSchema.ts | 12 +++++++++++- packages/core/src/config/config.ts | 9 ++++++++- packages/core/src/core/client.ts | 23 ++++++++++++++--------- packages/core/src/subagents/subagent.ts | 14 +++++++++----- 5 files changed, 43 insertions(+), 16 deletions(-) diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index aae4033a..25427f3b 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -603,6 +603,7 @@ export async function loadCliConfig( interactive, trustedFolder, shouldUseNodePtyShell: settings.shouldUseNodePtyShell, + skipStartupContext: settings.skipStartupContext, skipNextSpeakerCheck: settings.skipNextSpeakerCheck, }); } diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 664820bd..0049bd50 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -595,12 +595,22 @@ export const SETTINGS_SCHEMA = { description: 'The API key for the Tavily API.', showInDialog: false, }, + skipStartupContext: { + type: 'boolean', + label: 'Skip Startup Context', + category: 'General', + requiresRestart: false, + default: true, + description: + 'Do not prepend environment/folder structure context or the initial acknowledgment message.', + showInDialog: true, + }, skipNextSpeakerCheck: { type: 'boolean', label: 'Skip Next Speaker Check', category: 'General', requiresRestart: false, - default: false, + default: true, description: 'Skip the next speaker check.', showInDialog: true, }, diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 35dde76b..1d97d659 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -232,6 +232,7 @@ export interface ConfigParameters { interactive?: boolean; trustedFolder?: boolean; shouldUseNodePtyShell?: boolean; + skipStartupContext?: boolean; skipNextSpeakerCheck?: boolean; } @@ -317,6 +318,7 @@ export class Config { private readonly interactive: boolean; private readonly trustedFolder: boolean | undefined; private readonly shouldUseNodePtyShell: boolean; + private readonly skipStartupContext: boolean; private readonly skipNextSpeakerCheck: boolean; private initialized: boolean = false; @@ -398,7 +400,8 @@ export class Config { this.interactive = params.interactive ?? false; this.trustedFolder = params.trustedFolder; this.shouldUseNodePtyShell = params.shouldUseNodePtyShell ?? false; - this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? false; + this.skipStartupContext = params.skipStartupContext ?? true; + this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? true; // Web search this.tavilyApiKey = params.tavilyApiKey; @@ -857,6 +860,10 @@ export class Config { return this.shouldUseNodePtyShell; } + getSkipStartupContext(): boolean { + return this.skipStartupContext; + } + getSkipNextSpeakerCheck(): boolean { return this.skipNextSpeakerCheck; } diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index 359c7d60..3723e7fe 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -228,19 +228,24 @@ export class GeminiClient { async startChat(extraHistory?: Content[]): Promise { this.forceFullIdeContext = true; - const envParts = await getEnvironmentContext(this.config); + const envParts = this.config.getSkipStartupContext() + ? [] + : await getEnvironmentContext(this.config); const toolRegistry = this.config.getToolRegistry(); const toolDeclarations = toolRegistry.getFunctionDeclarations(); const tools: Tool[] = [{ functionDeclarations: toolDeclarations }]; const history: Content[] = [ - { - role: 'user', - parts: envParts, - }, - { - role: 'model', - parts: [{ text: 'Got it. Thanks for the context!' }], - }, + ...( + envParts.length + ? [ + { role: 'user', parts: envParts }, + { + role: 'model', + parts: [{ text: 'Got it. Thanks for the context!' }], + }, + ] + : [] + ), ...(extraHistory ?? []), ]; try { diff --git a/packages/core/src/subagents/subagent.ts b/packages/core/src/subagents/subagent.ts index 92cea603..2ca97a20 100644 --- a/packages/core/src/subagents/subagent.ts +++ b/packages/core/src/subagents/subagent.ts @@ -781,11 +781,15 @@ export class SubAgentScope { ); } - const envParts = await getEnvironmentContext(this.runtimeContext); - const envHistory: Content[] = [ - { role: 'user', parts: envParts }, - { role: 'model', parts: [{ text: 'Got it. Thanks for the context!' }] }, - ]; + const envParts = this.runtimeContext.getSkipStartupContext() + ? [] + : await getEnvironmentContext(this.runtimeContext); + const envHistory: Content[] = envParts.length + ? [ + { role: 'user', parts: envParts }, + { role: 'model', parts: [{ text: 'Got it. Thanks for the context!' }] }, + ] + : []; const start_history = [ ...envHistory,