返回 DeepSeek-Reasonix
model_settings_preferences.go
根目录 / desktop / model_settings_preferences.go
1 package main
2
3 import (
4 "fmt"
5 "reasonix/internal/agent"
6 "reasonix/internal/config"
7 "strings"
8 )
9
10 func setDefaultModelConfig(c *config.Config, ref string) error {
11
12 resolved, err := selectableDesktopModelRef(c, ref)
13 if err != nil {
14 return err
15 }
16 c.DefaultModel = resolved
17 return nil
18 }
19
20 func setPlannerModelConfig(c *config.Config, ref string) error {
21
22 if ref != "" {
23 resolved, err := selectableDesktopModelRef(c, ref)
24 if err != nil {
25 return err
26 }
27 ref = resolved
28 }
29 c.Agent.PlannerModel = ref
30 return nil
31 }
32
33 func setVisionModelConfig(c *config.Config, ref string) error {
34
35 ref = strings.TrimSpace(ref)
36 if ref == "" || strings.EqualFold(ref, "auto") {
37 c.Agent.VisionModel = strings.ToLower(ref)
38 return nil
39 }
40 resolved, err := selectableDesktopVisionModelRef(c, ref)
41 if err != nil {
42 return err
43 }
44 c.Agent.VisionModel = resolved
45 return nil
46 }
47
48 func setSubagentModelConfig(c *config.Config, ref string) error {
49
50 ref = strings.TrimSpace(ref)
51 if ref != "" {
52 resolved, err := selectableDesktopModelRef(c, ref)
53 if err != nil {
54 return err
55 }
56 ref = resolved
57 }
58 c.Agent.SubagentModel = ref
59 return nil
60 }
61
62 func setSubagentEffortConfig(c *config.Config, level string) error {
63
64 level = strings.TrimSpace(level)
65 if level == "" || level == "auto" {
66 c.Agent.SubagentEffort = ""
67 return nil
68 }
69 model := strings.TrimSpace(c.Agent.SubagentModel)
70 if model == "" {
71 model = c.DefaultModel
72 }
73 entry, ok := c.ResolveModel(model)
74 if !ok {
75 return fmt.Errorf("unknown subagent model %q", model)
76 }
77 effort, err := config.NormalizeEffort(entry, level)
78 if err != nil {
79 return err
80 }
81 c.Agent.SubagentEffort = effort
82 return nil
83 }
84
85 func setSubagentProfileModelConfig(c *config.Config, name, ref string) error {
86 name = strings.TrimSpace(name)
87 if name == "" {
88 return fmt.Errorf("name is required")
89 }
90
91 ref = strings.TrimSpace(ref)
92 if ref == "" {
93 deleteSubagentOverrideAliases(c.Agent.SubagentModels, name)
94 return nil
95 }
96 resolved, err := selectableDesktopModelRef(c, ref)
97 if err != nil {
98 return err
99 }
100 if c.Agent.SubagentModels == nil {
101 c.Agent.SubagentModels = map[string]string{}
102 }
103 deleteSubagentOverrideAliases(c.Agent.SubagentModels, name)
104 c.Agent.SubagentModels[name] = resolved
105 return nil
106 }
107
108 func setSubagentProfileEffortConfig(c *config.Config, name, level string) error {
109 name = strings.TrimSpace(name)
110 if name == "" {
111 return fmt.Errorf("name is required")
112 }
113
114 level = strings.TrimSpace(level)
115 if level == "" || level == "auto" {
116 deleteSubagentOverrideAliases(c.Agent.SubagentEfforts, name)
117 return nil
118 }
119 // Validate against the model the override will actually apply to:
120 // the alias-aware per-name model override first, then the global
121 // subagent default, then the session default.
122 model := subagentOverrideFor(c.Agent.SubagentModels, name)
123 if model == "" {
124 model = strings.TrimSpace(c.Agent.SubagentModel)
125 }
126 if model == "" {
127 model = c.DefaultModel
128 }
129 entry, ok := c.ResolveModel(model)
130 if !ok {
131 return fmt.Errorf("unknown subagent model %q", model)
132 }
133 effort, err := config.NormalizeEffort(entry, level)
134 if err != nil {
135 return err
136 }
137 if c.Agent.SubagentEfforts == nil {
138 c.Agent.SubagentEfforts = map[string]string{}
139 }
140 deleteSubagentOverrideAliases(c.Agent.SubagentEfforts, name)
141 c.Agent.SubagentEfforts[name] = effort
142 return nil
143 }
144
145 func setMaxSubagentDepthConfig(c *config.Config, depth int) error {
146
147 c.Agent.MaxSubagentDepth = desktopMaxSubagentDepth(depth)
148 return nil
149 }
150
151 func setMaxSubagentConcurrencyConfig(c *config.Config, n int) error {
152
153 total, writers := agent.NormalizeConcurrencyLimits(n, c.Agent.MaxParallelWriters)
154 c.Agent.MaxSubagentConcurrency = total
155 c.Agent.MaxParallelWriters = writers
156 return nil
157 }
158
159 func setMaxParallelWritersConfig(c *config.Config, n int) error {
160
161 total, writers := agent.NormalizeConcurrencyLimits(c.Agent.MaxSubagentConcurrency, n)
162 c.Agent.MaxSubagentConcurrency = total
163 c.Agent.MaxParallelWriters = writers
164 return nil
165 }
166
166 lines GO