Почему я из агентов выбираю http://pi.dev/
ВАЖНО - Вам вполне возможно оно не надо.
Я хочу генерировать ТОННЫ КОДА решающего бизнес задачи. Я хочу быть не х10 а х10^10 инженером. Я хочу чтобы код лился с моего компьютера, видеть как сжигаются тысячи долларов токенов в моем harness давай результат 🙂
Но все это не будет иметь смысла, если не будут решены две задачи:
* задача обеспечения достаточного качества продукта в итоге (обратите внимание - я не говорю о "качестве кода" - включать или не включать в это определение код повод на еще один гига пост) - об этом я может когда-нибудь напишу отдельно, про свое видение всех этих quality gates, и главное про ДОВЕРИЕ к результату, которое нельзя путать со слепой верой
Сейчас я хочу сконцентрировать внимание на второй составляющей:
* задача ПОНИМАНИЯ что делать когда оно не работает
Поскольку я, как чукча о чем вижу о том и пою, все метафоры будут про автомобили (как-никак вот-вот открытие гоночного сезона, но помним - все аналогии ложны). Вот есть у меня в автомобиле блок управления двигателем. Огромная вещь в себе, которая сама все решает, отдает наружу принятые решения и какую-то телеметрию. Ты не можешь этим управлять. у тебя ресурсы на входе - ресурсы на выходе. Путем подбрасывания дополнительных датчиков ты можешь дать ему больше информации (и то при условии что блок это умеет - как тут не углядеть аналогию со скиллами - вы даете модельке инструмент, а будет ли она его использовать и как она решает сама), можешь как-то анализировать полученный результат и смотреть "а если мы подкрутим вот тут, то что изменится на выходе". Но ты не понимаешь что с этим делать. Если что-то не работает - меняй блок
Вот условный claude code/open code/cursor/antigravity - это вот такой черный ящик. Его задача - чтоб ваша машина завелась и вы поехали с ветерком 🙂 Но когда вы начинаете ездить везде и на пределе, часто вы обнаруживаете, что к примеру "умная" электроника не дает вам раскрыть все возможности двигателя (чтоб не дай бог не спалили его), а в некоторых условиях - просто ошибается, потому что они нетипичные. И вам остается только читать заклинания над "входами" и шаманить "выходы".
И есть "кастомные" блоки управления двигателем. Да, в них есть все еще черный ящик (в нашей аналогии это сама LLM), но все вокруг настраиваемо, анализируемо и программируемо. И когда случается ошибка - ты можешь "поднять логи", посмотреть - ага, в этом режиме двигателя он смотрел в эту таблицу соотнесения показателей, вот здесь и получается чушь. При этом такие решения могут (как тот же oh-my-pi) иметь неплохие настройки "по умолчанию", а могут и не иметь. Но основное - когда ты ПУШИШЬ его до предела (в моей аналогии - когда LLM не справляется с задачей) - за счет открытости и легкозаменяемости ты можешь взять и подправить под свои нужды.
Здесь добавляется еще одно важное поле для экспериментов и улучшений. Когда вы обновляетесь с версии А на версию Б вашего любимого харнесс - вы получаете пачку изменений. Здесь же я могу экспериментировать "а что случится, если я поменяю стратегию распределения задач между субагентами", а может возьму RLM-подход? а что еще?
В этом и разница. Если вы не хотите "разбираться" в этом, а хотите сесть и поехать - вам точно дорога в Курсор, Клод Код или куда-то еще. Когда вы столкнетесь с задачами, которые решаются плохо - да, вам будет сложнее, но это компенсируется тем, что 50+% задач (зависит конечно от вашего профиля) решаются хорошо из коробки
Но "коробочные" решения легко повторяемы. А значит добавленная ценность вас, вашего подхода и так далее падает. А я не люблю когда моя ценность падает, поэтому и строю системы, задача которых делать лучше (лучше зависит от определения - где-то это скорость, где-то стоимость) чем у остальных
Бутик vs mass-market. И нет, масс-маркет это совсем-совсем неплохо.