让 AI Coding 会话从 30 分钟拉长到 3 小时

0 阅读6分钟

对话进行到一半,Agent 突然"失忆"了。它忘了刚才在改哪个文件,忘了你交代的任务,甚至忘了自己上一步做了什么。你不得不重新描述一遍需求,重新建立上下文。

为什么会这样?上下文窗口满了

每次工具调用都会往上下文里塞数据。一个 Playwright 截图 56 KB,20 个 GitHub issues 59 KB,一个访问日志 45 KB... 30 分钟后,40% 的上下文就被这些原始数据占满了。当 Agent 被迫压缩对话释放空间时,重要的信息也被一起丢掉了。

更糟的是,Agent 还在输出端浪费 token——填充词、客套话、冗长解释... 上下文被双向燃烧

今天介绍的 context-mode,就是专门来解决这个问题的。

GitHub:

github.com/mksglu/cont…

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_executectx_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 statsctx doctor 等,模型会自动调用对应工具。

适合谁用

长时间使用 AI 编程工具的人 —— 如果你一次会话要持续几个小时,context-mode 能显著延长有效对话时间。

处理大型项目的人 —— 大项目意味着更多的文件读取、更多的工具调用,上下文消耗更快。context-mode 的 98% 减少在这种场景下价值最大。

频繁使用浏览器/日志工具的人 —— Playwright 截图、日志读取是上下文杀手。context-mode 的沙盒化能把这些数据隔离在外。

对 token 费用敏感的人 —— 输入输出双向压缩,能显著降低 API 费用。

需要 Agent 保持长期记忆的人 —— SQLite 持久化让 Agent 不会"失忆",跨会话也能保持连续性。

GitHub:

github.com/mksglu/cont…

写在最后

context-mode 解决的是一个很实际的问题:AI 编程 Agent 的上下文瓶颈

现在的 AI 编程工具越来越强大,但上下文窗口始终是瓶颈。context-mode 的思路很聪明——不是让窗口变大,而是让内容变少。通过沙盒化、代码化思考、输出压缩,它在现有窗口限制下,极大地提升了有效信息量。

而且它的设计很完整,从输入端(沙盒工具)到输出端(压缩算法),从会话内(hooks)到跨会话(SQLite 持久化),形成了一个完整的解决方案。

如果你也在用 AI 编程工具,也在为上下文限制和 token 费用发愁,context-mode 值得一试。


关注

如果这篇文章对你有帮助,欢迎点赞、收藏、转发。我会持续分享实用的 AI 编程工具和效率优化技巧,关注我,一起用 AI 更高效地写代码。