t178:托盤標籤與錯誤訊息對齊實際行為(leo 封測者實撞)
【leo 08-04】封測者是台大資工碩士,仍搞不清楚 ⇒「一般人就完蛋了」。 他的托盤顯示「oscar · Claude」但他根本沒有 Claude, 同時錯誤說「Gemini 金鑰是空的」——**兩個訊息互相矛盾**。 ① 標籤與行為脫鉤(accountEngineLabel) direct.go 早就把 claude 正規化成 gemma(t176:地端先只支援 Gemini), 但標籤照 config 舊字串念 ⇒ 顯示 Claude、實際走 gemma。 舊值來源=雲端舊版下發後留在 config.json 的殘留(t176 擋了新寫入、沒洗舊值)。 修:claude 也顯示「· Gemini」,與萃取實際走的路一致。 ② 錯誤訊息沒說設定在哪 舊:「請在設定裡輸入 Gemini API Key」——用戶找不到入口。 新:「點托盤選單的『AI 設定…』貼上金鑰(免費申請:aistudio.google.com/apikey)」 ——錯誤訊息本身就要能當 onboarding。 測試:TestAccountEngineLabel 兩則斷言翻轉成新規格(claude→仍顯示 Gemini), 並註明「若變回 · Claude 代表標籤又和萃取實際走的路脫鉤」;兩模組全綠。 ⚠️ 未送達:daemon 執行檔要打包 v0.15.5 出貨才會到用戶手上。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -726,10 +726,13 @@ func accountEngineLabel(acc accountCfg, defaultExtractor string) string {
|
||||
extractor = strings.TrimSpace(defaultExtractor)
|
||||
}
|
||||
switch extractor {
|
||||
case "gemma":
|
||||
// t178(leo 08-04 實撞:朋友的托盤顯示「oscar · Claude」,但他根本沒有 Claude):
|
||||
// `claude` 也顯示 Gemini——因為 **direct.go 早就把 claude 正規化成 gemma**
|
||||
// (t176:地端先只支援 Gemini)。標籤若照著 config 的舊字串念,就與實際行為不符
|
||||
// ⇒ 用戶看到 Claude、卻收到「Gemini 金鑰是空的」,兩個訊息互相矛盾、更難懂。
|
||||
// 舊值來源=雲端舊版下發後留在 config.json 的殘留(t176 擋了新寫入,沒洗掉舊的)。
|
||||
case "gemma", "claude":
|
||||
return " · Gemini"
|
||||
case "claude":
|
||||
return " · Claude"
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -495,9 +495,13 @@ func TestAccountEngineLabel(t *testing.T) {
|
||||
want string
|
||||
}{
|
||||
{"帳號有gemma", accountCfg{Extractor: "gemma"}, "", " · Gemini"},
|
||||
{"帳號有claude", accountCfg{Extractor: "claude"}, "", " · Claude"},
|
||||
// t178(leo 08-04 實撞:朋友托盤顯示「oscar · Claude」但他根本沒有 Claude):
|
||||
// **claude 也顯示 Gemini**——因為 direct.go 早就把 claude 正規化成 gemma(t176)。
|
||||
// 標籤照 config 舊字串念會與實際行為不符:用戶看到 Claude、卻收到「Gemini 金鑰是空的」。
|
||||
// 這兩則若變回「· Claude」,代表標籤又和萃取實際走的路脫鉤了。
|
||||
{"帳號有claude→仍顯示 Gemini(實際就是走 gemma)", accountCfg{Extractor: "claude"}, "", " · Gemini"},
|
||||
{"帳號空退回default-gemma", accountCfg{}, "gemma", " · Gemini"},
|
||||
{"帳號空退回default-claude", accountCfg{}, "claude", " · Claude"},
|
||||
{"帳號空退回default-claude→仍顯示 Gemini", accountCfg{}, "claude", " · Gemini"},
|
||||
{"兩者皆空無標籤", accountCfg{}, "", ""},
|
||||
{"帳號層優先於default", accountCfg{Extractor: "gemma"}, "claude", " · Gemini"},
|
||||
}
|
||||
|
||||
@@ -442,7 +442,11 @@ func RunDirectOnce(cfg *DirectConfig, dryRun bool) ([]DirectResult, int, *Trigge
|
||||
if cfg.Extractor == "gemma" {
|
||||
if strings.TrimSpace(cfg.GeminiAPIKey) == "" {
|
||||
extractorOK = false
|
||||
extractorError = "金鑰是空的——請在設定裡輸入 Gemini API Key"
|
||||
// t178(leo 08-04:封測者是台大資工碩士都卡住 ⇒「一般人就完蛋了」):
|
||||
// 舊訊息「請在設定裡輸入 Gemini API Key」**沒說設定在哪** ⇒ 用戶找不到入口。
|
||||
// 錯誤訊息本身就要能當 onboarding:指名選單項、指名去哪申請。
|
||||
extractorError = "還沒設定 Gemini API Key ⇒ 點托盤選單的「AI 設定…」貼上金鑰" +
|
||||
"(免費申請:aistudio.google.com/apikey)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user