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