Когда каждые 10 тысяч токенов на счету
Я обожаю кидать в контекст LLM целые файлы. Это просто — плюхнул и жди. Но когда файл переваливает за 500 строк, а модель ещё пытается удержать архитектуру проекта, прощай токен-бюджет. DeepSeek V4 Flash с его миллионным окном — штука мощная, но платить за пустые куски кода, которые агент даже не смотрит, глупо. И тут на сцену выходит vtcode — терминальный coding agent на Rust, который режет контекст не по строкам, а по AST.
vtcode на GitHub — игрушка для гиков, которым лень ждать, пока агент переварит тонну нерелевантных импортов. Инструмент собирает контекст умно: через дерево разбора кода он выкусывает только те узлы, которые реально нужны для задачи. Остальное — мимо.
Как vtcode выигрывает в токенах
В основе — три кита: ripgrep для быстрого поиска релевантных файлов, ast-grep для точного распознавания AST-узлов (функций, классов, типов) и токен-бюджет, который vtcode сам высчитывает под DeepSeek V4 Flash. Агент не шлёт модельке весь файл, а достаёт только нужные куски, обрезая импорты, комментарии и обвязку.
Звучит логично, но есть нюанс: на практике это превращается в настоящий контекстный движок. Подобные идеи мы разбирали в статье "RAG сломался? Как построить контекстный движок для управления памятью, компрессией и токенами", только там речь шла об общем RAG, а vtcode затачивается именно под код.
Проверил на проекте из 20 тысяч строк. Стандартный подход (скормить все файлы) выжигал 80% контекстного окна впустую. vtcode с AST-чáнкингом сократил расход токенов в 3-4 раза. DeepSeek V4 Flash отрабатывал быстрее, а ответы стали точнее — меньше шума, больше логики.
На голову выше конкурентов копипаста
Сравнивать vtcode с тем же Claude Code или Aider — дело неблагодарное. Там заточка под стандартные промпты, а здесь — под осознанное управление контекстом. Aider с его map-файлами тоже неплох, но он рефачит весь файл. Cursor использует грубый chunking по строкам — быстро, но тупо. vtcode же через ast-grep точно знает, где начинается и заканчивается функция. Это уровень выше.
Прямой альтернативы из open-source почти нет. Есть Continue.dev, но он тяжелый и про IDE. А vtcode живёт в терминале — легковесный, без Electron и лишних зависимостей. Rust TUI даёт ещё и молниеносный запуск, что для агентирования критично.
Пример из практики: рефакторинг Rust-крейта
Допустим, нужно переименовать метод и изменить его сигнатуру во всём проекте. vtcode запускает ripgrep, находит упоминания, затем ast-grep выкусывает определения функций, импорты и вызовы, касающиеся только этого метода. Всё остальное — чужой код, AST-фильтр его отбрасывает.
На выходе — 15 кило токенов вместо 50. LLM видит только релевантные куски и выдаёт правки без бреда. Агент сам модифицирует файлы с помощью понимания структуры — не пляшет вокруг отступов. Если вы ловили ситуацию, когда AI-агент в LangChain начинал забывать всё через 20 минут, как описано в материале про контекстную амнезию в LangChain Deep Agents, то vtcode — один из ответов: меньше контекста — меньше шансов на амнезию.
Как работает токен-бюджет под капотом
vtcode высчитывает доступное окно для DeepSeek V4 Flash (1 млн токенов) и выделяет часть на системный промпт, часть — на диалог, а остаток — на контекст кода. AST-чанки взвешиваются: на каждый узел — своя цена в токенах. Агент приоритезирует самые важные куски (проекция на граф вызовов).
Если вдруг контекст всё же переполняется, vtcode эвристически сжимает или отбрасывает менее важные узлы. Здесь прослеживается параллель с архитектурой, описанной в статье "DeepSeek-V4: как работает миллионный контекст для AI-агентов" — эффективность инференса KV cache и сокращение FLOPs напрямую зависят от того, что и в каком количестве подаёшь в модель.
Кому vtcode реально пригодится
- Разработчикам, которые пишут на языках с богатой статикой (Rust, Go, TypeScript, Python) — ast-grep покрывает их хорошо.
- Фанатам DeepSeek V4 Flash, которые хотят выжать максимум из его контекстного окна, не сжигая токены на мусор.
- Тем, кто строит свои AI-агенты — vtcode можно использовать как компонент для контекстной инженерии. Например, как часть пайплайна, описанного в разборе архитектуры QuillCode.
- Хейтерам утечек токенов — если ваш счёт за API вырос до космических сумм, vtcode может сократить расходы в разы.
Не советую использовать vtcode, если ваш проект — копипаста из одного файла на Go без типов. AST там будет просто завывать от скуки. Или если вы работаете с чистым C — ast-grep там не так силён.
Запуск за минуту
Установка: cargo install vtcode или бинарник с releases. Настраиваете — указываете ~/.vtcode.toml с моделью DeepSeek V4 Flash и токенами. Запускаете vtcode chat и видите TUI с логами чанкинга. Всё летает, потому что Rust.
Приятная мелочь — встроенный прогресс-бар, показывающий сколько токенов сэкономил AST-фильтр. Соревновательный элемент: хочется выжать 80% экономии.
Почему я больше не копирую файлы вручную
vtcode не идеален — он ещё сыроват, документация скупая, для некоторых языков ast-grep выдаёт неполные узлы. Но подход с AST-разбиением контекста — единственный разумный путь для coding agents, если мы не хотим кормить LLM тоннами мусора. А с учётом выхода DeepSeek V4 Flash с его гигантским окном, lSP-подобные чанкеры взлетят — это только начало.