返回 DeepSeek-Reasonix
reasoning_language.go
根目录 / internal / cli / reasoning_language.go
1 package cli
2
3 import (
4 "fmt"
5 "strings"
6
7 "reasonix/internal/config"
8 )
9
10 func (m *chatTUI) runReasoningLanguageCommand(input string) {
11 args := tokenizeArgs(input)
12 if len(args) < 2 {
13 cfg, err := config.Load()
14 if err != nil {
15 m.notice("reasoning-language: " + err.Error())
16 return
17 }
18 m.notice(fmt.Sprintf("reasoning-language: %s (usage: /reasoning-language auto|zh|en)", cliReasoningLanguageMode(cfg.ReasoningLanguage())))
19 return
20 }
21 if len(args) > 2 {
22 m.notice("usage: /reasoning-language auto|zh|en")
23 return
24 }
25 if m.ctrl != nil && m.ctrl.Running() {
26 m.notice("finish or cancel the current turn before changing reasoning-language")
27 return
28 }
29 mode, err := parseCLIReasoningLanguage(args[1])
30 if err != nil {
31 m.notice("reasoning-language: " + err.Error())
32 return
33 }
34
35 path := config.UserConfigPath()
36 if path == "" {
37 m.notice("reasoning-language: cannot resolve config path")
38 return
39 }
40 mode, err = func() (string, error) {
41 unlock := config.LockUserConfigEdits()
42 defer unlock()
43 edit := config.LoadForEdit(path)
44 if err := edit.SetReasoningLanguage(mode); err != nil {
45 return "", err
46 }
47 if err := edit.SaveTo(path); err != nil {
48 return "", err
49 }
50 return edit.ReasoningLanguage(), nil
51 }()
52 if err != nil {
53 m.notice("reasoning-language: " + err.Error())
54 return
55 }
56
57 if m.ctrl != nil {
58 m.ctrl.SetReasoningLanguage(mode)
59 }
60 m.notice(fmt.Sprintf("reasoning-language set to %s", mode))
61 }
62
63 func parseCLIReasoningLanguage(mode string) (string, error) {
64 switch strings.ToLower(strings.TrimSpace(mode)) {
65 case "auto":
66 return "auto", nil
67 case "zh":
68 return "zh", nil
69 case "en":
70 return "en", nil
71 default:
72 return "", fmt.Errorf("reasoning_language %q: must be auto|zh|en", mode)
73 }
74 }
75
76 func cliReasoningLanguageMode(mode string) string {
77 switch strings.ToLower(strings.TrimSpace(mode)) {
78 case "zh":
79 return "zh"
80 case "en":
81 return "en"
82 default:
83 return "auto"
84 }
85 }
86
86 lines GO