diff --git a/Services/SystemPromptBuilder.cs b/Services/SystemPromptBuilder.cs index 5e71378..7c972c8 100644 --- a/Services/SystemPromptBuilder.cs +++ b/Services/SystemPromptBuilder.cs @@ -16,12 +16,17 @@ public static class SystemPromptBuilder if (!string.IsNullOrWhiteSpace(agent.Instructions)) parts.Add($"## Instructions\n{agent.Instructions}"); + bool toolAny = string.Equals(agent.ToolChoice, "any", System.StringComparison.OrdinalIgnoreCase); + if (!string.IsNullOrWhiteSpace(session.Workspace)) { - parts.Add(@$"## KRITISCH: Tool-Nutzung -JEDE Datei-Operation und JEDER Shell-Befehl MUSS über einen Tool-Aufruf erfolgen. NIEMALS eine Aktion nur beschreiben oder behaupten - IMMER das Tool tatsächlich aufrufen. + if (toolAny) + { + parts.Add(@$"## KRITISCH: Tool-Nutzung +JEDE Datei-Operation und JEDER Shell-Befehl MUSS über einen Tool-Aufruf erfolgen. NIEMALS eine Aktion nur beschreiben oder behaupten - IMMER das Tool tatsächlich aufrufen."); + } -## Tools + parts.Add(@$"## Tools Du hast Tools zur Verfügung (read_file, write_file, edit_file, list_files, delete_file, execute). Benutze sie um Dateien zu lesen, schreiben und bearbeiten. Der Workspace-Pfad ist: `{session.Workspace}` @@ -33,7 +38,9 @@ Wenn der User auf eine bestimmte Zeile in einer Datei verweist (z.B. `[Datei: fo if (!string.IsNullOrWhiteSpace(session.Context)) parts.Add($"## Kontext\n{session.Context}"); - parts.Add(@"## Verhalten + if (toolAny) + { + parts.Add(@"## Verhalten - Wenn du Dateien lesen, schreiben, bearbeiten, erstellen oder löschen willst: IMMER das entsprechende Tool aufrufen. NIEMALS den Inhalt nur in die Antwort schreiben. - Wenn du Shell-Befehle ausführen willst: IMMER das execute-Tool verwenden. - Behaupte NIEMALS etwas getan zu haben (Datei geschrieben, Commit gemacht, Befehl ausgeführt) ohne das entsprechende Tool tatsächlich aufgerufen zu haben. Wenn kein Tool-Aufruf stattgefunden hat, ist nichts passiert. @@ -41,6 +48,7 @@ Wenn der User auf eine bestimmte Zeile in einer Datei verweist (z.B. `[Datei: fo ## ERINNERUNG Diese Regel hat höchste Priorität und gilt für JEDE Antwort: Wenn eine Datei gelesen, geschrieben, bearbeitet, erstellt oder gelöscht werden soll, oder ein Befehl ausgeführt werden soll, MUSS der entsprechende Tool-Aufruf erfolgen. Ohne Tool-Aufruf ist NICHTS passiert. Beschreibe keine Änderungen - führe sie durch."); + } return string.Join("\n\n", parts); }