21 сентября 2026 г.
Решает не протокол, а среда исполнения: код вместо MCP-вызовов срезал расход на 98,7%
Разница между MCP и CLI не в протоколе, а в том, есть ли у агента среда, которая помнит состояние между вызовами.

tobi lutke
@tobi
MCP против CLI для LLM — неправильный спор. Люди спорят не о том слое. И то и другое работает отлично, пока запускается через среду вроде REPL, которая умеет хранить состояние. Забавно, что к CLI-инструментам обычно ходят через BASH, а он как раз и есть REPL с постоянным состоянием (файловая система), поэтому CLI и работает куда лучше MCP. Но это даже близко не врождённое свойство MCP. Просто нам нужны обвязки получше. Сейчас лучшие REPL для этого такие: - bash + файловая система - ядра jupyter - REPL типа codemode, обычно quickjs LLM отлично понимают идею последовательно развивать систему под нужную задачу. Это пришло из агентного RL. Они понимают, как менять состояние кодовой базы или доставать данные из баз и потом работать с ними, примерно как люди. Но без среды исполнения сделать это толком они не могут. Моя ставка? Скоро кто-нибудь сделает (а может, уже сделал?) встраиваемое мини-окружение исполнения в духе sqlite, которое разбирает bash, typescript или tool-вызовы в общий IL-план исполнения, легко проверяемый на безопасность перед запуском. И спроектирует его специально под долгоживущие среды исполнения. А дальше мы просто подключим к нему cli, mcp, webmcp, что угодно, и оно примет любую входную модальность, потому что все они выражаются друг через друга.
· 32,7 тыс. просмотров
CLI и MCP прошли один и тот же набор задач с одинаковым успехом. Разошлись они в токенах: 1,3–2 млн у CLI против 35 тысяч у MCP.
Дело оказалось не в протоколе. Оба пути работают, когда агент запускает их в среде, которая помнит состояние между вызовами, и оба буксуют, когда такой среды нет.
Почему bash выигрывал. К CLI-инструментам агент ходит через bash, а bash хранит состояние в файловой системе: записанный файл лежит между командами и никуда не девается. У MCP такой памяти между вызовами не было, поэтому связка с терминалом и выглядела сильнее.
Замер, откуда взяты эти токены, публичный и пока единственный на одинаковом инструменте: terminalcp, 3 задачи по 10 прогонов в Claude Code, август 2025. CLI жёг контекст потому, что каждый вызов bash проходил проверку на опасные команды. Автор замера свёл разницу к дизайну конкретного инструмента, а протокол назвал водопроводом.
Anthropic проверила ту же мысль у себя и срезала расход со 150 000 токенов до 2 000, то есть на 98,7%. Рецепт несложный. MCP-серверы выкладывают деревом файлов `servers/<сервер>/<tool>.ts`, каждый файл оборачивает один инструмент, а агент пишет по ним обычный код.
Среду можно взять сегодня. 6 сентября 2026 вышел langchain-quickjs 0.3.7 с JS-песочницей на QuickJS, которая помнит состояние между вызовами. Ставится через `pip install langchain-quickjs`, включается как `CodeInterpreterMiddleware()` в `create_deep_agent`. По умолчанию даёт 64 MiB памяти и 5 секунд на вызов, файловой системы и сети внутри нет.
Cloudflare Code Mode подключается тремя строками в Agents SDK и гоняет код в V8-изоляте, локально он работает на Wrangler. У Anthropic состояние REPL появилось в инструменте `code_execution_20260120`, контейнер даёт 5 GiB памяти, живёт 30 дней и переиспользуется передачей его id.
Anthropic отдаёт 1550 часов исполнения в месяц на организацию бесплатно, дальше берёт $0,05 за час за контейнер. Чтобы агент звал ваши инструменты прямо из кода, в их определение добавляют поле `allowed_callers`. На агентных бенчмарках это дало +11% качества при 24% меньше входных токенов.
Общего плана исполнения, в который одинаково ложатся bash, TypeScript и tool-вызовы, пока не собрал никто.
Первоисточник
