EN RU

@demondehellis

Рассказываю о технологиях и программировании.

MCP в Claude и проблемы с автономностью

Продолжаю тестировать Claude Desktop с MCP в задачах по дебагу и поиску проблем в коде. Эксперименты у меня такие: я задаю Claude проблему, описываю, что уже сделал, объясняю, как её протестить (прям как типичный фича-тест — кликни сюда, потом посмотри сюда и т. д.), и иногда накладываю ограничения (например, не трогать файлы в определённой папке). Дальше он начинает пробовать варианты, и, по моим наблюдениям, всё сводится к одному из двух сценариев.

Первый — идеальный. Он быстро собирает инфу, находит правильное решение, может пару раз подкорректировать, и всё ок.

Второй — полный хаос. Если проблема неочевидна, то через несколько итераций он срывается в безумие: изобретает велосипеды, радикально переписывает компоненты, лезет в места, куда его не просили, и упорно бьётся в одну и ту же стену, вместо того чтобы сменить подход или признать, что у него нет идей. В итоге длинные цепочки действий при дебаге часто теряют смысл — ценность их стремится к нулю.

Кроме того, в длинных цепочках он начинает игнорировать инструкции. Например, я прошу перед каждым шагом выдавать план и ждать подтверждения. По началу он так и делает, но в какой-то момент просто перестаёт спрашивать и начинает фигачить до последнего. Или вот банальный кейс: есть две проблемы — со сборкой и с логикой. Я говорю: “Фиксим только сборку, логику не трогаем”. Но он сканирует весь компонент, видит недописанную логику и лезет туда. Сначала кажется, что это крутая инициатива, но на деле это только мешает, потому что часто заканчивается ничем, а бороться с ним, чтобы сфокусироваться на мелких шагах, — отдельный квест.

И да, длинные цепочки ещё и технически ненадёжны.

  1. Может выдать ошибку “не могу обработать запрос” и сбросить чат.

  2. Может прерваться из-за лимита на размер сообщения (в этом случае можно сказать “продолжай”).

  3. Иногда тупо серверы перегружены, и даже на платной подписке он пишет: “сорян, capacity issues”. Тут только ждать.

Теоретически можно заставить его логировать прогресс в файл или базу, но тут другой прикол — он слишком многословный. Вместо краткого списка полезных действий пишет целую эпопею. Например, если тестит JS-скрипты, то было бы логично сохранять только успешные команды, но просто сказать “логируй только удачные” оказалось недостаточно — он начинал разгонять свою великую стратегию вместо реального результата. В общем, тут тоже есть над чем поработать.

Промпты, конечно, могут изменить ситуацию, но ведь хочется без них, правда? Чтобы он сразу понимал, что тебе нужно, как тиммейт, с которым ты давно работаешь. А пока ощущение, что Claude 3.7 — это неуправляемый ребёнок с диким желанием понравиться. Если его оставить без присмотра на пять минут, он перепишет весь интернет.

Пока мой workflow выглядит так:

  1. Собираю в файлик все полезные детали — как тестить, где логи смотреть, какие команды запускать, в чём проблема, на чём остановился и т. д. Минимальный набор инфы, который может ему пригодиться.

  2. Вскармливаю этот текст Клоду как инструкцию.

  3. Если за 5 минут у него не вышло — просто останавливаю и думаю сам.

  4. Если он падает с ошибкой (а это случается часто), сбрасываю все изменения и запускаю новый чат.

Часто 4–5 коротких итераций работают лучше, чем попытка протащить всё в одной длинной цепочке. Как только появляется хоть какой-то прогресс, который меня устраивает — фиксирую результат, обновляю инструкции и запускаю его по новой.


Еще всякое интересное