Appearance
Context Mode 是一个 MCP Server 插件,解决 AI 编程助手的"上下文窗口不够用"问题。每次 MCP 工具调用都会把原始数据塞进上下文窗口——Playwright 快照 56 KB、20 条 GitHub Issue 59 KB、一份访问日志 45 KB。半小时后 40% 的上下文就被吃光了,Agent 压缩会话后就忘了自己在干嘛。
Context Mode 的方案是四招组合拳:沙盒执行(只进 stdout)、会话持久化(SQLite 记住一切)、代码思维(写脚本替代读文件)、输出压缩(砍掉废话)。官方数据:315 KB 原始输出压缩到 5.4 KB,节省 98%。支持 Claude Code、Gemini CLI、Cursor 等 14 个平台。
为什么需要 Context Mode
用 AI 编程工具写代码,最头疼的不是模型不够聪明,而是上下文窗口不够大。
举个例子:你在用 Claude Code 帮忙重构一个 React 项目。先读 10 个组件文件(每个 5 KB),跑个测试看结果(8 KB),再 grep 一下全局引用(12 KB),还查了几条 GitHub Issue 找参考(20 KB)。半小时不到,上下文窗口用了 40%。
然后 Claude 触发 compaction(上下文压缩),它"忘记"了你刚才让它改哪个文件、做到哪一步、你的架构决策是什么。你不得不重新解释一遍。
Context Mode 就是来解决这个问题的。
它做了什么
Context Mode 的核心思路很简单:不要把原始数据塞进对话,只把结果塞进去。
| 传统方式 | 用 Context Mode |
|---|---|
| Read 50 个文件 → 700 KB 上下文 | 写 1 个脚本统计 → 3.6 KB 结果 |
| 浏览器快照 56 KB 直接进对话 | 沙盒执行脚本,只输出你关心的字段 |
| 会话压缩后丢失所有进度 | SQLite 记录每次操作,压缩后自动恢复 |
具体来说,它解决了四个问题:
1. 沙盒执行(Context Saving)
每个 ctx_execute 调用在独立子进程里运行,只有 console.log() 的 stdout 会进入对话上下文。原始数据(日志、API 响应、页面快照)永远不离开沙盒。
效果:315 KB → 5.4 KB,节省 98%。
2. 会话持久化(Session Continuity)
每次文件编辑、git 操作、任务状态、错误信息、用户决策都会记录到 SQLite。会话压缩时,Context Mode 构建一个优先级分层的 XML 快照(≤2 KB),通过 SessionStart Hook 恢复上下文。
效果:压缩后 AI 依然记得你在做什么、做到哪了。
3. 代码思维(Think in Code)
不要让 LLM 读 50 个文件来"理解"代码——让它写一个脚本统计函数数量、检查类型错误、扫描依赖关系。一个脚本替代十次工具调用。
效果:上下文消耗降低 10-100 倍。
js
// Before: 47 × Read() = 700 KB
// After: 1 × ctx_execute() = 3.6 KB
ctx_execute("javascript", `
const files = fs.readdirSync('src').filter(f => f.endsWith('.ts'));
files.forEach(f => console.log(f + ': ' +
fs.readFileSync('src/'+f,'utf8').split('\\n').length + ' lines'));
`);4. 输出压缩(Output Compression)
砍掉 AI 输出中的废话:填充词(just/really/basically)、客套话、冗余解释。只保留技术实质。代码不压缩。
效果:输出 token 减少 65-75%。
支持的平台
Context Mode 支持 14 个 AI 编程平台,按 Hook 能力分三档:
| 能力等级 | 平台 | Hook 机制 |
|---|---|---|
| 完整支持 | Claude Code、Gemini CLI、VS Code Copilot、JetBrains Copilot | JSON stdin/stdout |
| 基本支持 | Cursor、Codex CLI、Qwen Code、OpenCode | JSON stdin / TS Plugin |
| MCP-only | Antigravity、Kiro、Zed、Pi Agent | 无 Hook,仅路由指令 |
TIP
Claude Code 用户安装最简单:一条命令装进 Plugin Marketplace,Hook 全自动注册。
谁在用
Hacker News #1(570+ 点),Microsoft、Google、Meta、Amazon、ByteDance、Stripe 等团队使用。
文章导航
| 文章 | 内容 |
|---|---|
| 安装配置完全指南 | 全平台安装方法,重点 Claude Code / Gemini CLI / Cursor |
| 四大核心功能详解 | 沙盒执行、会话持久化、代码思维、输出压缩的原理和实战 |
| 沙盒工具实战 | ctx_execute / ctx_batch_execute 的高级用法、安全机制、11 种语言 |
| 会话持久化原理 | SQLite + 事件追踪 + XML 快照的实现设计 |
| 知识库架构 | FTS5 + BM25 + RRF 混合搜索的技术细节 |
| 平台支持矩阵 | 14 平台 Hook 机制对比、能力矩阵、已知问题 |
| Insight 分析面板 | 90 项指标、4 个综合评分的量化分析 |
FAQ
Q: Context Mode 和 Cursor 自带的上下文管理有什么区别?
Cursor 的上下文管理主要靠 RAG 检索代码片段,解决的是"给模型喂什么"的问题。Context Mode 解决的是"怎么不让对话上下文被撑爆"的问题——它在 MCP 协议层拦截数据,只让精简结果进入对话。两者不冲突,可以同时用。
Q: 会话持久化会不会泄露代码到云端?
不会。Context Mode 100% 本地运行,零遥测。SQLite 数据库存在本地(~/.claude/context-mode/sessions/ 等),不上传任何数据。
Q: 安装后性能开销大吗?
MCP Server 本身开销极小。Hook 拦截会增加几十毫秒延迟,但省下的上下文空间和重复解释的时间远超这点开销。