Skip to content

Commit 34eec66

Browse files
committed
feat: Default use buildin LLM
--story=1
1 parent 24bbe25 commit 34eec66

9 files changed

Lines changed: 42 additions & 50 deletions

File tree

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ jobs:
112112
with:
113113
version: latest
114114
args: --timeout=5m
115+
skip-config-verify: true
115116

116117
build:
117118
name: Build

cmd/aicli/init.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,55 +92,46 @@ func checkExistingConfig(reader *bufio.Reader, configPath string) error {
9292

9393
func configureProvider(reader *bufio.Reader, cfg *config.Config) error {
9494
fmt.Println(i18n.T(i18n.PromptSelectProvider) + ":")
95-
fmt.Println(i18n.T(i18n.InitProviderBuiltin))
9695
fmt.Println(i18n.T(i18n.InitProviderOpenAI))
9796
fmt.Println(i18n.T(i18n.InitProviderAnthropic))
9897
fmt.Println(i18n.T(i18n.InitProviderLocal))
9998
fmt.Println(i18n.T(i18n.InitProviderDeepSeek))
10099
fmt.Println(i18n.T(i18n.InitProviderOther))
101100

102-
providerChoice := prompt(reader, i18n.T(i18n.PromptInputChoice)+" [1-6]", "1")
101+
providerChoice := prompt(reader, i18n.T(i18n.PromptInputChoice)+" [1-5]", "1")
103102

104103
switch providerChoice {
105104
case "1":
106-
cfg.LLM.Provider = providerBuiltin
107-
cfg.LLM.Model = "builtin-trial"
108-
cfg.LLM.APIBase = ""
109-
cfg.LLM.APIKey = ""
110-
case "2":
111105
cfg.LLM.Provider = providerOpenAI
112106
cfg.LLM.Model = "gpt-4"
113107
cfg.LLM.APIBase = apiBaseOpenAI
114-
case "3":
108+
case "2":
115109
cfg.LLM.Provider = providerAnthropic
116110
cfg.LLM.Model = "claude-3-sonnet-20240229"
117111
cfg.LLM.APIBase = "https://api.anthropic.com/v1"
118-
case "4":
112+
case "3":
119113
cfg.LLM.Provider = providerLocal
120114
cfg.LLM.Model = "llama2"
121115
cfg.LLM.APIBase = "http://localhost:11434"
122-
case "5":
116+
case "4":
123117
cfg.LLM.Provider = providerOpenAI // DeepSeek 兼容 OpenAI
124118
cfg.LLM.Model = "deepseek-chat"
125119
cfg.LLM.APIBase = "https://api.deepseek.com/v1"
126-
case "6":
120+
case "5":
127121
cfg.LLM.Provider = providerOpenAI
128122
cfg.LLM.Model = "gpt-3.5-turbo"
129123
cfg.LLM.APIBase = apiBaseOpenAI
130124
default:
131125
fmt.Println(i18n.T(i18n.MsgDefaultUseOpenAI))
132126
cfg.LLM.Provider = providerOpenAI
127+
cfg.LLM.Model = "gpt-4"
128+
cfg.LLM.APIBase = apiBaseOpenAI
133129
}
134130

135131
return nil
136132
}
137133

138134
func configureAPI(reader *bufio.Reader, cfg *config.Config) error {
139-
// 内置 provider 不需要配置 API
140-
if cfg.LLM.Provider == providerBuiltin {
141-
return nil
142-
}
143-
144135
if cfg.LLM.Provider != providerLocal {
145136
cfg.LLM.APIKey = prompt(reader, i18n.T(i18n.PromptEnterAPIKey), "")
146137
if cfg.LLM.APIKey == "" {

cmd/aicli/main.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,6 @@ func loadConfig() (*config.Config, error) {
174174

175175
// 如果配置文件不存在,使用默认配置
176176
if _, err := os.Stat(configPath); os.IsNotExist(err) {
177-
// 提示用户初始化 (这里还未初始化i18n,使用双语提示)
178-
fmt.Fprintf(os.Stderr, "Note / 提示: Configuration file / 配置文件 %s does not exist / 不存在。\n", configPath)
179-
fmt.Fprintf(os.Stderr, "You can run / 您可以运行 'aicli init' for quick setup / 来快速设置配置。\n\n")
180-
181177
if flags.Verbose {
182178
fmt.Fprintf(os.Stderr, "Using default configuration / 使用默认配置\n")
183179
}

internal/app/app.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ func (a *App) Run(input string, stdin string, flags *Flags) (string, error) {
9999
// 默认显示翻译后的命令到 stderr(除非开启了 quiet 模式)
100100
if !flags.Quiet && !flags.Verbose {
101101
fmt.Fprintf(os.Stderr, "%s\n", i18n.T(i18n.MsgTranslatedCommand, command))
102+
// 如果使用的是内置试用 API,显示提示信息
103+
if a.config.LLM.Provider == "builtin" {
104+
fmt.Fprintf(os.Stderr, "%s\n", i18n.T(i18n.MsgTrialAPINotice))
105+
}
102106
}
103107

104108
// 安全检查

pkg/config/config_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ func TestDefault(t *testing.T) {
1818
t.Errorf("期望版本为 1.0, 实际为 %s", cfg.Version)
1919
}
2020

21-
if cfg.LLM.Provider != providerOpenAI {
22-
t.Errorf("期望默认 LLM 提供商为 openai, 实际为 %s", cfg.LLM.Provider)
21+
if cfg.LLM.Provider != providerBuiltin {
22+
t.Errorf("期望默认 LLM 提供商为 builtin, 实际为 %s", cfg.LLM.Provider)
2323
}
2424

25-
if cfg.LLM.Timeout != 10 {
26-
t.Errorf("期望 LLM 超时为 10, 实际为 %d", cfg.LLM.Timeout)
25+
if cfg.LLM.Timeout != 30 {
26+
t.Errorf("期望 LLM 超时为 30, 实际为 %d", cfg.LLM.Timeout)
2727
}
2828

2929
if cfg.Execution.Timeout != 30 {
@@ -46,8 +46,8 @@ func TestLoadNonExistentFile(t *testing.T) {
4646
t.Fatalf("加载不存在的文件应返回默认配置,但返回错误: %v", err)
4747
}
4848

49-
if cfg.LLM.Provider != providerOpenAI {
50-
t.Errorf("期望默认提供商为 openai, 实际为 %s", cfg.LLM.Provider)
49+
if cfg.LLM.Provider != providerBuiltin {
50+
t.Errorf("期望默认提供商为 builtin, 实际为 %s", cfg.LLM.Provider)
5151
}
5252
}
5353

@@ -312,8 +312,8 @@ func TestApplyDefaults(t *testing.T) {
312312
cfg.applyDefaults()
313313

314314
// 应该应用默认值
315-
if cfg.LLM.Timeout != 10 {
316-
t.Errorf("期望默认超时为 10, 实际为 %d", cfg.LLM.Timeout)
315+
if cfg.LLM.Timeout != 30 {
316+
t.Errorf("期望默认超时为 30, 实际为 %d", cfg.LLM.Timeout)
317317
}
318318

319319
if cfg.LLM.MaxTokens != 500 {

pkg/config/default.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ func Default() *Config {
55
return &Config{
66
Version: "1.0",
77
LLM: LLMConfig{
8-
Provider: "openai",
8+
Provider: "builtin", // 使用内置试用 API
99
APIKey: "",
10-
APIBase: "https://api.openai.com/v1",
11-
Model: "gpt-4",
12-
Timeout: 10,
10+
APIBase: "",
11+
Model: "",
12+
Timeout: 30, // 增加超时时间以适应网络延迟
1313
MaxTokens: 500,
1414
},
1515
Execution: ExecutionConfig{

pkg/i18n/keys.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const (
5656
MsgDefaultUseOpenAI = "msg.default_use_openai"
5757
MsgDefault = "msg.default"
5858
MsgTranslatedCommand = "msg.translated_command"
59+
MsgTrialAPINotice = "msg.trial_api_notice" // 试用 API 提示
5960
)
6061

6162
// 警告信息键
@@ -167,10 +168,9 @@ const (
167168

168169
// 配置向导选项键
169170
const (
170-
InitProviderBuiltin = "init.provider_builtin"
171-
InitProviderOpenAI = "init.provider_openai"
172-
InitProviderAnthropic = "init.provider_anthropic"
173-
InitProviderLocal = "init.provider_local"
174-
InitProviderDeepSeek = "init.provider_deepseek"
175-
InitProviderOther = "init.provider_other"
171+
InitProviderOpenAI = "init.provider_openai"
172+
InitProviderAnthropic = "init.provider_anthropic"
173+
InitProviderLocal = "init.provider_local"
174+
InitProviderDeepSeek = "init.provider_deepseek"
175+
InitProviderOther = "init.provider_other"
176176
)

pkg/i18n/messages_en.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ var messagesEn = map[string]string{
5151
MsgDefaultUseOpenAI: "Invalid choice, defaulting to OpenAI",
5252
MsgDefault: "default",
5353
MsgTranslatedCommand: "💡 Executing: %s",
54+
MsgTrialAPINotice: "⚠️ Using trial API. Please run 'aicli init' to configure your own LLM API.",
5455

5556
// Warnings
5657
WarnDangerousCommand: "Potentially dangerous command detected!",
@@ -147,10 +148,9 @@ Examples:
147148
HelpFlag: "help for aicli",
148149

149150
// Configuration wizard options
150-
InitProviderBuiltin: "1. Built-in (Trial) - No configuration needed, ready to use",
151-
InitProviderOpenAI: "2. OpenAI (GPT-4, GPT-3.5)",
152-
InitProviderAnthropic: "3. Anthropic (Claude)",
153-
InitProviderLocal: "4. Local (Ollama, LocalAI)",
154-
InitProviderDeepSeek: "5. DeepSeek",
155-
InitProviderOther: "6. Other (OpenAI-compatible API)",
151+
InitProviderOpenAI: "1. OpenAI (GPT-4, GPT-3.5)",
152+
InitProviderAnthropic: "2. Anthropic (Claude)",
153+
InitProviderLocal: "3. Local (Ollama, LocalAI)",
154+
InitProviderDeepSeek: "4. DeepSeek",
155+
InitProviderOther: "5. Other (OpenAI-compatible API)",
156156
}

pkg/i18n/messages_zh.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ var messagesZh = map[string]string{
5151
MsgDefaultUseOpenAI: "无效的选择,默认使用 OpenAI",
5252
MsgDefault: "默认",
5353
MsgTranslatedCommand: "💡 执行命令: %s",
54+
MsgTrialAPINotice: "⚠️ 当前使用的是内嵌(试用)API,请运行 'aicli init' 来配置您自己的 LLM API。",
5455

5556
// 警告信息
5657
WarnDangerousCommand: "检测到潜在危险命令!",
@@ -147,10 +148,9 @@ var messagesZh = map[string]string{
147148
HelpFlag: "显示帮助信息",
148149

149150
// 配置向导选项
150-
InitProviderBuiltin: "1. 内置(试用)- 无需配置,开箱即用",
151-
InitProviderOpenAI: "2. OpenAI (GPT-4, GPT-3.5)",
152-
InitProviderAnthropic: "3. Anthropic (Claude)",
153-
InitProviderLocal: "4. Local (Ollama, LocalAI)",
154-
InitProviderDeepSeek: "5. DeepSeek (深度求索)",
155-
InitProviderOther: "6. Other (兼容 OpenAI 协议)",
151+
InitProviderOpenAI: "1. OpenAI (GPT-4, GPT-3.5)",
152+
InitProviderAnthropic: "2. Anthropic (Claude)",
153+
InitProviderLocal: "3. Local (Ollama, LocalAI)",
154+
InitProviderDeepSeek: "4. DeepSeek (深度求索)",
155+
InitProviderOther: "5. Other (兼容 OpenAI 协议)",
156156
}

0 commit comments

Comments
 (0)