context-mode 深度评测:3.1 万 Star 的上下文插件省 98% 是真的,19 条泄洪命令实测 16 条放行

你大概撞过这堵墙:用 AI 编码助手干活,聊上半小时它开始「失忆」——刚改过的文件忘了,刚才的任务忘了,你上一条消息也忘了。很多人以为是模型不够聪明,其实更常见的原因是上下文被工具输出撑爆了。一次日志查询、一次跑测试、一个网页抓回来,几十 KB 的原始数据就这么灌进对话窗口。

有个 3.1 万 Star 的开源插件专门堵这个口子,名叫 context-mode(可以理解成「上下文模式」)。它的说法很硬:把大块数据关起门来处理,只让结论回到对话里,能省下 98% 的上下文。我把它拷进隔离沙箱翻了一遍:这个数字是真的,我手里几份样本甚至更省。但同样在这次实测里,它承诺的「自动拦截」只覆盖了 19 条常见命令中的 2 条。

它是什么

context-mode 是装给 AI 编码助手用的插件,Claude Code、Cursor、Codex 这类工具都能装。它主要想解决两件事:

  • 别让原始数据进上下文:给它一段代码,它在单独的子进程里跑,只把打印出来的结果交回来。
  • 别让对话失忆:把每次文件改动、命令、决定记进本地数据库,压缩对话后还能按关键词搜回来。

它还有一路「检索式」用法:先把文档、日志切块存进本地全文索引,需要时按问题搜出相关片段,而不是整篇塞进去。

真正值得看的是它拦什么、放什么:

它想管的事 它的做法
抓网页(curl、wget、WebFetch) 改写成一句提示,让你改用沙箱里的抓取工具
内联发网络请求 同样改写成提示
gradle、maven、sbt 构建 改写,让你把构建放进沙箱跑
读大文件、全文检索、跑测试、看日志 只在你第一次触发时提醒一句

实测:省下的数字站得住,拦下的命令站不住

先说省。它仓库里放了 21 组真实样本——一份 85.5 KB 的埋点表格、一份 45.1 KB 的 nginx 访问日志、一份 58.9 KB 的 GitHub issues 导出。我用它自带的执行器跑了一遍:

样本 原始 进上下文 节省
埋点表格(500 行) 85.5 KB 79 字节 99.9%
nginx 访问日志(500 条) 45.1 KB 92 字节 99.8%
GitHub issues 导出 58.9 KB 17 字节 99.9%
git 提交历史 11.6 KB 11 字节 99.9%

这个方向没得挑。它给你一个子进程,你写几行代码把统计做完,窗口里只留一行结论。我另外试了「检索式」那一路:四份文档共 32.7 KB,三个问题各取回三条片段,进上下文 5.59 KB,省 82.9%,和它文档里给这类用法标的 82% 基本吻合。问文档里根本没有的东西(比如「怎么部署到 k8s」),它会返回零条,不硬凑。

省是真省。问题出在它承诺的另一半:它说装上钩子就会「自动拦截」,之后不用你操心。

我把它的路由逻辑单独抽出来,喂了 19 条最典型的命令,结果是这样:

我喂的命令 它的反应
curl -s https://… 直接把网页打到屏幕 拦下,改写
curl -s -o 文件 https://… 存成文件 放行
tail -n 2000 日志(第一次) 追加一次提示
同一条 tail(同会话第二次起) 放行
grep -rn ERROR src/ 放行
find . -name '*.ts' 放行
ls -R src/ 放行
git log -p -n 200 放行
gh pr view 123 --json body,comments 放行
kubectl logs --tail=5000 放行
docker logs 容器名 放行
cat 一个大文件 放行
npm test / npm run build 放行

19 条里,改写拦下 2 条,只提醒一次 1 条,其余 16 条原样通过。

这不是我挑得刁。它的设计就是这样:只在「结构上一定短小」的命令上主动放行(比如 pwd、git status),其余走一句「建议用沙箱」的提醒,而且每个会话只提醒一次。也就是说,第一次 tail 之后,助手再查多少次日志,它都不再吭声。真正能改变行为的只剩提示词,而提示词管不住它读不读日志。

这里还有一层措辞值得说清。它宣传里的「沙箱」只是另起一个子进程,并没有把文件和网络隔开。我在里面读了系统用户文件、读了家目录下的文件、往临时目录写了东西、还抓了一次公网,全部成功。这本身不算毛病——它要的是「数据不进口上下文」,不是「防住恶意代码」。但读者很容易把「沙箱」理解成后者,文档里「完全隔离」的说法撑不起这个想象。

它自己的文档,九处改动一处没响

一个项目可不可信,最后看它有没有本事守住自己的话。我把它的仓库当成被测对象,做了两组注入。

第一组改代码:把工具名前缀改错、把抓网页的拦截整段拆掉、把函数返回类型改错、让版本号只改一半。四道闸门——类型检查、打包产物断言、插件入口检查、单元测试——四发四中,全红。

第二组改文档,一次只动一处,跑同一套闸门:

我改的地方 闸门反应
首页主标语「98%」改成「99.9%」 全绿
基准报告的总节省 96% 改成 99.9% 全绿
把基准报告里 20 行实测数据整段删掉 全绿
测试总数 125 改成 1250 全绿
安装量徽章 69.97 万改成 990 万 全绿
技能说明里「拿不准就用它」反写成「拿不准就用原始命令」 全绿
平台表里把 Claude Code 从「有钩子、省 98%」改成「无钩子、省 0%」 全绿
隐私段「不上传任何数据」改成「默认采集遥测」 全绿
许可证从 ELv2 改成 MIT(和仓库里的许可文件矛盾) 全绿

九处,零拦截。仓库里没有一条测试或脚本拿基准报告和首页当数据源——它守的是代码能编译、打包没坏、版本号一致,唯独不守「我们宣称自己做到了什么」。

这组数字本身也有松的地方。基准报告开头写「21 个场景」,两张表加起来只有 20 行。总账写「376 KB 变成 16.5 KB,省 96%」,按它自己的分项算出来是 95.6%,四舍五入到 96 需要一点善意。有一行「网络请求」标 13% 节省,按原始字节算是 14.8%。另有两行标着 100%,实际分别还剩 155 字节和 222 字节。都是小账,但一份用来佐证「98%」的报告,小账该更紧一点。

顺带说一句首页。顶部有一排企业徽章——微软、谷歌、Meta、亚马逊等 18 个名字,底下写着「以下团队在用」。那 18 个链接全部指向空锚点,点不动。这不是造假证据,但也不是能点开的证据。

同类里的位置

省上下文这条道上,它站的位置很特别。之前评测过的 caveman(10.8 万 Star)走的是「让 AI 少说废话」:用提示词约束输出,省下的主要是模型自己的啰嗦,官方简介写省 65%、自家文档只认 8.5%。context-mode 不碰说话方式,它搬走的是工具塞进来的数据——这是另一半,也是更硬的一半。

再往前看,Graphify(12.5 万 Star)用代码知识图谱省调用费(也就是模型按字数计的额度),官方宣称 71.5 倍、我复算 38.3 倍;agentmemory(2.9 万 Star)做记忆,官方 95.2% 的「答案找齐」率换成实际评测只剩 81.8%。这条道上的共同点是:省的量级大多能复现,宣称的精度普遍要打折。context-mode 在这一点上算体面——它的 98% 我复出来在 99% 以上,方向没错。

代价也有。装上钩子后,每个会话开头会注入一段约 6800 字符的行为规则(英文约 1700 个词元,也就是模型计费时说的那一种计量单位)。对一次长会话不算什么,对一堆短任务就是纯开销。

适合谁:每天用 AI 编码助手处理大量日志、测试输出、网页抓取的人。子进程和本地检索确实能让窗口干净很多,省下的量我能复现。

不适合谁:指望它「装上就自动管住助手」的人。它真正硬拦的只有抓网页和三种构建工具;其余靠一句每个会话只出现一次的提醒。想让助手老实走沙箱,还得在项目规则里自己写死——这恰恰是它想替你省掉的那件事。

我的判断

值得装,但别按宣传理解它。把它当成「一个更好用的数据处理器加一块本地检索库」,你会很满意:一份 85 KB 的表格进去,79 字节的结论出来,这一手确实漂亮。把它当成「上下文守门员」,你会失望——门装了,大部分时候只是挂在那儿。

真要用得踏实,建议补两件事:一是把「读日志、跑测试、看 diff 必须走沙箱」写进你自己的项目规则,别指望钩子;二是装完后拿它给的那份基准报告,对着手头的真实任务复一遍,看省下的比例还在不在同一量级。

省 98% 是它最好的一张牌,而这张牌恰恰是它自己最没闸门守的一张。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

相关阅读:

发表评论