From 1a3e9749418e81d825246326b8e1312ba33db4b4 Mon Sep 17 00:00:00 2001 From: richblack Date: Tue, 4 Aug 2026 11:33:13 +0800 Subject: [PATCH] =?UTF-8?q?t178=EF=BC=9A=E6=89=98=E7=9B=A4=E6=A8=99?= =?UTF-8?q?=E7=B1=A4=E8=88=87=E9=8C=AF=E8=AA=A4=E8=A8=8A=E6=81=AF=E5=B0=8D?= =?UTF-8?q?=E9=BD=8A=E5=AF=A6=E9=9A=9B=E8=A1=8C=E7=82=BA=EF=BC=88leo=20?= =?UTF-8?q?=E5=B0=81=E6=B8=AC=E8=80=85=E5=AF=A6=E6=92=9E=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【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) --- cmd/arcrun-tray/main.go | 9 ++++++--- cmd/arcrun-tray/main_test.go | 8 ++++++-- direct.go | 6 +++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/cmd/arcrun-tray/main.go b/cmd/arcrun-tray/main.go index 8b9497c..a0f1678 100644 --- a/cmd/arcrun-tray/main.go +++ b/cmd/arcrun-tray/main.go @@ -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 "" } diff --git a/cmd/arcrun-tray/main_test.go b/cmd/arcrun-tray/main_test.go index 49c5969..faa5af7 100644 --- a/cmd/arcrun-tray/main_test.go +++ b/cmd/arcrun-tray/main_test.go @@ -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"}, } diff --git a/direct.go b/direct.go index 9e900d7..4030c13 100644 --- a/direct.go +++ b/direct.go @@ -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)" } }