package config import ( "crypto/sha256" "encoding/hex" "encoding/json" "errors" ) var ErrConfigConflict = errors.New("CONFIG_CONFLICT: 配置已在其他窗口更改,请重新加载后再保存;当前编辑内容已保留") func cloneConfig(cfg Config) Config { cfg.ModelAdapters = append([]ModelAdapterConfig(nil), cfg.ModelAdapters...) if cfg.HomeMetrics.PersistentMode != nil { value := *cfg.HomeMetrics.PersistentMode cfg.HomeMetrics.PersistentMode = &value } return cfg } func withRevision(cfg Config) Config { cfg = cloneConfig(cfg) view := cloneConfig(cfg) view.Revision = "" view.LastAgentModelHash = "" for i := range view.ModelAdapters { view.ModelAdapters[i].ID = "" } data, _ := json.Marshal(view) sum := sha256.Sum256(data) cfg.Revision = hex.EncodeToString(sum[:]) return cfg }