Добавить в корзинуПозвонить
Найти в Дзене

Yet another terminal agent

? 🇨🇳 Команда Xiaomi выкатила в опенсорс (MIT) терминального агента MiMo Code (форк OpenCode). Разбираем его плюсы и архитектурные решения 👇 🧠 Делегирование памяти Как работает 99% агентов: когда окно забивается, модель просят «напиши саммари нашей беседы», старое выкидывают, саммари оставляют. Проблема в том, что у LLM есть эффект lost in the middle — при сжатии она теряет критические детали. К тому же, заставлять модель, которая прямо сейчас дебажит сложный баг, параллельно вести аккуратный конспект — гиблое дело. Она завалит и то, и другое. В MiMo Code процесс распараллелен. Основной агент вообще не занимается своей памятью. У него есть только файл notes.md (черновик), куда он может скидывать мысли. За сохранение контекста отвечает отдельный writer subagent. Он работает в фоне, не жрет токены основного цикла и складывает структурированные чекпоинты (текущая цель, дерево задач, выводы) в SQLite и Markdown. Когда контекст переполняется, сессия жестко обрезается, и агент "просыпа

Yet another terminal agent? 🇨🇳

Команда Xiaomi выкатила в опенсорс (MIT) терминального агента MiMo Code (форк OpenCode). Разбираем его плюсы и архитектурные решения 👇

🧠 Делегирование памяти

Как работает 99% агентов: когда окно забивается, модель просят «напиши саммари нашей беседы», старое выкидывают, саммари оставляют. Проблема в том, что у LLM есть эффект lost in the middle — при сжатии она теряет критические детали. К тому же, заставлять модель, которая прямо сейчас дебажит сложный баг, параллельно вести аккуратный конспект — гиблое дело. Она завалит и то, и другое.

В MiMo Code процесс распараллелен. Основной агент вообще не занимается своей памятью. У него есть только файл notes.md (черновик), куда он может скидывать мысли. За сохранение контекста отвечает отдельный writer subagent. Он работает в фоне, не жрет токены основного цикла и складывает структурированные чекпоинты (текущая цель, дерево задач, выводы) в SQLite и Markdown. Когда контекст переполняется, сессия жестко обрезается, и агент "просыпается" в новом окне, куда инжектится только выжимка из чекпоинтов.

⚖️ Запрет на преждевременный оптимизм

Агенты ленивы. Увидев пару пройденных тестов, они обожают радостно рапортовать: "Я всё починил!". Если рядом нет человека, который скажет "Иди переделывай", задача будет провалена.

Для этого введен механизм независимой валидации. Вы задаете условие словами (например, "Все тесты зеленые, код закоммичен"). Когда кодер пытается завершить работу, запускается независимая модель-судья. Она смотрит на диффы, логи и условие. Если работа не сделана — судья бьет агента по рукам и заставляет продолжать.

🛠 Код вместо промптов для оркестрации

Пытаться описать сложный воркфлоу естественным языком в системном промпте («Сначала сделай А, потом проверь Б, если ошибка — сделай В») — это не оч, т.к. естественный язык размыт. Модель забудет ветвление или скипнет шаг.

Ребята из Xiaomi сделали Dynamic Workflow. Если нужно скоординировать пачку агентов (например, для миграции проекта на другой язык), основной агент генерирует обычный JavaScript скрипт. Этот скрипт крутится в песочнице, дергает сабагентов и управляет параллельностью через жесткие программистские if/for.

🗑 Dream & Distill

Агент умеет проводить ревизию собственных логов. Раз в период он запускает фоновые процессы, которые вычищают устаревшие знания из памяти проекта и собирают ваши частые ручные действия в переиспользуемые скрипты.

Инструмент пока в бете, но по внутренним тестам на задачах длиннее 200 шагов эта штука стабильно обходит Claude Code. Просто за счет того, что они не пытаются решить проблемы управления состоянием с помощью увеличения контекста.

Потрогать руками и посмотреть архитектуру можно тут:

Репозиторий MiMoCode на GitHub

Технический разбор в блоге проекта