Дать LLM порулить реальной машиной через MCP? Звучит максимально «безопасно» 🚗
Новый интересный бенчмарк — энтузиасты взяли живую Toyota Corolla 2022 года, воткнуть туда девайс Comma Four с открытым автопилотом openpilot, слегка пропатчили нативный контроллер и подняли локальный MCP-сервер. А дальше скормили доступ к машине текстовым моделям (GPT, Claude, Grok) через обычные агентские интерфейсы вроде Codex или Claude Code, чтобы они проехали размеченную конусами трассу на парковке.
Управление сделали нарочито минималистичным — всего три тула: 1. observe() — возвращает картинку с дорожных камер, текущую скорость и угол руля. 2. set_motion(direction, steering_percent, speed_mps, duration_s) — выставить угол колес (0–100% от калиброванного упора рейки), скорость (от 0.5 до 3.5 м/с) и длительность. 3. stop_now() — ударить по тормозам.
В салоне, естественно, сидит страхующий водитель с ногой над педалью тормоза. Но траекторию и газ выбирает исключительно модель по фреймам с камеры.
Главный хак года по обходу алайнмента 🤡
Первая же проблема, с которой столкнулись авторы: GPT-6 Astra наотрез отказывалась крутить руль. Срабатывал сейфти-гардрейл: «Я текстовая модель, управление тяжелой техникой в реальном мире противоречит политикам безопасности». Попытки убедить модель в промпте, что это симуляция, разваливались, как только она получала реальные фото с камеры: «Вы меня обманываете, это настоящая машина, я не поеду».
Знаете, как решили проблему? Переименовали MCP-сервер в drivingbench_sandbox.
Слово Sandbox усыпило всю паранойю алайнмента. Модель решила, что раз песочница — значит, можно давить на газ. Вот и вся цена современным "непробиваемым" барьерам безопасности.
Что вскрылось на тестах 👇
Физический мир беспощаден к LLM, и результаты очень показательны:
1️⃣ Физика плевать хотела на задержки инференса В чате никого не волнует, если модель генерирует ответ 15–20 секунд. Но когда машина уже катится, время — это пройденные метры. Модель отправляет команду на 5 секунд, получает картинку, уходит в глубокий «reasoning» на 20 секунд... За это время команда успевает протухнуть, а контроллер по таймауту бьет по тормозам. Те, кто не догадался спамить команды внахлест, двигались как типичный курсант автошколы: дернулся на два метра — встал колом — тупит полминуты — снова дернулся.
2️⃣ Галлюцинации ценой в бампер Одна из моделей внезапно решил включить морского капитана: модель решила, что цвет конусов задает границы полосы (зеленый — левый край, красный — правый). То, что в системном промпте прямым текстом было написано «конусы просто разноцветные», модель благополучно проигнорировала и уверенно поехала прямо в бордюр.
3️⃣ Железо устроено сложнее JSON-схемы Выяснилось, что даже на черепашьей скорости мотор электроусилителя руля не может вывернуть колеса мгновенно — есть ограничение скорости перекладки (~100°/сек). При трогании Corolla неизбежно дает легкий рывок, а штатная камера Comma имеет слепую зону прямо перед капотом и в упор не видит низкие препятствия.
Итого: размеченную трассу из семи поворотов целиком смогла преодолеть ровно одна модель, и то лишь со второй попытки. Помогло то, что после первого фейла ей дали проанализировать собственный лог ошибок, после чего сетка догадалась вписаться в повороты простым правилом: не разгоняться быстрее 0.8 м/с и намертво выкручивать руль на 100%.
Все исходники здесь.
Работать с реальным миром — это вам не промпты полировать ☕️