Привет! Как и обещал, делюсь опытом использования coding-агента в этом проекте. Признаю...
Привет! Как и обещал, делюсь опытом использования coding-агента в этом проекте. Признаюсь, в последнее я был очень скептичен к генерации кода для C++, но практика показала: времена изменились, и LLM вполне неплохо с этим справляются. ✅ Что получилось неожиданно хорошо: • Исследование кода. Удобно получать описание логики — работает надежно. • CPU-оптимизации. После совместной проработки спецификации в чате агент реализовал zero-copy для матричного умножения траспонированных матриц. Думаю, успех в том, что он знаком с интерфейсом OpenBLAS и трюками перестановки аргументов в памяти. • Собственно ленивое транспонирование с перестановкой смещений агент тоже упешно сделал. • GPU и GEMM. Удалось полноценно отрефакторить matmul: т.е.реализовать стандартный интерфейс GEMM: добавить leading dimensions и коэффициенты. • Работа со смещениями (strides). Агент реализовал contiguous(), ravel, unravel. Более того, сам написал compute shader для копирования элементов тензора в последовательном порядке с учётом смещений (часть правда уже была сделана вручную). • Тесты. Очень удивило, но он добавляет тесты для Catch2, несмотря на всю шаблонную магию в макросах и параметризированные тесты. ❌ Где агент забуксовал: • Глобальные задачи. На сложном (например, zero-copy сразу для CPU + GPU) часто уходит в цикл: долго пробует, откатывается, опять пробует и в конце говорит, что не вышло. • Im2Col алгоритм. Не получилось решить задачу по рефакторингу под новый GEMM API. Долго объяснял, делал спецификацию, давал рабочий пример на CPU — всё равно не вышло. В итоге вручную поправил несколько строчек сам. • Шаблоны генерации. Шейдеры в проете реализованы как шаблоны для генератора под работы с разными типами. Агент сходу не понял «магию» подстановки, пока я явно не добавил в спецификацию проекта, что значат паттерны подстановки для типов. 💡 Как заставить это работать ( мои инсайты): Просто сказать «сделай вот это» пока не работает. Нужен процесс: - Спецификация — живой документ. Особенно важно описывать нестандартные моменты проекта. Регулярно добавляйте туда секции, на которых агент спотыкается. - Режим чата. Используйте его для исследования и уточнения задачи перед генерацией. Постановка должна быть такой подробной, как будто вы объясняете коллеге. - Обязательное ревью. Всегда проверяйте сгенерированный код и просите агента поправить замечания. Есть вопросы к эффективности и корректности кода, поэтому контроль нужен. 🎯 Вердикт Умение пользоваться агентами для кодогенерации становится необходимым навыком. Это существенно ускоряет разработку, если понимать, как управлять инструментом. По крайней мере, с бесплатным QwenCoder вы получаете дополнительного разработчика среднего уровня. Главное — грамотно ставить задачу и вести документацию. #СPP #AI #QwenCoder #Development #Experience