From 89b1a9abd72481f0bef13cf372a95a15af5dfe4f Mon Sep 17 00:00:00 2001 From: Christian Gunderman Date: Wed, 28 Jan 2026 18:19:57 -0800 Subject: [PATCH] Revert "Simplify prompt changes." This reverts commit 4e1fa84d750d9d40f1dee07b2dc84013b461605d. --- packages/core/src/prompts/snippets.ts | 10 ++++++++-- packages/core/src/tools/edit.ts | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/core/src/prompts/snippets.ts b/packages/core/src/prompts/snippets.ts index 38ba82624e..49074f6907 100644 --- a/packages/core/src/prompts/snippets.ts +++ b/packages/core/src/prompts/snippets.ts @@ -135,6 +135,7 @@ export function renderCoreMandates(options?: CoreMandatesOptions): string { return ` # Core Mandates +- **Context Efficiency:** Minimize context usage. Do not read entire files unless necessary. Use 'search_file_content' or 'read_file' with 'limit' to inspect large files. - **Conventions:** Rigorously adhere to existing project conventions when reading or modifying code. Analyze surrounding code, tests, and configuration first. - **Libraries/Frameworks:** NEVER assume a library/framework is available or appropriate. Verify its established usage within the project (check imports, configuration files like 'package.json', 'Cargo.toml', 'requirements.txt', 'build.gradle', etc., or observe neighboring files) before employing it. - **Style & Structure:** Mimic the style (formatting, naming), structure, framework choices, typing, and architectural patterns of existing code in the project. @@ -367,10 +368,15 @@ function mandateContinueWork(interactive: boolean): string { function workflowStepUnderstand(options: PrimaryWorkflowsOptions): string { if (options.enableCodebaseInvestigator) { - return `1. **Understand & Strategize:** Think about the user's request and the relevant codebase context. When the task involves **complex refactoring, codebase exploration or system-wide analysis**, your **first and primary action** must be to delegate to the 'codebase_investigator' agent using the 'codebase_investigator' tool. Use it to build a comprehensive understanding of the code, its structure, and dependencies. For **simple, targeted searches** (like finding a specific function name, file path, or variable declaration), you should use '${GREP_TOOL_NAME}' or '${GLOB_TOOL_NAME}' directly.`; + return `1. **Understand & Strategize:** Think about the user's request and the relevant codebase context. When the task involves **complex refactoring, codebase exploration or system-wide analysis**, your **first and primary action** must be to delegate to the 'codebase_investigator' agent using the 'codebase_investigator' tool. Use it to build a comprehensive understanding of the code, its structure, and dependencies. For **simple, targeted searches** (like finding a specific function name, file path, or variable declaration), you should use '${GREP_TOOL_NAME}' or '${GLOB_TOOL_NAME}' directly. +Use '${READ_FILE_TOOL_NAME}' to understand context and validate any assumptions you may have. +IMPORTANT: extra context consumed by unnecessarily reading entire files will degrade the quality of your answer, so **ALWAYS** use ranged reads if you know approximately which lines you need. For example, when fixing a linter error at line 50, read ~20 lines around it (offset: 40, limit: 20) to get sufficient context for a replacement.`; } return `1. **Understand:** Think about the user's request and the relevant codebase context. Use '${GREP_TOOL_NAME}' and '${GLOB_TOOL_NAME}' search tools extensively (in parallel if independent) to understand file structures, existing code patterns, and conventions. -Use '${READ_FILE_TOOL_NAME}' to understand context and validate any assumptions you may have. If you need to read multiple files, you should make multiple parallel calls to '${READ_FILE_TOOL_NAME}'.`; +Use '${READ_FILE_TOOL_NAME}' to understand context and validate any assumptions you may have. If you need to read multiple files, you should make multiple parallel calls to '${READ_FILE_TOOL_NAME}'. +Keep in mind the following as you explore: +- Search and/or read enough files to gain a thorough understanding of the problem. +- IMPORTANT: extra context consumed by unnecessarily reading entire files will degrade the quality of your answer, so **ALWAYS** use ranged reads if you know approximately which lines you need. For example, when fixing a linter error at line 50, read ~20 lines around it (offset: 40, limit: 20) to get sufficient context for a replacement.`; } function workflowStepPlan(options: PrimaryWorkflowsOptions): string { diff --git a/packages/core/src/tools/edit.ts b/packages/core/src/tools/edit.ts index b32d0b853b..ed0ac775c4 100644 --- a/packages/core/src/tools/edit.ts +++ b/packages/core/src/tools/edit.ts @@ -912,7 +912,7 @@ export class EditTool super( EditTool.Name, 'Edit', - `Replaces text within a file. By default, replaces a single occurrence, but can replace multiple occurrences when \`expected_replacements\` is specified. This tool requires providing significant context around the change to ensure precise targeting. Always use the ${READ_FILE_TOOL_NAME} tool (using 'offset' and 'limit' to get at least 50 lines of context around the match) to examine the file's current content before attempting a text replacement. + `Replaces text within a file. By default, replaces a single occurrence, but can replace multiple occurrences when \`expected_replacements\` is specified. This tool requires providing significant context around the change to ensure precise targeting. Always use the ${READ_FILE_TOOL_NAME} tool (using 'offset' and 'limit' to get ~20 lines of context around the match) to examine the file's current content before attempting a text replacement. The user has the ability to modify the \`new_string\` content. If modified, this will be stated in the response.