From 63209ff3ba640d35f3edc058dca53ca5e3ddde28 Mon Sep 17 00:00:00 2001 From: "Christoph K." Date: Wed, 25 Feb 2026 13:19:25 +0100 Subject: [PATCH] =?UTF-8?q?arbeitsverzeichnis=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index 3686a73..1c1fed9 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "fmt" "log" "os" + "path/filepath" "strconv" "strings" @@ -18,6 +19,13 @@ import ( const baseURL = "http://127.0.0.1:12434/v1" +func resolvePath(base, rel string) string { + if filepath.IsAbs(rel) { + return rel // absoluter Pfad → direkt nutzen + } + return filepath.Join(base, rel) +} + func selectModel(client *openai.Client) string { modelsPage, err := client.Models.List(context.Background()) if err != nil { @@ -53,25 +61,43 @@ func selectModel(client *openai.Client) string { } func main() { + // Verzeichnis der ausführbaren Binary ermitteln + execPath, err := os.Executable() + if err != nil { + log.Fatalf("Konnte Executable-Pfad nicht ermitteln: %v", err) + } + execDir := filepath.Dir(execPath) + // Flags definieren verbose := flag.Bool("verbose", false, "Zeigt alle Chat-Nachrichten vollständig an") - prdFile := flag.String("prd", "PRD.md", "Pfad zur PRD-Datei") - workDir := flag.String("dir", ".", "Arbeitsverzeichnis") + workDir := flag.String("workdir", "workspace", "Arbeitsverzeichnis (relativ zur Binary oder absolut)") + prdFile := flag.String("prd", "PRD.md", "PRD-Datei (relativ zum Arbeitsverzeichnis oder absolut)") flag.Parse() + // Pfade auflösen + resolvedWorkDir := resolvePath(execDir, *workDir) + resolvedPRD := resolvePath(resolvedWorkDir, *prdFile) + + // Arbeitsverzeichnis anlegen falls nicht vorhanden + if err := os.MkdirAll(resolvedWorkDir, 0755); err != nil { + log.Fatalf("Konnte Arbeitsverzeichnis nicht anlegen: %v", err) + } + + fmt.Println("🤖 LLM Agent") + fmt.Printf("📁 Arbeitsverzeichnis : %s\n", resolvedWorkDir) + fmt.Printf("📋 PRD-Datei : %s\n", resolvedPRD) + if *verbose { + fmt.Println("🔍 Verbose-Modus aktiv") + } + client := openai.NewClient( oaioption.WithBaseURL(baseURL), oaioption.WithAPIKey("ollama"), ) - fmt.Println("🤖 LLM Agent") - if *verbose { - fmt.Println("🔍 Verbose-Modus aktiv") - } - model := selectModel(&client) - loop := agent.NewAgentLoop(model, *workDir, *prdFile, *verbose) + loop := agent.NewAgentLoop(model, resolvedWorkDir, resolvedPRD, *verbose) if err := loop.Run(); err != nil { log.Fatalf("Agent fehlgeschlagen: %v", err) }