2025-04-15 22:24:19 +08:00

69 lines
1.4 KiB
Go

package config
import (
"encoding/json"
"os"
"path/filepath"
)
// Config holds application configuration
type Config struct {
Model string `json:"model"`
SystemPrompt string `json:"system_prompt"`
History []string `json:"history"`
}
// LoadConfig loads the configuration from disk
func LoadConfig() (*Config, error) {
homeDir, err := os.UserHomeDir()
if err != nil {
return nil, err
}
configDir := filepath.Join(homeDir, ".config", "lazykimi")
if err := os.MkdirAll(configDir, 0755); err != nil {
return nil, err
}
configFile := filepath.Join(configDir, "config.json")
if _, err := os.Stat(configFile); os.IsNotExist(err) {
// Create default config
config := &Config{
Model: "kimi-k1.5-preview-chat",
SystemPrompt: "You are a helpful assistant.",
History: []string{},
}
return config, config.Save()
}
data, err := os.ReadFile(configFile)
if err != nil {
return nil, err
}
var config Config
if err := json.Unmarshal(data, &config); err != nil {
return nil, err
}
return &config, nil
}
// Save persists configuration to disk
func (c *Config) Save() error {
homeDir, err := os.UserHomeDir()
if err != nil {
return err
}
configDir := filepath.Join(homeDir, ".config", "lazykimi")
configFile := filepath.Join(configDir, "config.json")
data, err := json.MarshalIndent(c, "", " ")
if err != nil {
return err
}
return os.WriteFile(configFile, data, 0644)
}