mini-swe-agent — минималистичный AI-агент в 100 строк Python
📂 Исходный код на GitHubМинималистичный AI-агент от команды SWE-bench и SWE-agent (Princeton & Stanford): около 100 строк Python на класс агента, единственный инструмент — bash, полностью линейная история сообщений, любая модель через litellm, openrouter или portkey. Более 74% на SWE-bench Verified, 7.1k звёзд на GitHub, лицензия MIT.
В 2024 году команда из Принстона и Стэнфорда выпустила SWE-bench и SWE-agent — и во многом запустила революцию coding-агентов. Теперь они задались вопросом: а что, если агент будет в 100 раз проще — и при этом будет работать почти так же хорошо? Ответ — mini-swe-agent: около 100 строк Python на класс агента, единственный инструмент — bash и более 74% на SWE-bench Verified. Сейчас у проекта 7.1k звёзд на GitHub, лицензия — MIT.
Что такое mini
mini — это AI-агент для программной инженерии, который решает GitHub issues или помогает прямо в вашей командной строке. Никаких огромных конфигов, никакого гигантского монорепозитория. Ключевые характеристики из README:
- Широкое признание: используется в Meta, NVIDIA, Essential AI, IBM, Nebius, Anyscale, Принстонском и Стэнфордском университетах и во многих других местах.
- Минимализм: примерно 100 строк Python на класс агента и ещё немного на окружение, модель и раннер — без экзотических зависимостей.
- Производительность: более 74% на SWE-bench Verified; запускается заметно быстрее, чем Claude Code.
- Развёртывание: локальные окружения, docker/podman, singularity/apptainer, bubblewrap, contree и другие варианты.
- Совместимость: все модели через litellm, openrouter, portkey и другие провайдеры; поддержка эндпоинтов
/completionи/response, interleaved thinking и т.д. - Тестированность: проект покрыт тестами (Codecov).
Текущая версия — mini-swe-agent v2 (есть гайд по миграции; предыдущая версия живёт в ветке v1).
Три архитектурных решения
Вся простота mini держится на трёх решениях, которые авторы подробно объясняют и для исследовательского контекста, и для повседневного использования как инструмента.
1. Никаких инструментов, кроме bash. Агенту даже не нужен tool-calling интерфейс LLM. Это значит, что запустить его можно буквально с любой моделью, а в песочнице не нужно устанавливать ни одного пакета — достаточно bash. Вместо того чтобы реализовывать кастомные инструменты под каждую задачу (открыть PR, отформатировать код), фокус полностью на том, чтобы языковая модель использовала шелл на полную катушку. Хотите, чтобы агент сделал что-то специфическое? Просто скажите модели разобраться самой — вместо того чтобы тратить время на реализацию этого в коде агента.
2. Полностью линейная история. Каждый шаг агента просто дописывает сообщения в конец — и всё. Нет разницы между траекторией агента и сообщениями, которые уходят в модель. Это отлично для отладки: вы всегда видите ровно то, что «видит» LM, и именно эти же данные можно использовать для fine-tuning.
3. Действия через subprocess.run. Каждое действие полностью независимо — в отличие от классического подхода с постоянной stateful shell-сессией. Авторы подчёркивают, что это принципиальный момент для стабильности: заменить subprocess.run на docker exec — и агент мгновенно исполняет действия в песочнице и без усилий масштабируется на батчи задач.
В сумме это делает mini идеальной базовой системой (baseline) и платформой, в центре внимания которой находится языковая модель, а не агентный скаффолд. Именно на mini построен лидерборд SWE-bench (bash only), сравнивающий производительность разных LLM.
Инструмент, а не чёрный ящик
Авторы честно дистанцируются от двух крайностей: одни агенты — переобученные исследовательские артефакты, другие — UI-перегруженные монстры-фронтенды. mini позиционируется как хакабельный инструмент: настолько простой, чтобы пониматься с одного взгляда; достаточно удобный для ежедневной работы; достаточно гибкий для расширения.
mini или SWE-agent?
По умолчанию авторы рекомендуют именно mini-swe-agent:
Выбирайте mini, если… |
Выбирайте swe-agent, если… |
|---|---|
| Нужен быстрый CLI-инструмент для локальной работы | Хотите экспериментировать с разными наборами инструментов, у каждого свой интерфейс |
| Нужен агент с максимально простым control flow | Хотите экспериментировать с разными history-процессорами |
| Нужны быстрые, простые и стабильные песочницы и бенчмарк-прогоны | |
| Вы занимаетесь fine-tuning или RL и не хотите переобучаться под конкретный скаффолд |
Общее у обоих: отличные результаты на SWE-bench и встроенный браузер траекторий.
Четыре режима работы
- CLI (
mini) — интерактивная работа в терминале. - Batch inference — массовые прогоны по датасетам вроде SWE-bench.
- Trajectory browser (inspector) — просмотр траекторий агента.
- Python bindings — библиотечное использование. Весь API умещается в несколько строк:
agent = DefaultAgent(
LitellmModel(model_name=...),
LocalEnvironment(),
)
agent.run("Write a sudoku game")
Установка
Вариант 1 — просто попробовать CLI (пакет ставится в анонимное виртуальное окружение):
pip install uv && uvx mini-swe-agent
# or
pip install pipx && pipx ensurepath && pipx run mini-swe-agent
Вариант 2 — установить CLI и Python-биндинги в текущее окружение:
pip install mini-swe-agent
mini # run the CLI
Вариант 3 — установка из исходников для разработки:
git clone https://github.com/SWE-agent/mini-swe-agent.git
cd mini-swe-agent && pip install -e .
mini # run the CLI
Признание и экосистема
Свежие новости из README: mini-swe-agent лежит в основе Ramp SWE-Bench, обошёл Claude Code и Codex в харнесс-оценке DeepSWE, поддерживает новый сложный бенчмарк ProgramBench, а команда выпустила туториал по построению минимальных AI-агентов.
Документация проекта — на mini-swe-agent.com: quick start, работа с CLI, глобальная конфигурация, YAML-конфиги, кулинарная книга и FAQ.
У команды есть и другие проекты: SWE-agent, SWE-ReX, SWE-bench, SWE-smith, CodeClash и sb-cli. Если работа с mini пригодилась в исследованиях, авторы просят ссылаться на статью SWE-agent (NeurIPS 2024).
Итог
mini-swe-agent — убедительное доказательство того, что по мере взросления моделей всё более сложные агентные скаффолды теряют смысл: достаточно bash, линейной истории сообщений и независимых subprocess.run. Проект полезен вдвойне — как повседневный CLI-помощник и как чистый baseline для исследований, где в центре внимания оказывается сама LLM, а не обвязка вокруг неё.