context-mode:把 MCP 工具輸出擋在上下文視窗之外,315 KB 變 5.4 KB,並用 SQLite 記住壓縮前的會話

Published · AI Daily — AI-assisted deep research, methodology & disclosure

mksglu/context-mode 是一個 MCP 伺服器,針對編碼智慧體的上下文視窗被工具輸出塞滿的問題:沙箱工具讓原始資料不進入上下文,README 的示例是 315 KB 變成 5.4 KB(減少 98%);會話事件寫入 SQLite,並在對話壓縮後用 FTS5 和 BM25 只取回相關部分。它支援 17 個客戶端,包含 11 個 MCP 工具。倉庫約 2.7 萬星標;README 標註的許可是 ELv2,GitHub 的許可檢測則顯示“NOASSERTION”。

編碼智慧體最容易被忽視的成本,是上下文視窗。mksglu/context-mode 的 README 開篇就把這件事說得很直白:每次 MCP 工具呼叫都會把原始資料倒進上下文視窗。一次 Playwright 快照要 56 KB,20 個 GitHub issue 要 59 KB,一份訪問日誌要 45 KB,半小時之後,40% 的上下文就沒有了。等智慧體為了騰出空間壓縮對話,它還會忘記自己正在編輯哪些檔案、有哪些任務在進行、使用者上一句要什麼。context-mode 是一個 MCP 伺服器,目標就是同時處理這幾個問題。截至 2026 年 10 月 13 日,倉庫約有 27,340 個星標、1,948 個派生,用 TypeScript 編寫,最近一次推送在 10 月 12 日。 它的方案分四塊。第一是“節省上下文”:沙箱工具讓原始資料留在沙箱裡,不進入上下文視窗,README 給出的例子是 315 KB 變成 5.4 KB,減少 98%。第二是“會話連續性”:每一次檔案編輯、git 操作、任務、錯誤和使用者決定都會記錄在 SQLite 裡;對話被壓縮時,它不會把這些記錄整塊塞回上下文,而是把事件索引進 FTS5,再用 BM25 搜尋只取回相關內容,模型因此能接著上次的位置繼續。README 特別寫明,如果不使用 --continue,之前的會話資料會被立即刪除,每次新會話都是乾淨的。第三是“用程式碼思考”:讓大模型去編寫分析程式,而不是自己當資料處理器。比如要統計 50 個檔案裡的函式數量,不要把 50 個檔案讀進上下文,而是寫一小段指令碼,只把結果列印出來;README 的對比是讀 47 次檔案約 700 KB,對比一次 ctx_execute 只有 3.6 KB。第四是不強制回答文風:它只把原始資料擋在上下文外,不規定模型怎樣寫最終答案,並引用 Moonshot AI 在 kimi-k2.5 上的 issue 指出,過度強調簡短的提示詞會損害編碼和推理基準的成績。

從工具層面看,它提供 11 個 MCP 工具:6 個沙箱工具(ctx_batch_execute、ctx_execute、ctx_execute_file、ctx_index、ctx_search、ctx_fetch_and_index)和 5 個元工具(ctx_stats、ctx_doctor、ctx_upgrade、ctx_purge、ctx_insight)。在 Claude Code 裡它以外掛形式安裝,註冊 PreToolUse、PostToolUse、UserPromptSubmit、PreCompact、SessionStart 和 Stop 這幾類鉤子,路由是自動的,SessionStart 鉤子會在執行時注入路由指令,不會往你的專案裡寫檔案。安裝只需要 /plugin marketplace add mksglu/context-mode 和 /plugin install context-mode@context-mode 兩條命令,然後重啟 Claude Code。想先試一試的人,也可以只加 MCP:claude mcp add context-mode -- npx -y context-mode,不過那樣沒有鉤子,也就沒有自動路由,模型不一定會優先用它。斜槓命令包括 ctx-stats 看節省了多少,ctx-doctor 做診斷,ctx-index 和 ctx-search 管理本地知識庫,ctx-purge 永久刪除索引內容。

它覆蓋的平臺之多是另一個特點。README 說支援 17 個客戶端,並按安裝複雜度分組:有鉤子能力的平臺會自動強制路由,沒有鉤子的平臺需要一次性複製一份路由說明檔案。除了 Claude Code,文件還寫到了 Gemini CLI、VS Code Copilot、JetBrains Copilot、Copilot CLI、OpenCode、KiloCode 等,大多數要求 Node.js 22.5 以上或 Bun。其中 OpenCode 和 KiloCode 缺少真正的 SessionStart 鉤子,專案用一個實驗性的系統提示變換鉤子來代替,並用 chat.message 鉤子替代缺失的 UserPromptSubmit。另有 ctx_insight 會開啟託管的 Insight 儀表盤,面向 AI 輔助工程團隊做組織層面的分析,這是與本地工具並列的一個託管服務入口。

許可是一個需要單獨提醒的細節。README 的徽章寫的是 ELv2,也就是 Elastic License 2.0,而 GitHub 的許可檢測結果是 NOASSERTION,說明它沒有被識別為某個標準的 SPDX 許可。ELv2 屬於原始碼可見的許可,與 MIT、Apache-2.0 這類開源許可不同,它對把軟體作為託管服務提供等用法設有限制。因此如果你打算在公司產品或對外服務裡使用它,請先自己讀倉庫裡的 LICENSE 檔案。 使用中怎麼看效果,README 也給了入口。除了 ctx-stats 的分工具統計之外,Claude Code 還可以手動在 settings.json 裡配置一個可選的狀態列:因為外掛清單沒有辦法宣告狀態列,所以需要手動編輯一次,配置完成並重啟後,狀態列會顯示“本次會話節省的金額、跨會話累計節省的金額,以及效率百分比”,讓節省量隨使用實時累積。ctx-doctor 則會檢查執行時、鉤子、FTS5 和外掛註冊是否都正常,所有檢查項應顯示為透過。對想評估的團隊,這兩個入口比單看 README 的示例數字更有說服力。

我們的判斷是,這個專案抓住了一個真實而昂貴的痛點,方案也有清晰的工程邏輯:不讓原始資料進上下文、讓會話事件可檢索、讓模型多寫指令碼少讀資料。但需要保持克制。第一,98% 和 315 KB 變 5.4 KB 是 README 的示例數字,實際節省取決於你的工具輸出和工作習慣,可以先用 ctx_stats 在自己的任務上量一量。第二,它依賴鉤子來強制路由,在沒有鉤子的平臺上效果要靠模型自覺。第三,會話資料會存進本地 SQLite,涉及敏感程式碼或日誌時,要弄清楚存放位置、保留策略和 ctx_purge 的行為。建議先在一箇中等規模的真實任務上對比開啟前後的上下文消耗和完成質量,再決定是否推廣到團隊。

Sources

FAQ

context-mode 解決的是什麼問題?

README 把問題分成四面:工具輸出把原始資料倒進上下文(一次 Playwright 快照 56 KB,20 個 GitHub issue 59 KB,一份訪問日誌 45 KB,半小時後 40% 的上下文就沒了);對話壓縮後智慧體會忘記正在編輯的檔案和任務;讓模型自己計算而不是寫指令碼;以及不應強制規定回答文風。它對四面分別給出方案。

它如何在對話壓縮後保持連續?

每一次檔案編輯、git 操作、任務、錯誤和使用者決定都會記錄在 SQLite 裡。對話壓縮時,它不會把這些資料整塊塞回上下文,而是索引進 FTS5,再用 BM25 搜尋只取回相關內容。README 說明,如果不使用 --continue,之前的會話資料會被立即刪除。

安裝與許可有什麼要注意?

在 Claude Code 中用 /plugin marketplace add mksglu/context-mode 與 /plugin install context-mode@context-mode 安裝,也可以只加 MCP:claude mcp add context-mode -- npx -y context-mode。多數平臺要求 Node.js 22.5 以上。README 徽章標明許可為 ELv2,GitHub 檢測結果是 NOASSERTION,用於商業場景前請先閱讀 LICENSE 檔案。