arbeitsverzeichnis hinzugefügt
This commit is contained in:
42
main.go
42
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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user