Forwarded from do...while...ai (Gregory is typing...)
Рефакторинг вайбкодинга
Все последние проекты, которые я разрабатывал (процентов на 80 вайбкодил), всегда проходят через две фазы: разработки и рефакторинга, и циклически повторяют их.
Разработка — это активный вайбкодинг, задача которого реализовать некую законченную бизнес-функцию, не сильно упарываясь с качеством кода. Не важно, какая модель или какой агент используется, они всегда вместе с полезным кодом добавляют кучу избыточного. Я не могу сказать, что этот новый код всегда мусорный, или лишний. Код часто бывает локально полезный, но если смотреть на уровне всего проекта — реализация часто неэффективная. Поэтому после каждого этапа разработки я делаю принудительный этап рефакторинга, чтобы привести код в порядок и не превратить проект в "спагетти".
Почему не делать это сразу в момент ревью результатов? Это замедляет реализацию бизнес-функций. Но откровенный булщит, конечно, исправляю сразу.
Как человек ленивый, первое, что я попробовал — это делать автоматический рефакторинг. Написал огромную инструкцию о том, как делать рефакторинг поэтапно (для python backend, деплоя, фронта на reactjs, ..), как запускать тулзы типа vulture, flake8, ESlint, Skylos, и т.п. для диагностики и валидации результатов, задал пороговые значения и параметры рефакторинга, позапускал с разными агентами (я попеременно использую Cursor, Claude Code и Codex). И то, что получалось в итоге — было фиаско.
Увы, пока ни агенты, ни модели, не работают на должном уровне, чтобы автономно по инструкциям сделать грамотный и эффективный рефакторинг. Поэтому данный этап я всё ещё делаю ручками. Открываю файлы, которые недавно менялись, начинаю ревьюить, замечать какие-то кривости реализации (например, сегодня у меня в трех местах в ansible playbook'ах была однотипная проверка на ОС на целевом хосте). Как только обнаруживаются проблемы реализации — я даю команду курсору или Codex исправить её: описываю, что и где я нашёл, почему я считаю это неэффективным, как я предлагаю реализовать, настаиваю на том, чтобы не было breaking changes и сохранилась вся текущая функциональности, и прошу также прошерстить остальной код на предмет аналогичных проблем. Если просить модель саму решить, как лучше отрефакторить, часто получается не лучше, чем было. Поэтому здесь нужно это брать в свои руки.
Я выработал свой критерий успешности рефакторинга: размер кода должен уменьшиться при сохранении функциональности и 100% pass rate для тестов.
Если я вижу, что переделка кода удалила 400 строк и добавила 390 — это какая-то фигня. Отменяю и делаю новую итерацию.
Типичные проблемы, которые я замечаю при вайб-кодинге, и для чего я делаю принудительный рефакторинг:
- дубли кода (иногда явно задублированный код в разных файлах)
- "мёртвый" код (модель переписывает что-то, забывая удалить старый, и оно там остаётся на века, засоряя проект)
- ненужный избыточный код, сохранённый для обратной совместимости (которая не нужна). Это прямо бич всех агентов: они стараются быть аккуратными и лишний раз реализуют избыточный код для сохранения обратной совместимости, которая не нужна.
- избыточные комментарии и код для дебага (когда агент что-то дебажит, он добавляет кучу ненужного для прода кода, и потом его не удаляет)
- .md файлы с документированием изменений (удаляю их сразу после завершения сессии). Пробовал делать рулзы не создавать эти .md, если я явно не прошу, но Cursor забивает на часть моих рулзов.
- лоскутное одеяло из стилей кодирования (где-то файлы читаются через file read(), где-то через pathlib read_text())
- константы и импорты объявляются локально внутри try / catch блоков или функций.
Важное наблюдение: поскольку природа LLM — completion inference, модель учитывает и "продолжает" стиль существующего кода. Если сделать заготовку проекта, написанную "с нуля" хорошо и аккуратно, есть шанс, что модель продолжит дальше вайбкодить также хорошо, как по трафарету (до определенного момента, конечно). Поэтому аккуратность кода нужно поддерживать регулярно, и, увы, вручную. Именно это я и пытаюсь делать регулярными рефакторингами проектов.
Все последние проекты, которые я разрабатывал (процентов на 80 вайбкодил), всегда проходят через две фазы: разработки и рефакторинга, и циклически повторяют их.
Разработка — это активный вайбкодинг, задача которого реализовать некую законченную бизнес-функцию, не сильно упарываясь с качеством кода. Не важно, какая модель или какой агент используется, они всегда вместе с полезным кодом добавляют кучу избыточного. Я не могу сказать, что этот новый код всегда мусорный, или лишний. Код часто бывает локально полезный, но если смотреть на уровне всего проекта — реализация часто неэффективная. Поэтому после каждого этапа разработки я делаю принудительный этап рефакторинга, чтобы привести код в порядок и не превратить проект в "спагетти".
Почему не делать это сразу в момент ревью результатов? Это замедляет реализацию бизнес-функций. Но откровенный булщит, конечно, исправляю сразу.
Как человек ленивый, первое, что я попробовал — это делать автоматический рефакторинг. Написал огромную инструкцию о том, как делать рефакторинг поэтапно (для python backend, деплоя, фронта на reactjs, ..), как запускать тулзы типа vulture, flake8, ESlint, Skylos, и т.п. для диагностики и валидации результатов, задал пороговые значения и параметры рефакторинга, позапускал с разными агентами (я попеременно использую Cursor, Claude Code и Codex). И то, что получалось в итоге — было фиаско.
Увы, пока ни агенты, ни модели, не работают на должном уровне, чтобы автономно по инструкциям сделать грамотный и эффективный рефакторинг. Поэтому данный этап я всё ещё делаю ручками. Открываю файлы, которые недавно менялись, начинаю ревьюить, замечать какие-то кривости реализации (например, сегодня у меня в трех местах в ansible playbook'ах была однотипная проверка на ОС на целевом хосте). Как только обнаруживаются проблемы реализации — я даю команду курсору или Codex исправить её: описываю, что и где я нашёл, почему я считаю это неэффективным, как я предлагаю реализовать, настаиваю на том, чтобы не было breaking changes и сохранилась вся текущая функциональности, и прошу также прошерстить остальной код на предмет аналогичных проблем. Если просить модель саму решить, как лучше отрефакторить, часто получается не лучше, чем было. Поэтому здесь нужно это брать в свои руки.
Я выработал свой критерий успешности рефакторинга: размер кода должен уменьшиться при сохранении функциональности и 100% pass rate для тестов.
Если я вижу, что переделка кода удалила 400 строк и добавила 390 — это какая-то фигня. Отменяю и делаю новую итерацию.
Типичные проблемы, которые я замечаю при вайб-кодинге, и для чего я делаю принудительный рефакторинг:
- дубли кода (иногда явно задублированный код в разных файлах)
- "мёртвый" код (модель переписывает что-то, забывая удалить старый, и оно там остаётся на века, засоряя проект)
- ненужный избыточный код, сохранённый для обратной совместимости (которая не нужна). Это прямо бич всех агентов: они стараются быть аккуратными и лишний раз реализуют избыточный код для сохранения обратной совместимости, которая не нужна.
- избыточные комментарии и код для дебага (когда агент что-то дебажит, он добавляет кучу ненужного для прода кода, и потом его не удаляет)
- .md файлы с документированием изменений (удаляю их сразу после завершения сессии). Пробовал делать рулзы не создавать эти .md, если я явно не прошу, но Cursor забивает на часть моих рулзов.
- лоскутное одеяло из стилей кодирования (где-то файлы читаются через file read(), где-то через pathlib read_text())
- константы и импорты объявляются локально внутри try / catch блоков или функций.
Важное наблюдение: поскольку природа LLM — completion inference, модель учитывает и "продолжает" стиль существующего кода. Если сделать заготовку проекта, написанную "с нуля" хорошо и аккуратно, есть шанс, что модель продолжит дальше вайбкодить также хорошо, как по трафарету (до определенного момента, конечно). Поэтому аккуратность кода нужно поддерживать регулярно, и, увы, вручную. Именно это я и пытаюсь делать регулярными рефакторингами проектов.
Ещё нигде не видел в обзорах новых бета-версий macOS, что, оказывается, XBOX-контроллер, когда он подключен, теперь по своей кнопке вызывает Apple Arcade, и прекрасно там работает.
Но не только там. В Spotlight Search контроллер работает тоже. И про это не писали. Тем временем, маки тихонько, но уверенно, идут и в околоконсольном направлении. Прикольно.
Но не только там. В Spotlight Search контроллер работает тоже. И про это не писали. Тем временем, маки тихонько, но уверенно, идут и в околоконсольном направлении. Прикольно.
👍1
Forwarded from e/acc
Провел больше 10 часов за последние 2 дня в CC. Вывод шокирует.
Если определением AGI считать
ИИ, который умеет выполнять любую удаленную работу на уровне среднего сотрудника,
то в любом практическом контексте claude code + Opus 4.5 это уже давно AGI.
Если определением AGI считать
ИИ, который умеет выполнять любую удаленную работу на уровне среднего сотрудника,
то в любом практическом контексте claude code + Opus 4.5 это уже давно AGI.
Facebook не смог вернуть мне $250 за рекламу, которую тоже не смог дать своевременно, так что прислал купонов: $100 + $100 + $50.
Продам с дисконтом 10%, можно хоть прямо сейчас. Контакт @nafigator. Крипта, баты, рубли — всё равно.
Тратить можно на рекламу Meta, включая и ФБ, и Инстаграм, и на всё остальное, что там доступно в рекламном кабинете.
Активируются в рекламном кабинете в добавлении платёжного средства. Если мы с вами знакомы, можете оплатить после успешной активации.
Продам с дисконтом 10%, можно хоть прямо сейчас. Контакт @nafigator. Крипта, баты, рубли — всё равно.
Тратить можно на рекламу Meta, включая и ФБ, и Инстаграм, и на всё остальное, что там доступно в рекламном кабинете.
Активируются в рекламном кабинете в добавлении платёжного средства. Если мы с вами знакомы, можете оплатить после успешной активации.
Публичные нейросети очень хорошо подсвечивают такой момент восприятия, как... ну пусть «своя рубашка ближе к телу». Что даёт ценную возможность взглянуть на своё мышление со стороны.
Поясню.
Когда ты читаешь результат своего исследования по своему промпту, ты его как минимум воспринимаешь для адекватной оценки, замечаешь детали — доверие авансом высокое, это же ответ на твой запрос.
А вот когда тебе кто-то кидает ссылку на своё исследование, либо даже просто шлёт скрины с ответом того же Gemini — скажите как у вас. У меня фильтр большую часть такого контента не пропускает. Я бессознательно, но уже настроен скептически.
Моя гипотеза заключается в том, что дело тут совершенно не в промптах. У тебя может быть выборка «дай топ-10 антистресс-бадов с айхерба», а у собеседника сложный промпт по стандартизированным экстрактам и клиническим исследованиям. И ты, даже зная это, всё равно сначала пройдёшь через стадию с мыслью «ну хз» :)
Старые-новые игры разума в современных технологиях.
А! Ну так вот! В жизни-то так же.
Зная свою такую особенность восприятия, можно закрывать свою жажду новых знаний чуточку повеселее и пооткрытее.
Поясню.
Когда ты читаешь результат своего исследования по своему промпту, ты его как минимум воспринимаешь для адекватной оценки, замечаешь детали — доверие авансом высокое, это же ответ на твой запрос.
А вот когда тебе кто-то кидает ссылку на своё исследование, либо даже просто шлёт скрины с ответом того же Gemini — скажите как у вас. У меня фильтр большую часть такого контента не пропускает. Я бессознательно, но уже настроен скептически.
Моя гипотеза заключается в том, что дело тут совершенно не в промптах. У тебя может быть выборка «дай топ-10 антистресс-бадов с айхерба», а у собеседника сложный промпт по стандартизированным экстрактам и клиническим исследованиям. И ты, даже зная это, всё равно сначала пройдёшь через стадию с мыслью «ну хз» :)
Старые-новые игры разума в современных технологиях.
А! Ну так вот! В жизни-то так же.
Зная свою такую особенность восприятия, можно закрывать свою жажду новых знаний чуточку повеселее и пооткрытее.
Ещё инсайт дал Spotify. Иногда слушаешь свои Liked Songs, а их много-много уже накопилось, и давно уже слушаешь, он играет фоном в течение дня. И потом такой на автомате тянешься что-то лайкнуть, добавить в своё избранное... а оно уже там. И ты понимаешь, что да, трек такой, что я бы его дважды лайкнул!
Предсказываю такое явление, как мультилевел-лайки. Сначала, наверное, есть смысл оставить Liked Songs и добавить VIP или Super Liked Songs. Потом ещё как-то это реализуется, приобретёт возможности для шеринга в профили и т.п.
Типа, принцип маркетинговой воронки, только про свои подборки, которые имеют тенденцию разрастаться.
Как в телеграме Saved Messages, только там пошли другим путём, через разметку ярлычками. Тоже вариант. Но они не для шеринга.
Предсказываю такое явление, как мультилевел-лайки. Сначала, наверное, есть смысл оставить Liked Songs и добавить VIP или Super Liked Songs. Потом ещё как-то это реализуется, приобретёт возможности для шеринга в профили и т.п.
Типа, принцип маркетинговой воронки, только про свои подборки, которые имеют тенденцию разрастаться.
Как в телеграме Saved Messages, только там пошли другим путём, через разметку ярлычками. Тоже вариант. Но они не для шеринга.
«Времена, когда полотно из 30 хэштегов давало взрывной рост, прошли в 2018 году.»
Сейчас 2025-й. Одни люди всё ещё продают эту порчу восприятия контента бренда за деньги, а другие люди это всё ещё покупают.
Потому что тут так заведено :)
Сейчас 2025-й. Одни люди всё ещё продают эту порчу восприятия контента бренда за деньги, а другие люди это всё ещё покупают.
Потому что тут так заведено :)
👍2
Forwarded from Вечерний Даня (danya.ru)
Количество вопросов на StackOverflow по месяцам. Ну раньше получается вопросы складировались и хранились, типа как на жестком диске. А сейчас новые вопросы мгновенно исчезают в оперативке AI-матрицы и никто их никогда не увидит. Вопросы закончились.
👍1
Кайф
https://www.youtube.com/watch?v=UhxCE6QBotE
https://github.com/jmechner/Prince-of-Persia-Apple-II
https://www.youtube.com/watch?v=UhxCE6QBotE
https://github.com/jmechner/Prince-of-Persia-Apple-II
YouTube
Принц Персии: разбираем код гениальной игры, вытирая слезы счастья
Бусти — https://clickmy.ru/link/rvhYwf
Это видео — про игру Prince of Persia, всеми любимую и обожаемую классику.
Это мой взгляд программиста на то, как Джордан Мехнер — человек, без сомнения больной, но гениальный — в одиночку создал одну из самых кинематографичных…
Это видео — про игру Prince of Persia, всеми любимую и обожаемую классику.
Это мой взгляд программиста на то, как Джордан Мехнер — человек, без сомнения больной, но гениальный — в одиночку создал одну из самых кинематографичных…
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Как давно я искал это видео. Полезное для начинающих любителей вайб-кодинга :)
👍3
Claude Code c «ultrathink», MCP Context7 и поиском, когда работает в режиме планирования, создаёт очень хороший готовый план для бесплатных/дешёвых моделей.
Например, связка из очень вялого нынче deep research* у Gemini, затем совершенно потрясающего планирования Claude Code на основе того дип рисёрча, затем скармливание этого плана обратно в Gemini CLI** даёт совершенно рабочий результат, я получил буквально безукоризненный продукт.
* К deep research у меня масса претензий по свежести индекса и очень дешёвой текстовой воды уровня копирайтера, который был бы за такие финты незамедлительно уволен.
Вот из этого можно удалить буквально всё (100%):
** В Gemini CLI, которому вот сегодня, 10 января 2026-го, нужно включать режим Preview Settings для того, чтобы появились модели 3-й серии. Это странно. Но с ними он работает прямо хорошо. По крайней мере, по плану Claude :)
И да, мне было просто интересно. Практическая польза тут небольшая, имеет смысл только некоторая экономия, если сидишь в CC не на подписке, а у Gemini — да ✌️
Например, связка из очень вялого нынче deep research* у Gemini, затем совершенно потрясающего планирования Claude Code на основе того дип рисёрча, затем скармливание этого плана обратно в Gemini CLI** даёт совершенно рабочий результат, я получил буквально безукоризненный продукт.
* К deep research у меня масса претензий по свежести индекса и очень дешёвой текстовой воды уровня копирайтера, который был бы за такие финты незамедлительно уволен.
Вот из этого можно удалить буквально всё (100%):
В современной экосистеме цифровых коммуникаций управление жизненным циклом данных становится критически важным аспектом информационной гигиены и безопасности. Telegram, как одна из доминирующих платформ для зашифрованного обмена сообщениями, предоставляет пользователям широкие возможности для обмена мультимедийным контентом, включая голосовые сообщения (voice notes). Однако, накопление значительных объемов таких данных
** В Gemini CLI, которому вот сегодня, 10 января 2026-го, нужно включать режим Preview Settings для того, чтобы появились модели 3-й серии. Это странно. Но с ними он работает прямо хорошо. По крайней мере, по плану Claude :)
И да, мне было просто интересно. Практическая польза тут небольшая, имеет смысл только некоторая экономия, если сидишь в CC не на подписке, а у Gemini — да ✌️
Так-то удивительно. Для простых бытовых задач Gemini CLI с моделями 3-й версии и с MCP Context7 как будто даже и не только не говно, а ещё и что-то вполне теперь юзабельное.
Аккуратно пока предположу :)
Аккуратно пока предположу :)
Context7
Context7 - Up-to-date documentation for LLMs and AI code editors
Pull up-to-date, version-specific documentation and code examples for any library directly into Cursor, Claude Code, Codex, Devin Desktop, Antigravity and other AI coding tools.
О, Google шагнул в сторону персонального ассистента, планировщика, агента или чего-то такого.
CC @ Google Labs
Их эксперименты обычно странноватые, тем и интересны. Вспомните тот же Google Wave.
Если что, CC не имеет ничего общего с Claude Code.
CC @ Google Labs
Их эксперименты обычно странноватые, тем и интересны. Вспомните тот же Google Wave.
Если что, CC не имеет ничего общего с Claude Code.
Тоже вот не замечал в Gemini подписок на новости по какой-либо заданной теме.
Возможно, ноги растут из Opal, тоже неожиданно интересный эксперимент Google.
Возможно, ноги растут из Opal, тоже неожиданно интересный эксперимент Google.
👍2
Apple тестирует быстрые фоновые обновления безопасности. Видимо, без ожиданий выхода новой минорной или мажорной версии.
Если что, у меня Beta, не Dev. Описание этой новой функции здесь: https://support.apple.com/en-us/102657
Если что, у меня Beta, не Dev. Описание этой новой функции здесь: https://support.apple.com/en-us/102657