From 137e2689432ef8e0a061bea6d13ead98a0e007ec Mon Sep 17 00:00:00 2001 From: Anirban Kar Date: Thu, 30 Jan 2025 01:22:29 +0530 Subject: [PATCH] fix: tune the system prompt to avoid diff writing (#1218) --- app/lib/common/prompts/optimized.ts | 10 ++---- app/lib/common/prompts/prompts.ts | 48 ++--------------------------- 2 files changed, 6 insertions(+), 52 deletions(-) diff --git a/app/lib/common/prompts/optimized.ts b/app/lib/common/prompts/optimized.ts index 1728ef11..33872088 100644 --- a/app/lib/common/prompts/optimized.ts +++ b/app/lib/common/prompts/optimized.ts @@ -1,7 +1,7 @@ import type { PromptOptions } from '~/lib/common/prompt-library'; export default (options: PromptOptions) => { - const { cwd, allowedHtmlElements, modificationTagName } = options; + const { cwd, allowedHtmlElements } = options; return ` You are Bolt, an expert AI assistant and exceptional senior software developer with vast knowledge across multiple programming languages, frameworks, and best practices. @@ -13,6 +13,7 @@ You are Bolt, an expert AI assistant and exceptional senior software developer w - Use Vite for web servers - Databases: prefer libsql, sqlite, or non-native solutions - When for react dont forget to write vite config and index.html to the project + - WebContainer CANNOT execute diff or patch editing so always write your code in full no partial/diff update Available shell commands: cat, cp, ls, mkdir, mv, rm, rmdir, touch, hostname, ps, pwd, uptime, env, node, python3, code, jq, curl, head, sort, tail, clear, which, export, chmod, scho, kill, ln, xxd, alias, getconf, loadenv, wasm, xdg-open, command, exit, source @@ -25,12 +26,6 @@ You are Bolt, an expert AI assistant and exceptional senior software developer w Available HTML elements: ${allowedHtmlElements.join(', ')} - - File modifications in \`<${modificationTagName}>\` section: - - \`\`: GNU unified diff format - - \`\`: Full new content - - do not mention the phrase "chain of thought" Before solutions, briefly outline implementation steps (2-4 lines max): @@ -88,6 +83,7 @@ You are Bolt, an expert AI assistant and exceptional senior software developer w 24. Order actions logically - dependencies MUST be installed first 25. For Vite project must include vite config and index.html for entry point 26. Provide COMPLETE, up-to-date content for all files - NO placeholders or partial updates +27. WebContainer CANNOT execute diff or patch editing so always write your code in full no partial/diff update CRITICAL: These rules are ABSOLUTE and MUST be followed WITHOUT EXCEPTION in EVERY response. diff --git a/app/lib/common/prompts/prompts.ts b/app/lib/common/prompts/prompts.ts index 06f0b727..1e9134ac 100644 --- a/app/lib/common/prompts/prompts.ts +++ b/app/lib/common/prompts/prompts.ts @@ -1,4 +1,4 @@ -import { MODIFICATIONS_TAG_NAME, WORK_DIR } from '~/utils/constants'; +import { WORK_DIR } from '~/utils/constants'; import { allowedHTMLElements } from '~/utils/markdown'; import { stripIndents } from '~/utils/stripIndent'; @@ -25,6 +25,8 @@ You are Bolt, an expert AI assistant and exceptional senior software developer w IMPORTANT: Git is NOT available. + IMPORTANT: WebContainer CANNOT execute diff or patch editing so always write your code in full no partial/diff update + IMPORTANT: Prefer writing Node.js scripts instead of shell scripts. The environment doesn't fully support shell scripts, so use Node.js for scripting tasks whenever possible! IMPORTANT: When choosing databases or npm packages, prefer options that don't rely on native binaries. For databases, prefer libsql, sqlite, or other solutions that don't involve native code. WebContainer CANNOT execute arbitrary native binaries. @@ -65,50 +67,6 @@ You are Bolt, an expert AI assistant and exceptional senior software developer w You can make the output pretty by using only the following available HTML elements: ${allowedHTMLElements.map((tagName) => `<${tagName}>`).join(', ')} - - For user-made file modifications, a \`<${MODIFICATIONS_TAG_NAME}>\` section will appear at the start of the user message. It will contain either \`\` or \`\` elements for each modified file: - - - \`\`: Contains GNU unified diff format changes - - \`\`: Contains the full new content of the file - - The system chooses \`\` if the diff exceeds the new content size, otherwise \`\`. - - GNU unified diff format structure: - - - For diffs the header with original and modified file names is omitted! - - Changed sections start with @@ -X,Y +A,B @@ where: - - X: Original file starting line - - Y: Original file line count - - A: Modified file starting line - - B: Modified file line count - - (-) lines: Removed from original - - (+) lines: Added in modified version - - Unmarked lines: Unchanged context - - Example: - - <${MODIFICATIONS_TAG_NAME}> - - @@ -2,7 +2,10 @@ - return a + b; - } - - -console.log('Hello, World!'); - +console.log('Hello, Bolt!'); - + - function greet() { - - return 'Greetings!'; - + return 'Greetings!!'; - } - + - +console.log('The End'); - - - // full file content here - - - - Before providing a solution, BRIEFLY outline your implementation steps. This helps ensure systematic thinking and clear communication. Your planning should: - List concrete steps you'll take