繁體中文

問題修復

修復 CPU 滿載過熱問題,程式啟動速度大幅提升

電腦不會再被兩個效能問題拖慢了。首先,如果你曾經用過一些系統價目表上沒有的冷門 AI 模型,以前系統在每次更新數字時,都會為了找它的價格,把整張上千筆的價目表從頭到尾翻過一遍,而且找不到還不會記取教訓,下一秒又重新翻一次,這會把你的處理器(CPU)操到滿載;現在系統學會了,如果找不到,它就會把這個名字記在黑名單,下次直接跳過。其次,以前每次重新開啟應用程式,系統都會把你全部的 Claude 對話歷史重新讀取一遍(歷史越長要等越久,有時要等 5 秒以上),因為它把這份記憶放在會揮發的記憶體裡;現在它懂得把讀過的結果存進硬碟裡了。就像是結帳店員以前遇到刷不出條碼的商品,每次都要把整本兩千頁的商品目錄重翻一遍,現在他終於懂得把沒建檔的品項貼在收銀機旁直接略過;而且以前他每天上班都要把你過去十年的消費明細重看一次才能開始工作,現在他只看今天的帳本就好了。

English

BUGFIX

Fixed full CPU core lockups and slow startup times caused by excessive scanning

Your computer won't be bogged down by two performance bugs anymore. First, if you had history containing obscure AI models missing from the system's pricing sheet, the app would wildly scan the entire thousand-item price list from top to bottom on every single refresh trying to find them. Worse, it never remembered failing, so it repeated the scan immediately after, pinning your processor (CPU) at 100%; the system now smartly memoizes "not found" results and skips them next time. Second, every time you restarted the app (or when it auto-launched at login), it parsed your entire Claude chat history completely from scratch because its cache only lived in temporary memory, which could take over 5 seconds on older installs. It now safely persists that parsed cache to your disk. It's like a checkout clerk who used to flip through a massive 2,000-page catalog every single time they encountered an unbarcoded item; now they simply tape a "not found" note to the register and skip it. Plus, they no longer need to re-read your entire 10-year purchase history from page one every morning just to clock in.

原始 CHANGELOG

Original changelog修復 CPU 滿載過熱問題,程式啟動速度大幅提升
**Menu bar could peg a full CPU core after launch on machines with unpriced models in their history**: `pricing.py`'s model-to-price lookup ran a full linear scan of the entire LiteLLM pricing table for every history entry whose model wasn't in it, with no caching of the "not found" result — so every refresh re-scanned the same unresolvable models (e.g. sessions logged by a non-Anthropic/OpenAI backend) from scratch, thousands of times per refresh on machines with a lot of that history. The lookup is now memoized per pricing-table generation, so a given unresolvable model is only scanned once.
**Claude Code history reparsed from scratch on every relaunch**: `history_loader.py`'s per-file JSONL parse cache only lived in memory, unlike the matching Codex-side cache added in 0.24.0, so every app restart — including auto-launch at login — paid the full history reparse again (measured 5+ seconds on a long-lived install). It now persists to disk the same way the Codex loader already does.