arbeitsverzeichnis hinzugefügt

This commit is contained in:
Christoph K.
2026-02-25 13:19:25 +01:00
parent e56df78362
commit 63209ff3ba

42
main.go
View File

@@ -7,6 +7,7 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"path/filepath"
"strconv" "strconv"
"strings" "strings"
@@ -18,6 +19,13 @@ import (
const baseURL = "http://127.0.0.1:12434/v1" 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 { func selectModel(client *openai.Client) string {
modelsPage, err := client.Models.List(context.Background()) modelsPage, err := client.Models.List(context.Background())
if err != nil { if err != nil {
@@ -53,25 +61,43 @@ func selectModel(client *openai.Client) string {
} }
func main() { 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 // Flags definieren
verbose := flag.Bool("verbose", false, "Zeigt alle Chat-Nachrichten vollständig an") 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("workdir", "workspace", "Arbeitsverzeichnis (relativ zur Binary oder absolut)")
workDir := flag.String("dir", ".", "Arbeitsverzeichnis") prdFile := flag.String("prd", "PRD.md", "PRD-Datei (relativ zum Arbeitsverzeichnis oder absolut)")
flag.Parse() 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( client := openai.NewClient(
oaioption.WithBaseURL(baseURL), oaioption.WithBaseURL(baseURL),
oaioption.WithAPIKey("ollama"), oaioption.WithAPIKey("ollama"),
) )
fmt.Println("🤖 LLM Agent")
if *verbose {
fmt.Println("🔍 Verbose-Modus aktiv")
}
model := selectModel(&client) model := selectModel(&client)
loop := agent.NewAgentLoop(model, *workDir, *prdFile, *verbose) loop := agent.NewAgentLoop(model, resolvedWorkDir, resolvedPRD, *verbose)
if err := loop.Run(); err != nil { if err := loop.Run(); err != nil {
log.Fatalf("Agent fehlgeschlagen: %v", err) log.Fatalf("Agent fehlgeschlagen: %v", err)
} }