diff --git a/agent/utils/terminal/ai/validate.go b/agent/utils/terminal/ai/validate.go index 44a702215..4fe3bef0b 100644 --- a/agent/utils/terminal/ai/validate.go +++ b/agent/utils/terminal/ai/validate.go @@ -3,31 +3,19 @@ package ai import ( "context" "fmt" - "strings" + "runtime" "time" ) const validateTimeout = 15 * time.Second func ValidateTerminalAccount(accountID uint) error { - if accountID == 0 { - return fmt.Errorf("ai account is required") - } - cfg, _, err := ResolveGeneratorConfig(accountID) if err != nil { return err } - client, err := NewClient(ClientConfig{ - Provider: cfg.Provider, - BaseURL: cfg.BaseURL, - APIKey: cfg.APIKey, - Model: cfg.Model, - APIType: cfg.APIType, - MaxTokens: cfg.MaxTokens, - Timeout: validateTimeout, - }) + generator, err := NewCommandGeneratorFromConfig(cfg) if err != nil { return err } @@ -35,17 +23,15 @@ func ValidateTerminalAccount(accountID uint) error { ctx, cancel := context.WithTimeout(context.Background(), validateTimeout) defer cancel() - resp, err := client.ChatCompletion(ctx, ChatCompletionRequest{ - Messages: []ChatMessage{ - {Role: "system", Content: "You are a shell command generator. Return exactly one shell command."}, - {Role: "user", Content: "Print current directory."}, - }, - MaxTokens: 16, + resp, err := generator.Generate(ctx, CommandGenerateRequest{ + Input: "Print current directory.", + Shell: "bash", + OS: runtime.GOOS, }) if err != nil { return err } - if resp == nil || strings.TrimSpace(resp.Content) == "" { + if resp == nil || resp.Command == "" { return fmt.Errorf("terminal ai account returned empty response") } return nil diff --git a/frontend/src/views/terminal/setting/ai/index.vue b/frontend/src/views/terminal/setting/ai/index.vue index c305328ac..bd0ad0be2 100644 --- a/frontend/src/views/terminal/setting/ai/index.vue +++ b/frontend/src/views/terminal/setting/ai/index.vue @@ -10,65 +10,67 @@ - - - - - - - -