diff --git a/Endpoints/SessionEndpoint.cs b/Endpoints/SessionEndpoint.cs index 9b469c8..a6131de 100644 --- a/Endpoints/SessionEndpoint.cs +++ b/Endpoints/SessionEndpoint.cs @@ -177,7 +177,8 @@ public static class SessionEndpoint var resolvedWorkspace = WorkspaceHelper.ResolveWorkspace(session, user); if (string.IsNullOrEmpty(resolvedWorkspace) && agentSkills.Any()) resolvedWorkspace = "/tmp"; - var systemPrompt = SystemPromptBuilder.Build(agent, session, markedMessages, memoryService, agentMemoryDir, agentSkills, skillService, userPersona: user?.GetEffectivePersona(), resolvedWorkspace: resolvedWorkspace); + var planMode = ctx.Request.Query.ContainsKey("planMode") && ctx.Request.Query["planMode"] == "true"; + var systemPrompt = SystemPromptBuilder.Build(agent, session, markedMessages, memoryService, agentMemoryDir, agentSkills, skillService, userPersona: user?.GetEffectivePersona(), resolvedWorkspace: resolvedWorkspace, planMode: planMode); ctx.Response.ContentType = "text/plain; charset=utf-8"; await ctx.Response.WriteAsync(systemPrompt); diff --git a/Services/SystemPromptBuilder.cs b/Services/SystemPromptBuilder.cs index 5092733..a0bdd24 100644 --- a/Services/SystemPromptBuilder.cs +++ b/Services/SystemPromptBuilder.cs @@ -68,7 +68,7 @@ JEDE Datei-Operation und JEDER Shell-Befehl MUSS über einen Tool-Aufruf erfolge Icon = "fa-wrench", Label = "Session · Workspace (Plan-Modus)", Content = @$"## Tools -Du hast Read-only-Tools zur Verfügung (read_file, list_files, glob, grep). Benutze sie um den Code zu analysieren und zu verstehen. +Du hast Read-only-Tools zur Verfügung (read_file, list_files, glob, grep, execute). Benutze sie um den Code zu analysieren und zu verstehen. Der Workspace-Pfad ist: `{effectiveWorkspace}` Alle Dateipfade in Tool-Aufrufen müssen relativ zu diesem Workspace sein oder absolute Pfade verwenden, die mit diesem Pfad beginnen." diff --git a/Services/ToolService.cs b/Services/ToolService.cs index 6b17029..430e981 100644 --- a/Services/ToolService.cs +++ b/Services/ToolService.cs @@ -23,7 +23,7 @@ public class ToolService /// private static readonly HashSet ReadOnlyToolNames = new HashSet { - "read_file", "list_files", "glob", "grep", "todo_write", + "read_file", "list_files", "glob", "grep", "execute", "todo_write", "memory_read", "memory_write", "memory_list", AskUserChoiceToolName };