
对话进行到一半,Agent 突然"失忆"了。它忘了刚才在改哪个文件,忘了你交代的任务,甚至忘了自己上一步做了什么。你不得不重新描述一遍需求,重新建立上下文。
为什么会这样?上下文窗口满了。
每次工具调用都会往上下文里塞数据。一个 Playwright 截图 56 KB,20 个 GitHub issues 59 KB,一个访问日志 45 KB... 30 分钟后,40% 的上下文就被这些原始数据占满了。当 Agent 被迫压缩对话释放空间时,重要的信息也被一起丢掉了。
更糟的是,Agent 还在输出端浪费 token——填充词、客套话、冗长解释... 上下文被双向燃烧。
今天介绍的 context-mode,就是专门来解决这个问题的。
GitHub:
98% 的上下文减少
context-mode 的 slogan 很直接:"The other half of the context problem"(上下文问题的另一半)。
它做了什么?把工具输出的原始数据沙盒化,不让它们污染上下文窗口。
效果有多夸张?官方数据:
- 315 KB 的原始数据 → 5.4 KB 的有效上下文
- 98% 的减少
这意味着什么?原来只能维持 30 分钟的对话,现在可以持续几个小时。原来对话到一半就"失忆"的 Agent,现在能记住完整的任务链条。
四维解决方案
context-mode 从四个维度解决上下文问题:
第一维:Context Saving(上下文节省)
传统的工具调用会把原始输出直接塞进上下文。比如你用 Playwright 截图,整个 HTML 结构都进上下文了。context-mode 的做法是——把原始数据关在沙盒里。
它提供了一组沙盒工具(ctx_execute、ctx_batch_execute 等),在隔离环境中运行代码,只把结果返回给上下文,原始数据留在沙盒外。
就像你问 Agent"这个项目有多少个 TypeScript 文件",传统方式要读取所有文件进上下文再统计。context-mode 让 Agent 写一个脚本在沙盒里统计,只返回"47 个文件"这个数字。
第二维:Session Continuity(会话连续性)
当上下文满了需要压缩时,传统 Agent 会丢掉早期的对话内容。这导致 Agent 忘记:
- 正在编辑哪些文件
- 哪些任务在进行中
- 用户上次的要求是什么
context-mode 的解决方案是SQLite 持久化。每个文件编辑、git 操作、任务、错误、用户决策都被记录在本地 SQLite 数据库中。当对话压缩时,这些数据不会被重新注入上下文,而是通过 FTS5 全文索引,用 BM25 算法只检索当前相关的内容。
Agent 可以从断点继续,就像什么都没发生过。
第三维:Think in Code(用代码思考)
这是 context-mode 最核心的理念:LLM 应该编程分析,而不是计算分析。
传统做法:Agent 读取 50 个文件到上下文,然后自己数有多少个函数。
context-mode 做法:Agent 写一个脚本在沙盒里统计,只把结果输出到上下文。
对比:
// 传统方式:47 次 Read() = 700 KB
// context-mode: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'));
`);
一个脚本替代十次工具调用,节省 100 倍上下文。
第四维:Output Compression(输出压缩)
context-mode 还优化了 Agent 的输出端。它的压缩哲学很有意思:
"Terse like caveman. Technical substance exact. Only fluff die." (像穴居人一样简洁。技术实质精确。只去掉废话。)
具体做法:
- 删除冠词(a/an/the)
- 删除填充词(just/really/basically)
- 删除客套话和模棱两可的表达
- 允许片段化表达
- 使用短同义词
- 代码保持不变
模式是:[thing] [action] [reason]. [next step]
效果:65-75% 的输出 token 减少,同时保持技术准确性完整。
支持 14 个主流平台
context-mode 支持目前主流的 AI 编程工具:
- Claude Code —— 插件市场安装,全自动集成
- Gemini CLI —— 配置文件安装,支持 hooks
- Cline —— VS Code 插件
- Roo Code —— Cline 的分支
- Aider —— 命令行结对编程
- Zed —— 高性能编辑器
- Sourcegraph Cody —— 企业级代码 AI
- Continue —— 开源代码助手
- Tabby —— 自托管代码助手
- Supermaven —— 20M 上下文窗口
- Codeium —— 免费代码补全
- Cursor —— AI 原生编辑器
- Windsurf —— 新起的 AI 编辑器
- GitHub Copilot Chat —— GitHub 官方
基本上,你在用的 AI 编程工具,context-mode 都支持。
快速开始(Claude Code)
安装很简单,在 Claude Code 里执行:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
重启 Claude Code,然后验证安装:
/context-mode:ctx-doctor
如果所有检查都显示 [x],说明安装成功。
context-mode 会自动注册所有 hooks(PreToolUse、PostToolUse、PreCompact、SessionStart)和 6 个沙盒工具。你不需要手动配置,开箱即用。
实用命令
装好后,你可以用这些命令:
/context-mode:ctx-stats —— 查看上下文节省统计,每个工具的节省比例
/context-mode:ctx-doctor —— 诊断检查,验证运行时、hooks、FTS5、插件注册
/context-mode:ctx-insight —— 个人分析仪表板,15+ 指标包括工具使用、会话活动、错误率、并行工作模式等,会打开一个本地 Web UI
/context-mode:ctx-upgrade —— 拉取最新版本,重建,迁移缓存,修复 hooks
/context-mode:ctx-purge —— 永久删除知识库中的所有索引内容
在其他平台上,直接在聊天里输入 ctx stats、ctx doctor 等,模型会自动调用对应工具。
适合谁用
长时间使用 AI 编程工具的人 —— 如果你一次会话要持续几个小时,context-mode 能显著延长有效对话时间。
处理大型项目的人 —— 大项目意味着更多的文件读取、更多的工具调用,上下文消耗更快。context-mode 的 98% 减少在这种场景下价值最大。
频繁使用浏览器/日志工具的人 —— Playwright 截图、日志读取是上下文杀手。context-mode 的沙盒化能把这些数据隔离在外。
对 token 费用敏感的人 —— 输入输出双向压缩,能显著降低 API 费用。
需要 Agent 保持长期记忆的人 —— SQLite 持久化让 Agent 不会"失忆",跨会话也能保持连续性。
GitHub:
写在最后
context-mode 解决的是一个很实际的问题:AI 编程 Agent 的上下文瓶颈。
现在的 AI 编程工具越来越强大,但上下文窗口始终是瓶颈。context-mode 的思路很聪明——不是让窗口变大,而是让内容变少。通过沙盒化、代码化思考、输出压缩,它在现有窗口限制下,极大地提升了有效信息量。
而且它的设计很完整,从输入端(沙盒工具)到输出端(压缩算法),从会话内(hooks)到跨会话(SQLite 持久化),形成了一个完整的解决方案。
如果你也在用 AI 编程工具,也在为上下文限制和 token 费用发愁,context-mode 值得一试。
关注
如果这篇文章对你有帮助,欢迎点赞、收藏、转发。我会持续分享实用的 AI 编程工具和效率优化技巧,关注我,一起用 AI 更高效地写代码。