context-mode — экономия контекста и непрерывность сессий для ИИ-агентов
📂 Исходный код на GitHubMCP-сервер для решения проблемы контекста: sandbox-инструменты хранят сырые данные вне окна, события индексируются в SQLite и ищутся через FTS5/BM25, а агент продолжает работать после компректирования.
context-mode — вторая половина проблемы контекста
Каждый вызов MCP-инструмента сбрасывает сырые данные в твоё контекстное окно. Снапшот Playwright занимает 56 КБ, двадцать GitHub-ишью — 52 КБ, один лог доступа — 45 КБ. После получаса работы 40% контекста уже потеряно. А когда агент сжимает диалог, чтобы освободить место, он забывает, какие файлы редактировал, какие задачи в процессе и что было последней просьбой. Вдобавок агент тратит выходные токены на «воду», комплименты и многословные объяснения — сжигая контекст с обеих сторон.
context-mode — это MCP-сервер, который решает все четыре стороны этой проблемы: экономию контекста, непрерывность сессий, мышление в коде и отказ от навязывания стиля. Помимо этого, README сообщает о первом месте на Hacker News (570+ очков) и использовании в командах Microsoft, Google, Meta, Amazon, IBM, NVIDIA и других.
Как решается проблема: четыре стороны
1. Экономия контекста. Sandbox-инструменты держат сырые данные вне контекстного окна. 315 КБ превращаются в 5,4 КБ — сокращение на 98%.
2. Непрерывность сессий. Каждое редактирование файла, git-операция, задача, ошибка и решение пользователя отслеживаются в SQLite. Когда диалог компректируется, context-mode не сваливает все данные обратно в контекст — он индексирует события в FTS5 и возвращает только релевантное через BM25-поиск. Модель продолжает ровно с того места, где остановилась. Если не передать флаг --continue, данные прошлой сессии удаляются немедленно — свежая сессия означает чистый лист.
3. Мышление в коде. Модель должна программировать анализ, а не вычислять его. Вместо чтения 50 файлов в контекст ради подсчёта функций агент пишет скрипт, который считает и console.log()-ит только результат. Один скрипт заменяет десять вызовов инструментов и экономит контекст в 100 раз. Это обязательная парадигма во всех 17 поддерживаемых клиентах плюс интеграция со шлюзом OpenClaw: перестать относиться к LLM как к процессору данных, относиться к нему как к генератору кода.
// До: 47 × Read() = 700 КБ. После: 1 × ctx_execute() = 3.6 КБ.
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'));
`);
4. Без навязывания стиля. context-mode держит сырые данные вне контекста, но никогда не диктует модели, как оформлять финальный ответ. Краткость, полнота, форматирование — выбор модели (или твой через собственные CLAUDE.md / AGENTS.md). Агрессивные промпт-ограничения на краткость, как показано на kimi-k2.5, деградируют бенчмарки кодинга и рассуждений — поэтому роутинговый блок фокусируется на том, куда идут данные, а не на том, как модель говорит.
Установка
Платформы с поддержкой хуков получают автоматическое принудительное маршрутизирующее поведение. Платформы без хуков требуют разового копирования файла маршрутизации.
Claude Code — плагин-маркетплейс, полностью автоматически:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
Провериться можно командой /context-mode:ctx-doctor — все проверки должны показать [x]. Хук SessionStart внедряет инструкции маршрутизации в рантайме, ничего в проект не пишется. Плагин регистрирует все хуки (PreToolUse, PostToolUse, UserPromptSubmit, PreCompact, SessionStart, Stop) и 11 MCP-инструментов: шесть sandbox-инструментов (ctx_batch_execute, ctx_execute, ctx_execute_file, ctx_index, ctx_search, ctx_fetch_and_index) и пять мета-инструментов (ctx_stats, ctx_doctor, ctx_upgrade, ctx_purge, ctx_insight).
Слэш-команды Claude Code:
| Команда | Что делает |
|---|---|
/context-mode:ctx-stats |
Экономия контекста — разбивка по инструментам, потраченные токены, коэффициент экономии |
/context-mode:ctx-doctor |
Диагностика — рантаймы, хуки, FTS5, регистрация плагина, версии |
/context-mode:ctx-index |
Индексация локального файла или каталога в постоянную базу FTS5 |
/context-mode:ctx-search |
Поиск по ранее проиндексированному контенту |
/context-mode:ctx-upgrade |
Обновление, пересборка, миграция кэша, починка хуков |
/context-mode:ctx-purge |
Полное удаление проиндексированного контента |
/context-mode:ctx-insight |
Открывает hosted-панель Insight (context-mode.com/insight) — аналитика для инженерных команд |
Строка статуса (опционально). Плагин не может декларировать строку статуса в манифесте, поэтому это разовая ручная правка ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "context-mode statusline"
}
}
После перезапуска можно видеть накопление экономии в реальном времени: $ saved this session · $ saved across sessions · % efficient. Привязка не зависит от пути — context-mode statusline разрешается через собранный CLI.
Альтернатива — MCP-only без хуков:
claude mcp add context-mode -- npx -y context-mode
Даёт все 11 MCP-инструментов без автоматической маршрутизации. Модель может ими пользоваться, просто её не будут подталкивать. Хорошо для пробной версии перед полным плагином.
Gemini CLI — один конфиг, хуки в комплекте. Требуется Node.js >= 22.5 и глобальная установка npm install -g context-mode. Затем в ~/.gemini/settings.json регистрируется MCP-сервер и четыре хука (BeforeTool, AfterTool, PreCompress, SessionStart). Матчер BeforeTool нацелен только на инструменты с большим выводом (run_shell_command, read_file, read_many_files, grep_search, search_file_content, web_fetch, activate_skill) плюс собственные инструменты context-mode — это исключает лишние накладные расходы на лёгких инструментах. Проверка — /mcp list должен показать context-mode: ... - Connected. Можно также скопировать файл маршрутизации для полной осведомлённости модели.
Поддерживаемые клиенты
Проект поддерживает 17 клиентов, включая Claude Code, Gemini CLI, VS Code Copilot, OpenCode, Codex и интеграцию со шлюзом OpenClaw. Основой служить better-sqlite3 — быстрая и надёжная встраиваемая база SQLite для индексации и хранения событий.
Итоги
context-mode атакует контекст с двух сторон: не пускает сырые данные в окно и сохраняет представление агента о текущей работе, чтобы после сжатия диалога он не «забывал» всё. Для команд с дорогими топовыми моделями это ощутимая экономия токенов и меньше боли с потерянным контекстом. Это полноценный роутинг данных и логики непрерывности, а не просто хранилище памяти.
Источник: https://github.com/mksglu/context-mode