Перейти к содержимому
Экосистема AI Vibe

Разборы

EmbodiWeave: MCP-агент прочитал регрессию в Decision — и снова выбрал тот же origin

Редакция 18 октября 2026 г.

EmbodiWeave: MCP-агент прочитал регрессию в Decision — и снова выбрал тот же origin

Успешный ответ агента с цитатой прошлого провала не гарантирует другого действия: в соло-workflow с MCP в Cursor ограничение нужно вносить в пространство решений, а не только в промпт. В кейсе EmbodiWeave автор после такого повтора вынес eligibility в граф FalkorDB и жёсткий gate перед «shipping» политики робота.

Почему это про агентный цикл, а не про «умного робота»

Проект EmbodiWeave (хакатон Graph Hacks, трек агентов на связанных данных) строит вокруг симуляции: 2D-робот с лучами дальномера на шаге 51 сталкивается с пешеходом. Дальше вопрос не «дообучить ещё раз», а с какого чекпоинта продолжать с учётом lineage и оценок на четырёх validation suite по 180 эпизодам на чекпоинт.

MCP-агент (GPT-4.1 Mini через OpenRouter) не рисует траектории сам: он выбирает origin для PPO-переобучения, читая граф чекпоинтов и исходов. Публичный MCP доступен по stdio и Streamable HTTP; для Claude Desktop и Cursor есть пример подключения к endpoint EmbodiWeave. HTTP-клиенты read-only, обучение требует отдельного consent на странице.

v3-retry: evidence в тексте Decision и тот же выбор

После починки бюджета контекста агент сделал 6 MCP-вызовов, прочитал outcome-tools и до старта обучения явно сослался на регрессию v2 в Decision, затем выбрал тот же origin physics-20261016150004-25da9c. Результат снова регрессия относительно родителя (target 3/60 против 2/60, crossing 1/40 против 0/40): gate 4/4, но parent comparison дал not_released_regression, релиз заблокирован.

Автор формулирует вывод жёстко: чтение evidence не равно действию по нему. Промпт и память в логе есть, но без правила в action space агент может «рационализировать» и повторить ошибку.

Ограничение должно жить в guardrail и графе, а не только в формулировке задания модели.

Полезный фильтр на UI: лексическая проверка рационализаций (ID вне tool results, слова вроде safest/best без измерения в том же предложении), чтобы не проскакивало «eligible» → «safe».

Граф FalkorDB, v4 и почему релиз не про parent comparison

В FalkorDB задана явная схема: Policy и lineage через DERIVED_FROM, Evaluation с artifact_hash и suite_fingerprint, Failure в evaluation, Decision с кандидатами (CONSIDERED), выбранным origin и запуском (LAUNCHED → Run → Policy). DecisionOutcome и рёбра REGRESSED_AGAINST фиксируют сравнение с родителем.

Ключевой инвариант для разработчика агентов: Decision записывается до обучения (параметры, ID, кандидаты, выбор). Если граф недоступен, планирование останавливается: recovery log в immutable JSON, без тихого fallback. Пороги gate и код promotion между попытками v2, v3-retry и v4 автор не менял.

Инструменты MCP включают запросы к FalkorDB (в том числе shortestPath), обёртку lineage_path над algo.SPpaths, взвешенный incoming-degree по регрессиям и привязку gate к файлу. В v4 добавлен rank_origins_excluding_regressed(target_policy, max_hops=8) через GRAPH.RO_QUERY.

Четвёртая попытка агента: 7 MCP-вызовов, 61 440 шагов PPO. Граф исключил проблемный physics-origin; выбран robust-20261016140226-352fd7. Gate снова 4/4, но parent comparison снова not_released_regression; в production остаётся прежний robust-checkpoint (в confirmation на target 8/100).

Контраст с v3-retry не A/B «только промпт против графа», но наглядная пара. В одном случае модель видела регрессию и повторила origin; в другом eligibility задало правило графа, и origin сменился. Релиз по-прежнему решают gate и parent comparison в графе, а не красивый лог агента.

Guardrail в архитектуре может veto выбора, но не подменяет его молча; перед обучением перезапускается exclusion-query.

Локальный стенд, лимиты MCP-контекста и оговорки автора

Локально автор предлагает docker compose up --build и UI на http://127.0.0.1:8000/live.html: CPU, без GPU и без model key для PPO. Публичный trainer shared и с квотой; evidence остаётся доступным.

После сбоя v3 из-за размера контекста (33 515 B против лимита 32 000 B до overhead) действуют лимиты: summary на tool 2000 B, retained tool text 12 000 B, 6 групп истории, весь запрос 28 000 B; пик retry 17 926 B. Для тех, кто гоняет агента с длинными tool-ответами в Cursor или Claude, это отдельный класс отказов рядом с «неправильным origin».

Автор прямо ограничивает claims: не доказано обучение агента лучше authored planner, не доказана безопасность робота; one seed; на shipped checkpoint в MuJoCo target 6/40 (15%) выше reference limit 10%. MCP в Claude Desktop/Cursor задокументирован, но в UI не тестировался вручную. Идея — автора; в разработке участвовали Claude/Codex; числа — из сохранённых PPO artifacts и measured episodes.

Если переносить урок без робота: фиксируйте Decision до дорогой операции (обучение, деплой, миграция), храните регрессии как рёбра, а не как абзац в чате, и не полагайтесь на то, что модель «уже видела» провал в предыдущем ходе.

Источники

  • Himanshu — «EmbodiWeave: My agent read its own failure and repeated it, so I made the graph enforce it» (Dev.to, 17 октября 2026): Dev.to