fix: clarify conflict and response style prompts

Conflict resolution prompts now ask for an analysis-first strategy
Response style instructions are wrapped as system reminders
Prompt templates stay separate from reminder formatting
This commit is contained in:
Bohdan Triapitsyn
2026-05-07 23:03:46 +03:00
parent 35d95c3044
commit 0b0bb11d36
3 changed files with 25 additions and 6 deletions
@@ -73,6 +73,7 @@ import { usePermissionStore } from '@/stores/permissionStore';
import { extractGitChangedFiles } from './changedFiles'; import { extractGitChangedFiles } from './changedFiles';
import { useI18n } from '@/lib/i18n'; import { useI18n } from '@/lib/i18n';
import { fetchResponseStyleInstruction } from '@/lib/responseStyle'; import { fetchResponseStyleInstruction } from '@/lib/responseStyle';
import { wrapSystemReminder } from '@/lib/systemReminder';
import { getSyncMessages } from '@/sync/sync-refs'; import { getSyncMessages } from '@/sync/sync-refs';
const MAX_VISIBLE_TEXTAREA_LINES = 8; const MAX_VISIBLE_TEXTAREA_LINES = 8;
@@ -1576,7 +1577,7 @@ const ChatInputComponent: React.FC<ChatInputProps> = ({ onOpenSettings, scrollTo
const responseStyleInstruction = await fetchResponseStyleInstruction().catch(() => null); const responseStyleInstruction = await fetchResponseStyleInstruction().catch(() => null);
if (responseStyleInstruction) { if (responseStyleInstruction) {
additionalParts.push({ additionalParts.push({
text: responseStyleInstruction, text: wrapSystemReminder(responseStyleInstruction),
synthetic: true, synthetic: true,
}); });
} }
+8 -5
View File
@@ -288,7 +288,7 @@ Do not implement changes until I confirm; end with: "Next actions: <1 sentence>"
{ key: 'operation_label', description: 'Operation label in lower-case (merge/rebase).' }, { key: 'operation_label', description: 'Operation label in lower-case (merge/rebase).' },
{ key: 'head_ref', description: 'Head reference for preserving intent.' }, { key: 'head_ref', description: 'Head reference for preserving intent.' },
], ],
template: 'Resolve {{operation_label}} conflicts, stage the resolved files, and complete the {{operation_label}}. Preserve the intent of changes from {{head_ref}}.', template: 'Investigate the {{operation_label}} conflicts and concisely report the intended resolution strategy without making modifications. Wait for confirmation before resolving, staging, or continuing the {{operation_label}}. Preserve the intent of changes from {{head_ref}}.',
}, },
{ {
id: 'git.conflict.resolve.instructions', id: 'git.conflict.resolve.instructions',
@@ -307,13 +307,16 @@ Do not implement changes until I confirm; end with: "Next actions: <1 sentence>"
- Operation: {{operation}} - Operation: {{operation}}
- Head Info: {{head_info}} - Head Info: {{head_info}}
Required steps: Required steps before confirmation:
1. Read each conflicted file to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...) 1. Read each conflicted file to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
2. Edit each file to resolve conflicts by choosing the correct code or merging both changes appropriately 2. Inspect the relevant surrounding code and changes from both sides
3. Stage all resolved files with: git add <file> 3. Report a concise per-file resolution strategy and any assumptions or tradeoffs
4. Complete the {{operation_label}} with: {{continue_cmd}} 4. Wait for explicit user confirmation before editing files, staging files, or running: {{continue_cmd}}
Important: Important:
- Do not modify files before the user confirms the proposed strategy
- Do not stage files before the user confirms the proposed strategy
- Do not continue the {{operation_label}} before the user confirms the proposed strategy
- Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>) - Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
- Make sure the final code is syntactically correct and preserves intent from both sides - Make sure the final code is syntactically correct and preserves intent from both sides
- Do not leave any files with unresolved conflict markers - Do not leave any files with unresolved conflict markers
+15
View File
@@ -0,0 +1,15 @@
const SYSTEM_REMINDER_OPEN = '<system-reminder>';
const SYSTEM_REMINDER_CLOSE = '</system-reminder>';
export const wrapSystemReminder = (text: string): string => {
const trimmed = text.trim();
if (!trimmed) {
return '';
}
if (trimmed.startsWith(SYSTEM_REMINDER_OPEN) && trimmed.endsWith(SYSTEM_REMINDER_CLOSE)) {
return trimmed;
}
return `${SYSTEM_REMINDER_OPEN}\n${trimmed}\n${SYSTEM_REMINDER_CLOSE}`;
};