feat: add config path option for agent command

This commit is contained in:
Zhaoyikaiii 2026-02-23 21:52:23 +08:00
parent bc3d77d2dd
commit 21b8d96a52

View file

@ -16,6 +16,7 @@ import (
"github.com/sipeed/picoclaw/pkg/agent" "github.com/sipeed/picoclaw/pkg/agent"
"github.com/sipeed/picoclaw/pkg/bus" "github.com/sipeed/picoclaw/pkg/bus"
"github.com/sipeed/picoclaw/pkg/config"
"github.com/sipeed/picoclaw/pkg/logger" "github.com/sipeed/picoclaw/pkg/logger"
"github.com/sipeed/picoclaw/pkg/providers" "github.com/sipeed/picoclaw/pkg/providers"
) )
@ -24,6 +25,7 @@ func agentCmd() {
message := "" message := ""
sessionKey := "cli:default" sessionKey := "cli:default"
modelOverride := "" modelOverride := ""
configPath := ""
args := os.Args[2:] args := os.Args[2:]
for i := 0; i < len(args); i++ { for i := 0; i < len(args); i++ {
@ -46,31 +48,42 @@ func agentCmd() {
modelOverride = args[i+1] modelOverride = args[i+1]
i++ i++
} }
case "-c", "--config":
if i+1 < len(args) {
configPath = args[i+1]
i++
}
} }
} }
cfg, err := loadConfig() var appCfg *config.Config
var err error
if configPath != "" {
appCfg, err = config.LoadConfig(configPath)
} else {
appCfg, err = loadConfig()
}
if err != nil { if err != nil {
fmt.Printf("Error loading config: %v\n", err) fmt.Printf("Error loading config: %v\n", err)
os.Exit(1) os.Exit(1)
} }
if modelOverride != "" { if modelOverride != "" {
cfg.Agents.Defaults.Model = modelOverride appCfg.Agents.Defaults.Model = modelOverride
} }
provider, modelID, err := providers.CreateProvider(cfg) provider, modelID, err := providers.CreateProvider(appCfg)
if err != nil { if err != nil {
fmt.Printf("Error creating provider: %v\n", err) fmt.Printf("Error creating provider: %v\n", err)
os.Exit(1) os.Exit(1)
} }
// Use the resolved model ID from provider creation // Use the resolved model ID from provider creation
if modelID != "" { if modelID != "" {
cfg.Agents.Defaults.Model = modelID appCfg.Agents.Defaults.Model = modelID
} }
msgBus := bus.NewMessageBus() msgBus := bus.NewMessageBus()
agentLoop := agent.NewAgentLoop(cfg, msgBus, provider) agentLoop := agent.NewAgentLoop(appCfg, msgBus, provider)
// Print agent startup info (only for interactive mode) // Print agent startup info (only for interactive mode)
startupInfo := agentLoop.GetStartupInfo() startupInfo := agentLoop.GetStartupInfo()