Решил сегодня попробовать челлендж локального вайбкодинга. Локальный Qwen 3.8-27B (Q5_K_XL от unsloth, с лимитом контекста в 64к токентов) на 4090 в роли второкурсника на первой лабе по программированию. В качестве варианта в чем кодить - KiloCode с MCP (VS 2019) для студии от https://marketplace.visualstudio.com/items?itemName=dhq-boiler.Unofficial-VS-MCP-VS2019 . Вкратце суть лабы: студенту выдаётся код с тестами на плюсах и это надо исправить - я ещё немного усложнил, добавив синтаксических ошибок, к уже имевшимся логическим. Ну и плюс там код немного кривоватый, что тоже по-хорошему надо починить.
Сразу прыгну к заключению, чтобы те, кому не интересно могли скипнуть: оно задачу втащило, но несколько со скрипом. Нет, бежать увольняться не надо - увы, оно тупило сильно дольше чем 1,5ч (хотя пожалуй, за 3 до чего-то дошло). Ну и без обвязочек тут прямо никуда.
Теперь о деталях. Всего пришлось делать за три сессии - за 162978 токенов.
За первую сессию (54557) система починила ошибки компиляции и тесты и тут затупов было мало, оно как-то классно всё подтянуло, хоть и медленно.
За вторую (уперлась в лимит 64000) чинились косяки в логике main и дублирование кода (было указано явно, но в принципе нейронка и проблему с затенением переменной легко нашла). И вот тут прямо поплохело.
Потому что нейронка захотела логично протестировать вход и выход. И тут злополучный _getch(), который она решила, что ОЧЕНЬ важен, и вот без него нельзя. Студент бы взял - закомментил и отлаживал бы как обычно. Но нейронка начала искать способ - как бы так в него подсунуть ввод. Потеряв на это вагон токенов, она всё же решила - ну его, будем запускать отладчик и читать ввод/вывод прямо там. В принципе это было бы шустро, не повторяй она (подозреваю тут из-за perplexity, вызываемого квантованием) каждый раз что она в будущем собирается написать в поток. Выглядело это в ризонинге ужасно смешно: написала одну цифру, в ризонинг пихнула что осталась, вторую - снова пихнула, проверила вывол. Но - осилила.
Далее пошли исправления дублирования и запахов кода. Нет, сами правки она придумала быстро. Но дальше пошла комедия - она начала пересчитывать строки, чтобы правильно заменить данные в файле и из-за каких-то whitespace несовпадений между MCP студии и того, что приходило из тулов KiloCode она запуталась в подсчётах и приняла решение выяснить кодировку файла. Выяснила, решила повторить что править-то будем и тут БАХ! Контекст закончился.
В общем на третью сессию (44421 токен), я утащил отчетик по правкам в отдельный файлик, сказал что файл в UTF-8 и пускай она сразу весь файл перепишет, чтобы сто лет не пересчитывать строки. Это она осилила и файд поправила, но... Она решила перепроверить результаты и снова отправилась думать о _getch, потому что в промпте я это указать забыл. Тут уж я её остановил: так-то лаба сделана, а проверить я и сам могу.
Успех ли это? Ну, учитывая что не было никаких скиллов и толкового харнесса - да. Но чувствую, Harness Engineer возможно таки станет профессией, потому что читать тома логов ризонинга возможно стоит не только нейросетям.
Стоит ли менять лабу? Пока нет ответа, думаю, что фронтирные модели справились бы лучше, но:
- На некоторый тип проблем после логических ошибок я навёл его сам.
- Вот этот неприятный тупняк на _getch() и с кодировками (серьёзно?) может тоже сжечь токены.
- Ничего себе умный студент: и MCP он сам поставил, и KiloCode донастроил, в доку сходил! Ну эдак он и сам эту лабу сделает, зачем ему тогда нейронки?
Комментариев нет:
Отправить комментарий