Problem
Original text:
「還有一個issue 是 [截圖] 這邊不知道為什麼會以為是200k,剛開始應賅就要先蒐集詢問一次吧」
— Source: user, live session 2026-08-03(附截圖,見下方「Screenshot」)
狀態列的 context 計量顯示 97k/200k,但同一個 session 的 Claude Code header 寫的是
Opus 5 (1M context)。context max 被當成 200k,實際上是 1M。使用者的提案:session 一開始就先主動取一次真正的 context window,而不是靠推論。
Screenshot(無法上傳原檔,逐字描述)
截圖是 Logos 內的 Claude Code session:header 顯示
Claude Code v2.1… / Opus 5 (1M conte… / ~/Developer/logo…,
最底下的狀態列顯示訊號圖示 + 綠色進度條 + 97k/200k + 沙漏 5h 6…。
(此 issue 由 CLI session 建立,貼上的圖片沒有可讀的本機路徑可上傳到 attachments release;如需原圖請重新提供檔案。)
Type
bug
Expected
Context 計量的分母等於該 session 真正的 context window。此例應為 97k/1M。
Actual
分母固定落在 200k,直到用量真的超過 200k 才會自我修正。
觀察(不是 diagnosis) —— 現有三個訊號在這個 session 全部失效:
ClaudeUsageReader.baseWindow(forModel:)(Sources/Logos/Services/ClaudeUsageReader.swift:46-49)
對所有 family 回傳 200_000(註解寫「opus / sonnet / haiku / fable all ship a 200k
base window today; the 1M is a beta on top」)。
- 訊號 (2):
selectedModel(inConfigDir:) 讀 <configDir>/settings.json 的 model 欄位找
[1m] 後綴。實測此帳號的 settings.json 根本沒有 model key
(keys 只有 enabledPlugins / extraKnownMarketplaces /
skipDangerousModePermissionPrompt / theme)→ 回傳 nil。
- 訊號 (3):
observedTokens > base 的 fallback 要等實際用量破 200k 才會跳成 1M ——
在那之前分母一路是錯的,而且「剩餘」被嚴重低估。
- transcript 裡最新一筆 assistant 的
message.model 是 claude-opus-5(不帶 [1m]);
transcript 也沒有任何 context-window 欄位。
- 掃過
<configDir>/.claude.json:唯一帶 [1m] 的字串是
additionalModelOptionsCache[0].value = claude-fable-5[1m](那是選單快取,不是本 session 的選擇);
clientDataCacheSlots/*/model 是 claude-opus-5,同樣不帶後綴。
也就是說:目前 Logos 讀得到的檔案裡,沒有任何一處記錄了「這個 session 是 1M」。#95 的
[1m]-from-settings.json 機制對「使用者沒把 model 寫進 settings.json」的帳號是空的。
Impact
Context 計量是決定「還能不能繼續、要不要換帳號 / 開新 session」的主要依據。分母錯 5 倍
會讓人在還有 90% 空間時就以為快滿了;反過來,若之後有 family 真的低於預設值,同一條
fail-open 邏輯也會過度樂觀。這條計量錯了,狀態列就從資訊變成雜訊。
Open questions(留給 diagnose)
- 使用者提的「剛開始先蒐集詢問一次」具體要問誰?可能的來源:
(a) claude CLI 有沒有可查詢的 session/model metadata(例如某個 --print / status 之類的
一次性查詢);(b) 是否有官方 API 可依 model id 取得 context window;
(c) 在 spawn 時由 Logos 主動指定 model(含 [1m]),這樣選擇就在 Logos 手上、不必反推。
- 若確實無法取得權威值,退路是把 per-family base window 建成可設定表(
baseWindow 目前
hardcode 單一常數),並讓使用者在設定裡覆寫。
- 一次性 probe 要放在哪一層?
WindowUsageModel 每次刷新都重算(:176-182),probe 的結果
要 cache 在 session 層級,不能每秒問一次。
Problem
狀態列的 context 計量顯示
97k/200k,但同一個 session 的 Claude Code header 寫的是Opus 5 (1M context)。context max 被當成 200k,實際上是 1M。使用者的提案:session 一開始就先主動取一次真正的 context window,而不是靠推論。Screenshot(無法上傳原檔,逐字描述)
截圖是 Logos 內的 Claude Code session:header 顯示
Claude Code v2.1… / Opus 5 (1M conte… / ~/Developer/logo…,最底下的狀態列顯示訊號圖示 + 綠色進度條 +
97k/200k+ 沙漏5h 6…。(此 issue 由 CLI session 建立,貼上的圖片沒有可讀的本機路徑可上傳到 attachments release;如需原圖請重新提供檔案。)
Type
bug
Expected
Context 計量的分母等於該 session 真正的 context window。此例應為
97k/1M。Actual
分母固定落在 200k,直到用量真的超過 200k 才會自我修正。
觀察(不是 diagnosis) —— 現有三個訊號在這個 session 全部失效:
ClaudeUsageReader.baseWindow(forModel:)(Sources/Logos/Services/ClaudeUsageReader.swift:46-49)對所有 family 回傳
200_000(註解寫「opus / sonnet / haiku / fable all ship a 200kbase window today; the 1M is a beta on top」)。
selectedModel(inConfigDir:)讀<configDir>/settings.json的model欄位找[1m]後綴。實測此帳號的settings.json根本沒有modelkey(keys 只有
enabledPlugins/extraKnownMarketplaces/skipDangerousModePermissionPrompt/theme)→ 回傳nil。observedTokens > base的 fallback 要等實際用量破 200k 才會跳成 1M ——在那之前分母一路是錯的,而且「剩餘」被嚴重低估。
message.model是claude-opus-5(不帶[1m]);transcript 也沒有任何 context-window 欄位。
<configDir>/.claude.json:唯一帶[1m]的字串是additionalModelOptionsCache[0].value = claude-fable-5[1m](那是選單快取,不是本 session 的選擇);clientDataCacheSlots/*/model是claude-opus-5,同樣不帶後綴。也就是說:目前 Logos 讀得到的檔案裡,沒有任何一處記錄了「這個 session 是 1M」。#95 的
[1m]-from-settings.json 機制對「使用者沒把 model 寫進 settings.json」的帳號是空的。Impact
Context 計量是決定「還能不能繼續、要不要換帳號 / 開新 session」的主要依據。分母錯 5 倍
會讓人在還有 90% 空間時就以為快滿了;反過來,若之後有 family 真的低於預設值,同一條
fail-open 邏輯也會過度樂觀。這條計量錯了,狀態列就從資訊變成雜訊。
Open questions(留給 diagnose)
(a)
claudeCLI 有沒有可查詢的 session/model metadata(例如某個--print/ status 之類的一次性查詢);(b) 是否有官方 API 可依 model id 取得 context window;
(c) 在 spawn 時由 Logos 主動指定 model(含
[1m]),這樣選擇就在 Logos 手上、不必反推。baseWindow目前hardcode 單一常數),並讓使用者在設定裡覆寫。
WindowUsageModel每次刷新都重算(:176-182),probe 的結果要 cache 在 session 層級,不能每秒問一次。