AEO 速答:Context Mode 是一套 MCP 伺服器,把工具輸出關進沙箱、只讓 stdout 進入對話,實測可省下約 98% 的 context(315 KB → 5.4 KB),並用本機 SQLite+FTS5 記住 session 狀態。支援 Claude Code、Gemini CLI、Cursor、Codex 等 17 個平台,可完全本機執行、無遙測。
一、問題:你的 AI 代理為什麼 30 分鐘就「失憶」?
先看幾個真實數字,這也是 Context Mode README 裡最常被引用的段落:
| 一次工具呼叫 | 原始資料量 |
|---|---|
| Playwright 快照 | 56 KB |
| 20 則 GitHub issues | 59 KB |
| 一份 access log | 45 KB |
這些東西全都被塞進 context window。大約 30 分鐘後,你的 context 已經用掉 40%。接著 agent 為了騰出空間開始壓縮(compact)對話——然後它就忘了剛才在改哪個檔案、哪些任務還沒做完、你上一句要求是什麼。
更麻煩的是兩邊都在燒:agent 讀進來的原始資料佔 context,寫出去的客套話與冗長解釋也佔 context。
二、Context Mode 是什麼?
Context Mode 是一套跑在 MCP 協議層的伺服器(TypeScript,npm 套件版號 1.0.169,2026-10-12 實查約 2.7 萬顆星)。它把自己定位成「context 問題的另一半」,一次解四個方向:
- Context 節省——沙箱工具把原始資料留在對話之外。315 KB 變 5.4 KB,約 98% 降幅。
- Session 連續性——每一次檔案編輯、git 操作、任務、錯誤、使用者決策都記進 SQLite;對話被壓縮時,它不會把資料倒回 context,而是索引成 FTS5 事件、用 BM25 只取相關的。若你沒有使用
--continue,上一個 session 的資料會立刻刪除。 - Think in Code——要模型「用程式思考」:與其讀 50 個檔案進 context 數函式,不如讓 agent 寫一支腳本去數,只
console.log()結果。一支腳本取代十次工具呼叫。 - 不干涉文章風格——它只決定「資料放哪裡」,不管你最終回答寫多長、什麼格式(你要簡潔就自己在
CLAUDE.md/AGENTS.md寫)。
一句話總結差異:它不是「CLI 輸出過濾器」,也不是雲端分析後台,而是從資料源頭就把東西擋在 context 外。
三、安裝:三個常見情境的指令
情境 A:Claude Code(外掛市集,最完整)
前置條件:Claude Code v1.0.33+。若 /plugin 不認得,先更新(npm update -g @anthropic-ai/claude-code)。
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
重啟 Claude Code(或執行 /reload-plugins),然後驗證:
/context-mode:ctx-doctor
所有檢查都應該顯示 [x]——doctor 會檢查 runtime、hooks、FTS5 與外掛註冊狀態。
這條路會註冊 6 個 hooks(PreToolUse、PostToolUse、UserPromptSubmit、PreCompact、SessionStart、Stop)與 11 個 MCP 工具,並由 SessionStart hook 在執行期注入路由指令(不會在你的專案裡產生檔案)。
情境 B:只想先試 MCP 工具(無 hooks)
claude mcp add context-mode -- npx -y context-mode
一樣拿到 11 個 MCP 工具,但沒有自動路由——模型不會被提醒優先使用它們。適合先試水溫。
情境 C:Gemini CLI/其他平台
npm install -g context-mode
再把 MCP server 與四個 hooks(BeforeTool/AfterTool/PreCompact/SessionStart)寫進 ~/.gemini/settings.json。其他平台(Cursor、Codex CLI、VS Code Copilot、JetBrains Copilot、OpenCode、KiloCode、OpenClaw、Kiro、Zed、Pi、OMP、Antigravity 等)依 README 各自提供 context-mode.mdc、AGENTS.md、CLAUDE.md 等路由檔。
平台支援與節省幅度對照
| 平台 | Hook 自動路由 | 路由檔 | 完整 plugin | 只裝 MCP |
|---|---|---|---|---|
| Claude Code | 有 | CLAUDE.md | 約 98% 節省 | 約 60% |
| Gemini CLI | 有 | GEMINI.md | 約 98% | 約 60% |
| VS Code / JetBrains Copilot | 有 | copilot-instructions.md | 約 98% | 約 60% |
| GitHub Copilot CLI | 有 | copilot-instructions.md | 約 98% | 約 60% |
| Cursor | 有(sessionStart 尚不支援) | context-mode.mdc | 約 98% | 約 60% |
| Codex CLI | 有(部分) | AGENTS.md | 約 98% | 約 60% |
| OpenCode/KiloCode/OpenClaw | Plugin | AGENTS.md | 約 98% | 約 60% |
| Kiro/Pi/OMP | 部分 | KIRO.md/AGENTS.md/SYSTEM.md | 約 98% | 約 60% |
重點:沒有 hooks,一個沒被路由的 curl 或 Playwright 快照就能一次灌進 56 KB,把整場 session 的節省全部吃掉。所以務必跑 ctx-doctor 確認 hook 有裝上。
四、11 個 MCP 工具與各自的節省量
| 工具 | 功能 | 官方標示節省 |
|---|---|---|
ctx_batch_execute | 一次呼叫跑多個指令+多個查詢(可 concurrency: 1-8) | 986 KB → 62 KB |
ctx_execute | 沙箱內跑 12 種語言,只有 stdout 進 context | 56 KB → 299 B |
ctx_execute_file | 在沙箱處理檔案,原始內容不外流 | 45 KB → 155 B |
ctx_index | 把 markdown 切成 chunk 存進 FTS5(BM25 排序) | 60 KB → 40 B |
ctx_search | 對已索引內容同時下多個查詢 | 按需檢索 |
ctx_fetch_and_index | 抓網頁 → 轉 markdown → 切塊索引(含 TTL 快取) | 60 KB → 40 B |
ctx_stats | 顯示 context 節省、呼叫次數、session 統計 | — |
ctx_doctor | 診斷安裝:runtime、hooks、FTS5、版本 | — |
ctx_upgrade | 從 GitHub 更新、重建、重設 hooks | — |
ctx_purge | 永久刪除知識庫所有內容 | — |
ctx_insight | 開啟託管的 Insight 儀表板 | — |
沙箱的運作方式很直白:每次 ctx_execute 都開一個獨立子行程,腳本之間看不到彼此的記憶與狀態;子行程跑完只把 stdout 交出去,log、API 回應、快照這些原始資料完全留在沙箱裡。可用語言有 JavaScript、TypeScript、Python、Shell、Ruby、Go、Rust、PHP、Perl、R、Elixir、C#(偵測到 Bun 時 JS/TS 快 3~5 倍);gh、aws、gcloud、kubectl、docker 這類已登入的 CLI 透過環境變數傳遞憑證,不會把憑證暴露到對話中。
五、實測 benchmark:哪些情境省最多?
| 情境 | 原始 | 進 context | 節省 |
|---|---|---|---|
| Playwright 快照 | 56.2 KB | 299 B | 99% |
| 20 則 GitHub issues | 58.9 KB | 1.1 KB | 98% |
| access log(500 筆請求) | 45.1 KB | 155 B | 100% |
| Analytics CSV(500 列) | 85.5 KB | 222 B | 100% |
| git log(153 commits) | 11.6 KB | 107 B | 99% |
| 測試輸出(30 個 suite) | 6.0 KB | 337 B | 95% |
| Context7 React 文件 | 5.9 KB | 261 B | 96% |
| Repo 研究(subagent) | 986 KB | 62 KB | 94% |
整場 session 加總:315 KB 原始輸出 → 5.4 KB;官方說可運作的 session 長度從約 30 分鐘延長到約 3 小時。完整 21 個情境的數據在 repo 的 BENCHMARK.md。
六、知識庫怎麼運作:FTS5、BM25 與 RRF
ctx_index 會依標題切塊(保留程式碼區塊完整),存進 SQLite FTS5 虛擬表。檢索端有幾個設計值得知道:
- BM25 排序:依詞頻、逆文件頻率、文件長度正規化評分,標題與標題層級權重 5 倍。
- RRF(Reciprocal Rank Fusion):同時跑「Porter 詞幹比對」與「Trigram 子字串比對」兩條策略再合併——
useEff找得到useEffect,authenticat找得到authentication。 - 鄰近重排:多詞查詢時,詞彼此靠近的段落排名較前。
- 模糊修正:Levenshtein 距離自動修正錯字(
kuberntes→kubernetes)。 - Smart Snippets:回傳的是「查詢詞附近的視窗」而不是前 N 個字元。
- TTL 快取:
ctx_fetch_and_index預設 24 小時內不重抓;可用ttl: <ms>覆寫,ttl: 0/force: true強制重抓。內容庫 14 天清一次。 - 漸進式節流:同一輪第 1~3 次檢索正常回傳,第 4~8 次減量並警告,第 9 次起直接擋掉、改導向
ctx_batch_execute。
七、五個可以直接複製的實戰 prompt
裝好之後,用這幾句測最有感(跑完再下 ctx stats 看數字):
1. 深度 repo 研究(5 次呼叫、62 KB,原始 986 KB,省 94%)
Research https://github.com/modelcontextprotocol/servers — architecture, tech stack,
top contributors, open issues, and recent activity. Then run /context-mode:ctx-stats.
2. Git 歷史分析(1 次呼叫、5.6 KB)
Clone https://github.com/facebook/react and analyze the last 500 commits:
top contributors, commit frequency by month, and most changed files.
Then run /context-mode:ctx-stats.
3. 抓網頁並結構化(1 次呼叫、3.2 KB)
Fetch the Hacker News front page, extract all posts with titles, scores,
and domains. Group by domain. Then run /context-mode:ctx-stats.
4. 超大 JSON API(原始 7.5 MB → 0.9 KB,省 99%)
建立一個本機 server,回傳 7.5 MB、20,000 筆記錄的 JSON,並在第 13000 筆藏一個 secret。
抓這個端點、找出被藏起來的那筆資料、把內容告訴我。然後跑 /context-mode:ctx-stats。
5. Session 連續性(compaction 復原)
開一個多步驟任務:「用 Express 建立一個 REST API — 加路由、測試與錯誤處理。」
跑 20 次以上工具呼叫後輸入 ctx stats 看事件數。當 context 被壓縮時,
模型應該能帶著任務、檔案與決策繼續,不需要你重講。
八、隱私、安全與限制
隱私:所有處理都在本機沙箱,沒有遙測、沒有雲端同步、不需要帳號;SQLite 資料庫放在你家目錄(內容庫在 ~/.context-mode/content/)。
安全:它沿用你原本的權限規則並延伸到沙箱——你在設定裡擋掉 sudo,沙箱內的 ctx_execute 也一樣被擋;沒設定任何權限規則時行為不變。另有專案邊界隔離與網路抓取加固。
限制與注意事項:
- 一定要確認 hook 生效,否則節省從 98% 掉到約 60%。
- Runtime 需要 Node.js ≥ 22.5(或用 Bun)。
- 授權是 Elastic License 2.0(ELv2),不是傳統開源授權:可自用、可修改,但不能把它包成託管服務轉賣。
- 官方在 README 掛了「Microsoft、Google、Meta、NVIDIA 等團隊使用中」的徽章,但這屬於廠商自述,沒有第三方稽核可驗證,看數據時請自行打折。
- 它解決的是**「資料體積」,不是「模型記不記得你的偏好」**。長期記憶要另外一套(例如 claude-mem 完整教學 介紹的做法)。
九、常見問題(FAQ)
Context Mode 是免費的嗎? 是,套件直接從 npm 安裝、本機執行,沒有訂閱制;付費的只有選用的託管 Insight 儀表板。
跟直接寫 AGENTS.md/CLAUDE.md 有什麼不同? 寫文件只是「請模型少讀一點」的軟性勸導;Context Mode 是在 MCP 協議層把資料擋住,加上 hook 強制路由,屬於硬性機制。
沒有 hooks 的環境有用嗎? 有,但只有約六成效果,而且一次大型輸出就可能抵銷。建議至少把路由檔複製到專案,並避免讓 agent 直接跑會吐大量文字的指令。
會不會把我的原始碼傳出去? 依官方設計不會——它在沙箱處理、資料落地本機;但由於沒有獨立稽核,機敏環境建議自行以封包監控或離線環境驗證。
延伸閱讀
- MCP 完整教學 2026:從架構、三大原語到實作第一個 MCP Server
- claude-mem 完整教學 2026:讓 Claude Code/Codex/Cursor 跨 session 記住你的專案
- Context Engineering:AI 時代的超能力,讓你的模型不再『瞎忙』
- OpenAI Codex 完整教學:從 CLI 到雲端代理的工作流
原始來源
- GitHub:mksglu/context-mode — https://github.com/mksglu/context-mode
- npm:context-mode 1.0.169(Elastic-2.0)— https://www.npmjs.com/package/context-mode
- 完整 benchmark 數據(21 個情境):repo
BENCHMARK.md - 官方網站/Insight 儀表板 — https://context-mode.com/insight
