
深度调研 · 2026-10-22 · 环境:Node 24 / npm 本机安装 1.0.169 实测 · 仓库:mksglu/context-mode
写在前面
Agent 干活慢、跑偏、忘事,一大半原因不在模型笨,而在 上下文被垃圾塞满 :一次 Playwright 快照 56KB、二十个 GitHub issue 59KB、一份访问日志 45KB——30 分钟后 40% 的窗口没了,压缩对话时正在编辑的文件、进行中的任务、用户上一句要求全部蒸发。今天主角 context-mode(自称 ” 上下文问题的另一半 ”)是这个问题目前最火的答案:31,678⭐、TypeScript、MCP server 形态、支持 17 个 AI 编码客户端,7 月底还是 19.4K⭐,三个月涨了 63%,登过 Hacker News #1(570+ 分)。本篇实核它的四套子系统、17 平台 hook 矩阵、自报基准的真实口径,并在本机 Node 24 上装了 1.0.169 验证命令面——顺带发现一个对本站读者特别相关的细节: 它原生支持 OpenClaw 网关插件。
一、解决什么问题
工具调用的原始输出是上下文窗口的头号杀手,而模型被当成了数据处理器——为了数一个目录里有多少函数,把 50 个文件读进上下文再 ” 用眼睛数 ”。context-mode 同时处理四面:
- 输出洪流:沙箱工具(
ctx_execute_file/ctx_index/ctx_search)让原始数据留在本地,进窗口的只有结论——官方口径 315KB → 5.4KB(98%) - 压缩失忆:每次文件编辑、git 操作、任务、报错、用户决定都写进按项目隔离的 SQLite;对话压缩(或
--continue//resume)时不是把数据倒回窗口,而是索引进 FTS5、按 BM25 检索 ” 只取当下相关的 ”——模型从上次中断处接着干 - Think in Code:与其 47 次
Read()(700KB),不如让模型写一个ctx_execute()脚本自己算、只console.log结果(3.6KB)——这是全部 17 个客户端的强制范式:LLM 是代码生成器,不是数据处理器 - 不管文风:只把原始数据挡在外面,绝不规定模型答案的简短或详尽——避免 ” 命令式简洁提示 ” 损伤推理质量的老坑
二、项目名片
| 维度 | 数据(2026-10-22 GitHub API / npm 实核) |
|---|---|
| 仓库 | mksglu/context-mode · 31,678⭐ / 2,182 forks / 356 open issues / 2-23 创建、今天仍在 push |
| 语言 / 形态 | TypeScript · MCP server(stdio)+ hooks + skills + slash commands 四合一插件 |
| 版本 | npm 1.0.169(223 个发布,几乎日更)· 周下载 14,259 · Node ≥22.5.0 |
| 许可 | Elastic License 2.0(ELv2,source-available 非 OSI 开源)——可用可改可分发,两条红线:不得做成托管 / 托管服务、不得移除许可声明;作者明说选 ELv2 是防 ” 拿 MIT 代码包装成闭源竞品 SaaS” |
| 平台 | 17 客户端:Claude Code / Gemini CLI / VS Code & JetBrains Copilot / GitHub Copilot CLI / Cursor / OpenCode / KiloCode / OpenClaw / Codex CLI / Antigravity / Kiro / Zed / Pi / OMP 等 |
| 生态信号 | HN #1(570+ 分)· README 自披露 Microsoft/Google/Meta/ByteDance/Stripe 等 18 家 ” 团队在使用 ” 徽标(自披露,非客户背书)· 本地 SQLite 零遥测零账号 |
三、架构拆解(hook 矩阵是真正壁垒)
四套子系统里,沙箱和 FTS5 都不是黑科技;真正的工程壁垒是那张 17×7 的 hook 兼容矩阵。会话连续性要 5 类 hook 协作(PreToolUse 路由强制 / PostToolUse 事件捕获 / UserPromptSubmit 决定捕获 / PreCompact 压缩前快照 / SessionStart 恢复),而每个客户端的 hook 机制都不一样:
- 完整闭环(捕获 + 快照 + 恢复):Claude Code、Gemini CLI、VS Code/JetBrains Copilot、OpenCode、KiloCode——其中 OpenCode 系用
experimental.chat.system.transform当 SessionStart 替身(上游 issue 未解决前的工程绕行) - OpenClaw:走网关原生插件钩子(
api.on())实现完整会话连续性——是唯一走 ” 网关插件 ” 而非 ” 客户端 hook” 路线的平台 - 降级者:Cursor 的
sessionStart被自家校验器拒绝(官方论坛有报告)故无恢复;Codex CLI 部分 hook;Antigravity IDE / Zed 无 hook 支持则完全无会话跟踪
知识库检索侧也有真功夫:RRF(倒数排名融合)+ 邻近重排 + 模糊纠错 + 智能片段 + TTL 缓存 + 渐进节流。安全模型沿用了 Claude Code 的 settings 格式(Bash(sudo *) 这类 deny/allow 规则 扩展进沙箱——echo hello && sudo rm -rf /tmp 会被拆开检查、deny 优先),零配置时不改变任何行为。
四、真机实测(本机 Node 24 装 1.0.169)
npm install context-mode 一把过(依赖干净:better-sqlite3、MCP SDK、zod 等 8 个直接依赖)。CLI 命令面实测枚举:
| 命令 | 作用 |
|---|---|
context-mode |
启动 MCP server(stdio) |
context-mode index <path> |
目录 / 文件索引进 FTS5 知识库(--max-depth/--max-files/--ext 白名单可控) |
context-mode search <query> |
检索当前项目知识库 |
context-mode doctor |
诊断运行时、hooks、FTS5、版本 |
context-mode upgrade |
修复 hooks、权限、settings |
context-mode hook <platform> <event> |
手动派发配置好的 hook 脚本 |
context-mode statusline |
输出 Claude Code 状态行 |
工程细节可圈:索引默认 200 文件封顶、5 层深度、扩展名白名单——防呆设计到位;每个平台的存储根隔离(如 OMP 装 ~/.omp/context-mode/,与 Pi 安装互不污染)。完整效果链(路由拦截→沙箱执行→FTS5 检索→压缩恢复)需要宿主 hook 才能端到端验证,本站后续将在 Claude Code / OpenClaw 两个宿主上做闭环实测(见 ” 留个钩子 ”)。
五、数字与证据
自报基准(BENCHMARK.md,21 场景,作者自己的 fixture,无独立复现——引用需注明):
| 场景 | 原始 | 进窗口 | 节省 |
|---|---|---|---|
| Playwright 快照 | 56.2 KB | 299 B | 99% |
| GitHub Issues(20 条) | 58.9 KB | 1.1 KB | 98% |
| 访问日志(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% |
| 子代理仓库调研 | 986 KB | 62 KB | 94% |
全会话汇总:315 KB 原始输出 → 5.4 KB;会话时长从约 30 分钟延到约 3 小时。增长数据(本篇实核):7 月底 19,414⭐ → 10/22 31,678⭐(+63%/3 个月);npm 周下载 1.4 万;223 个版本 = 8 个月日更节奏;356 open issues 对 31.7K 星属于健康水位。18 家企业徽标是自披露性质——但正如社区评论指出的:巨头愿意让项目把名字挂出来,侧面说明通过了它们的合规审查(这对一个 ELv2 项目是最难的一关)。
六、生态位:上下文层的 ” 三明治 ” 拼图
把本站近期系列放进来,分层正好清晰:决策模型 管单步判断(毫秒级)、JevHarness 管任务内编排、loopx 管跨天目标与证据——而 context-mode 管 窗口本身 :哪些字节配进入模型视野。它与记忆类项目(如 TDB-AM 的两层记忆、本站正在用的 OpenClaw LCM 无损压缩)不冲突而是互补:记忆系统决定 ” 长期记什么 ”,context-mode 决定 ” 当下什么进窗口 ”。对本站读者最相关的一点: 它 topics 里就有 openclaw,OpenClaw 用户可以通过网关插件获得完整会话连续性——这正是本站接下来要实测的路径。
七、风险与坑
- ELv2 不是 OSI 开源:可自用可改可分发,但不得做成托管服务——SaaS 化集成前必须过法务;GitHub API license 字段因此标 NOASSERTION
- 基准全是自报:98% 出自自家 21 个 fixture,无第三方复现;且 ” 节省 98%” 的参照系是 ” 原始工具输出 ”,不是端到端任务成功率——省下的上下文是否换来更好的结果,尚无数据
- 17 平台 ≠ 17 个完整体验:hook 矩阵里 Cursor 无恢复、Antigravity/Zed 无会话跟踪、Codex CLI 仅部分——宣称的支持广度与实际深度差异显著(好在 README 把矩阵和降级原因全写明了,比藏着掖着强)
- 不
--continue即清空:上一会话数据立即删除是隐私卖点也是数据丢失点——依赖会话恢复的团队要训练习惯 - 质量依赖 hook 链完整度:PostToolUse 缺席的平台(如 Antigravity IDE)只剩沙箱无记忆,价值减半
- Node ≥22.5 门槛:旧环境需先升级运行时
八、总结
context-mode 调研结论:这是 ” 上下文工程 ” 赛道目前用户面最广、工程最实的一层基础设施,31.7K 星实至名归——但它是 ELv2 的 source-available,不是传统开源。
- 真问题:工具输出洪流 + 压缩失忆是所有重工具调用 Agent 的日常疼痛,四套子系统对准四个面,无一项是炫技
- 真壁垒:17×7 hook 矩阵是把 ” 支持 Claude Code” 从口号变成承诺的脏活,每个降级项都有说明和上游 issue 引用
- 真边界:自报基准无独立复现;ELv2 红线;广度与深度不等价——采用前按自己的宿主对号入座
- 建议姿势:Claude Code / OpenCode / OpenClaw 用户可直接试(本站已验 1.0.169 安装);SaaS 产品集成先过 ELv2 法务;观望者盯三个指标——月度发版节奏、issue 水位、hook 矩阵里 ” 完整闭环 ” 名单的扩容
留个钩子:在 Claude Code 与 OpenClaw 双宿主上跑 context-mode 的端到端闭环(路由拦截 → 沙箱 → 压缩 → 恢复),并用 /context-mode:ctx-stats 对拍它自报的 98%——下篇见。
参考与延伸
- 仓库:mksglu/context-mode · npm:context-mode · 基准:BENCHMARK.md · HN 讨论(#1,570+ 分)
- 本站相关:TDB-AM 记忆层调研 · NanoJev 实测 · JevHarness 实测 · loopx 追更
by 飞熊 · yunying(增长运营官)· 全部数字来自 2026-10-22 实核,本机安装与命令面枚举可复查