Context Mode:让 AI 编码 Agent 的上下文窗口瘦身的开源工具

Context Mode:让 AI 编码 Agent 的上下文窗口瘦身的开源工具

上下文窗口是 AI 编码 Agent 的命脉——但它也是最脆弱的资源。一次 Playwright 截图 56 KB,读取 20 条 GitHub Issue 59 KB,一条访问日志 45 KB。用不了 30 分钟,40% 的上下文已经被原始工具输出填满。当 Agent 被迫压缩会话腾空间时,它会忘记自己在改哪个文件、任务进度到哪、用户最后要什么——然后从头再来。这就是 Context Mode 要解决的问题。

Context Mode 是一个 MCP Server + 多平台 Agent 插件,2026 年 2 月由独立开发者 mksglu(Mert Köseoğlu)发布,GitHub 现有约 25.3k Star(截至 2026-10-05)、1.6k Fork,追踪 17+ 个编码平台,在 GitHub Trending 上榜 51 天。核心实现:把工具原始输出沙箱化,仅将摘要送入上下文;同时用 SQLite + FTS5 持久化会话状态,使压缩后的 Agent 能从断点精确恢复,而非重新消化历史数据。

功能与设计原则

Context Mode 从三个维度解决”上下文危机”:

1. 上下文节省(Sandbox Tools)
不把原始输出放进对话,而是让工具在子进程里执行,只把 console.log() 结果返回给 Agent。315 KB 的原始输出压缩到 5.4 KB,减少 98%。核心工具:
– ctx_execute:运行 JS 或 Shell 脚本,只把 console.log 结果送入上下文
– ctx_batch_execute:一次调用运行多条命令或执行多个搜索
– ctx_fetch_and_index:抓取 URL 内容并索引到 FTS5,不占上下文
– ctx_index / ctx_search:对本地文件或目录建立 BM25 索引,检索时只返回相关片段

2. 会话连续性(Session Continuity)
每个文件编辑、Git 操作、任务状态、错误记录和用户决策都写入项目级 SQLite 数据库。当对话因上下文压力触发压缩时,Context Mode 不会把数据重新灌回上下文,而是将事件快照索引进 FTS5,恢复时 Agent 拿到一份结构化的 Session Guide,从上次停下的地方继续。支持 PreCompact、SessionStart 等 5 种 Hook 联动。

3. 强制路由(Think in Code)
Hook 在平台层拦截 PreToolUse 事件,将 Agent 引导至沙箱工具而非原始 Bash/Read/WebFetch。”让 LLM 写一个统计脚本并只返回结果”,而不是”把 50 个文件都读进上下文让 LLM 自己数”——这是跨全部 17 个平台的强制范式。

认可度

  • GitHub Star:约 25.3k(截至 2026-10-05)
  • GitHub Trending:2026-10-04 上榜 51 天,累计 +58.6k Star,日均 +1.2k
  • 下载量:npm 包每周数千次下载(v1.0.169,2026-06-29)
  • 平台覆盖:17 个平台,包括 Claude Code、Cursor、Codex、OpenCode、Gemini CLI、VS Code Copilot、OpenClaw/Pi Agent 等
  • 技术标签:skills、mcp、opencode、copilot、codex、claude、zed-extension、antigravity、mcp-server、mcp-tools、cursor-plugin、claude-code、codex-cli、kiro、claude-code-hooks、claude-code-plugins、claude-code-skill、pi-agent、openclaw、context-mode

链接

GitHub:https://github.com/mksglu/context-mode

原作者

mksglu(Mert Köseoğlu)—— 独立开发者、Senior Software Engineer、AI 顾问,专注于 AI 辅助编程工具链。个人网站 mksg.lu,活跃于 X(@mksglu)和 LinkedIn。

介绍

Context Mode 起源于一个具体痛点:MCP 工具每次调用都会把原始数据倾倒进上下文,而上下文窗口是有限的。当开发者用 Playwright 做 UI 测试、抓取日志、搜索代码库时,Agent 的上下文迅速被原始输出填满,真正需要理解的部分反而进不去。

项目采用 TypeScript Monorepo 结构,核心是 src/store.ts(SQLite 持久化)、src/hooks/core/(跨平台 Hook 抽象)和 src/adapters/{platform}/(各平台特定适配器)。v1.0.0(2026-03)实现了多平台适配:Claude Code 用插件市场完整集成(含 Slash Commands),其他平台通过全局 npm 包 + MCP 配置接入。v1.0.169(2026-06-29)是当前稳定版。

设计上,Context Mode 不内置权限系统——它把安全边界交给外部沙箱(Docker、OpenShell 等),自己专注上下文管理。这与 Pi Agent 的哲学一脉相承:保持核心最小,把能力边界留给用户配置。

特点

  • 98% 上下文压缩:原始工具输出 315 KB → 摘要 5.4 KB
  • 17 个平台适配:Claude Code、Cursor、Codex、OpenCode、Gemini CLI、VS Code Copilot、OpenClaw 等,覆盖主流编码 Agent
  • 会话跨压缩恢复:SQLite + FTS5 持久化,Agent 压缩后从断点继续,不丢失编辑历史
  • BM25 语义搜索:对索引内容做 AND 优先 + OR 回退的三层模糊搜索(Porter 词干 → Trigram → Levenshtein)
  • ctx_stats 实时可见:每工具 Token 节省量清晰可查,团队可量化 ROI
  • 11 种语言运行时:Node.js、Bun、Python、Go、Rust 等均有沙箱适配
  • FTS5 去重:同源内容重新索引自动替换旧记录,避免旧错误在构建循环中残留

使用方法

Claude Code(完整插件,推荐):

# 安装
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode

# 重启或 /reload-plugins,验证
/context-mode:ctx-doctor
# 所有检查应显示 [x]

# 查看上下文节省量
/context-mode:ctx-stats

其他平台(全局 MCP):

# 全局安装
npm install -g context-mode

# Claude Code MCP-only 模式(无 hooks,无 Slash Commands)
claude mcp add context-mode -- npx -y context-mode

安装完成后,Agent 在需要执行命令或读取文件时会自动被引导至 ctx_execute、ctx_index 等工具,原始 Bash/Read 工具被 Hook 拦截并替换。

使用场景与人群

适用场景:
– 长时间复杂项目开发(上下文容易被工具输出撑满)
– 多 Agent 并行协作(各 Agent 共享 SQLite 状态,互补干扰)
– 团队使用编码 Agent 的 Token 成本管控(ctx_stats 提供可见的 Token 节省报告)
– 需要 Agent 在会话压缩后精确恢复断点的生产环境

目标用户:
– 日常重度使用 Claude Code、Cursor、Codex 等编码 Agent 的开发者
– AI 工程团队需要量化 Agent 使用效率
– 需要在资源受限环境下运行大上下文窗口模型的团队

输入与输出案例

案例 1:批量搜索代码库

传统方式(10 次 Read 工具调用,上下文消耗大):
Agent 依次读取 10 个文件目录,原始输出 ~200 KB 进入上下文。

使用 Context Mode:

ctx_batch_execute --commands ["grep -r 'useState' src/", "grep -r 'useEffect' src/", "wc -l src/**"]

输出:useState: 42 处,useEffect: 28 处,总行数:14,832 — 仅 ~200 字节进上下文。

案例 2:会话压缩后恢复

场景:Agent 正在重构 auth/ 目录,改了 8 个文件,突然上下文压缩触发。

无 Context Mode:Agent 丢失改了什么、从哪继续,需要用户重新描述上下文。

有 Context Mode:压缩前 PostToolUse Hook 已把所有编辑事件写入 SQLite,FTS5 索引了 diff 摘要。压缩后 Agent 收到结构化 Session Guide:

[Session Resume]
文件编辑:auth/login.ts, auth/logout.ts, auth/token.ts ... (8 files)
进行中:重构 auth/ 模块,移除 callback-based 认证
错误记录:1 个 linter warning in auth/token.ts
继续指令:输入 --continue 从 auth/token.ts 的 linter warning 继续

Agent 无需重新阅读历史,直接从断点继续。


GitHub: https://github.com/mksglu/context-mode

评论区

0 条评论

登录后可评论。

Skill超级捕获手 65 阅读