Обновить
64K+

Ненормальное программирование *

Извращения с кодом

115,7
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Локальный ассистент для зумов, часть 6: полчаса тишины, которых не было в протоколе

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.5K

Шестая часть про локальный ассистент для созвонов. Встреча 15 сентября: канал собеседников умирал четыре раза, в стенограмме 33 минуты дыр из 65, а протокол вышел на шесть разделов и ни слова об этом. Почему тишина пропавшего канала для модели неотличима от согласия, что такое факт о записи против речи, куда девалась строка о неполной записи на пути к модели, как паспорт производной узнаёт об оговорке, и почему два внешних ревьюера нашли один и тот же дефект, который две тысячи тестов не видели.

Читать далее

Новости

Опыт инди-вайбкодинга приложений как реальная бизнес-задача

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.2K

Дисклеймер. Данная статья не претендует на туториал, руководство к действию или повторение. В ней я пытаюсь ответить на давно дискутируемый вопрос: может ли вайбкодинг использоваться для нужд реального бизнеса? И кажется, ответ положительный — по крайней мере, в рамках осени 2026 года. Статья написана с согласия моего уже бывшего коллеги @smolyakov. В ней намеренно не указаны названия или торговые марки компании.

Резюме: авторы, не обладающие значительным ИТ-бэкграундом, за короткое время навайбкодили несколько реально работающих сервисов для компании, в которой трудились.

Читать далее

Как я сделал спутник для Codex и дошел до разработки из электрички

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели5.8K

Утром оставляю ноутбук включенным и еду на работу. По дороге открываю на телефоне режим «удаленно» и обсуждаю с агентом, что еще доделать в моем приложении. Он пишет код, присылает картинки интерфейса и покадровую нарезку анимаций. Я смотрю: норм или не норм. Если готово — выпускаем.

Приложение — маленький пиксельный спутник, который показывает, чем занят Codex. Называется CoPet. Я работаю аэрокосмическим инженером, люблю все пиксельное и хочу постоянно видеть, что делает мой ИИ‑товарищ. Поэтому спутник с телеметрией в углу рабочего стола кажется мне совершенно естественной потребностью. Такой профессиональный фетиш.

До этого проекта я никогда не собирал самостоятельных приложений. Весь мой опыт программирования помещался в учебные тетрадки Jupyter. Как устроить программу для Windows, как ее запускать и вообще с какой стороны подойти к GitHub — предстояло выяснить.

Начал примерно так: хочу, чтобы Codex работал, а CoPet показывал состояния. Кодекс пыхтел‑пыхтел, сказал «готово». Проверяем — нифига не работает. Окно есть, состояния не меняются.

И началось.

Читать далее

Завайбкодили за два вечера, доводили полгода: что отделяет ИИ‑прототип от production

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.8K

Привет, Хабр!

С виду даже самый простой проект, который можно «запромптить» в пару подходов, содержит десятки подводных камней, из-за которых его нельзя назвать production-ready. В этой статье я расскажу, с какими проблемами столкнулась моя команда при разработке сервиса «Запомни это» с помощью нейросетей, почему «два вечера» превратились в полгода и как мы закрывали пробелы, которые ИИ закрыть не смог.

Читать далее

Не бенчмарком единым: стелс‑модель union‑alpha на реальной задаче — сутки от релиза до боя

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели10K

Пролог: живая встреча, бэклог и бесплатная модель

Всем привет! Немного вступления: ИИ агент заказчика работает в проде уже четвёртый месяц: ночные заявки в НЕЛЬЗЯgram Direct, диалоги, анкеты, сделки в amoCRM. В прошлой статье — разбор Reasoning Lock и анонсы продолжений. Одна из договорённостей с заказчиком — ветка обработки комментариев под постами: человек пишет «+» или «сколько стоит?» под публикацией = агент отвечает ему приватным сообщением в Direct. Обещание висело в бэклоге и ждало своего часа.

Час настал сам. 16 сентября вечером на OpenRouter выкатили новую стелс‑модель: stealth/union‑alpha. Провайдер анонимен, релизный штамп на странице 16 сентября, то есть сутки стелсу к моменту публикации этой статьи. Факты про данную llm: мультимодальность, tool calling, GPQA Diamond 90.9%, и главное — цена ровно ноль (пока что).

Читать далее

AI‑агент не увидел мой код: worktree, состояние задач и границы доступа в VECTA

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.2K

Файлы проекта лежали на диске, но AI-агент получил пустую рабочую копию. Причина нашлась в Git: исходники ещё не были закоммичены, а worktree создавался из HEAD.

На примере VECTA разбираю, что приходится строить вокруг запуска coding agent: снимки текущих файлов, восстановление событий после обрыва связи, права доступа и проверку результата. Объясню, как управлять задачей с другого устройства, почему worktree не заменяет песочницу и чего нельзя обещать от лимита расходов.

Читать далее

Локальный ассистент для зумов, часть 5: зачем локальному ассистенту облако и что уходит наружу

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.8K

Пятая часть про локальный ассистент для созвонов. В первой части я написал: ничего не уходит в облако. Облако появилось на второй день проекта, потому что большая модель одним чтением стенограммы находила то, чего локальная не видела. Что уходит с машины при каждом из пяти тумблеров и в каком объёме, почему остался Opus, как каждая третья ревизия не доезжала из-за усилия, а не размера промпта, и где сегодня проходит граница между локальным и облачным.

Читать далее

Спидраним Codewars

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8.5K

Решаем задания на Codewars вообще любой сложности за полчаса и меньше без ИИ и иных подглядываний (типа)

Читать далее

WXL: как создавать объекты в 15 раз быстрее

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели9.9K

Обычная системная куча обязана предполагать худшее: что в неё в любой момент постучатся из десятка параллельных потоков. Отсюда неизбежные блокировки, атомарные операции и накладные расходы. Но в GUI-приложениях на WinUI 3 этого сценария просто не бывает — все контролы и элементы разметки создаются и умирают строго в одном-единственном STA-потоке. Зачем же платить за потокобезопасность, которую мы не используем?

В этой статье мы разберем устройство sta_memory_pool — кастомного аллокатора для библиотеки wxl, работающего в 15–16 раз быстрее общей кучи. Вы узнаете, как с помощью инструкции lzcnt вычислить класс размера за один такт, как избавиться от лишних if-проверок на горячем пути с помощью самоперестраивающихся таблиц функций и как заставить линейную аллокацию работать на максимальную отзывчивость приложения при старте.

Заглянуть под капот

ИИ‑фабрика: переход к автономной разработке

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.9K

Что делать, когда процесс разработки с ИИ-агентами уже устоялся, но всё ещё приходиться сидеть рядом с ними и ждать, когда они закончат очередной этап работы, чтобы запустить следующий?

У меня это выглядит так. Появилась идея новой фичи для разработки. Я запускаю /opsx:explore скил OpenSpec и обсуждаю с ИИ как будем делать эту фичу, какие нюансы и детали надо предусмотреть. Когда открытых вопросов не остаётся, перехожу к /opsx:propose, чтобы подготовить спецификации перед разработкой. Потом ревью спек с помощью команды /review-artifacts и правка найденных нестыковок. Дальше запускаю /opsx:apply-sequential для реализации в автономном режиме и чистым контекстом агента для каждой подзадачи. Потом ревью через /audit-implementation и правки после него. Архивирование изменения через /opsx:archive. И наконец-то создание PR, финальное ревью и merge.

И так раз за разом! На простых задачах моё участие сводится к запуску команд и подтверждению предложенных решений. На задачах посложнее отвечаю на вопросы наподобие какую из альтернатив выберем. Хотя этот выбор можно сделать по критериям, зафиксированным в проекте. И это уже начинает утомлять. Пришло время автоматизировать и эту рутину. Так я начал делать свою фабрику, где ИИ-агенты («гномы») трудятся в полностью автономном режиме. А к человеку обращаются только тогда, когда столкнулись с проблемой, которую не могут решить сами.

Как фабрика устроена внутри

Cимулируем жизнь 30 млн микробов в браузере

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

WebGPU даёт прямой доступ к современным возможностям видеокарты: не только к рендерингу, но и к вычислениям общего назначения через compute shaders.

Но насколько далеко это можно довести в обычном браузере? Что произойдёт, если вычисления — это полноценная симуляция с десятками миллионов объектов? Разберемся в этой статье.

Читать далее

Что можно сделать с массивом массивов

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели17K

На одном из проектов (4Х историческая стратегия) появилась задача убрать часть логики в потоки, отдав им снапшот игрового состояния, чтобы пока основной поток считает свой тик, остальные (AI, поиск пути, UI и др) могли крутить свою логику, вроде "кто стоит в этой локации" и делать это без блокировок или риска увидеть половину чужой записи. Чтобы реализовать такую систему, надо придумать как получить обратный индекс полка по локации, причем сделать поиск дешевым для потоков, т.е. у потока должен быть свой снапшот состояния некоторой части игрового мира на момент старта апдейта (кадра, тика логики, дня, месяца и т.д)

Общепринятая практика - это сделать данные иммутабельными на время кадра, и построить нужный индекс один раз на старте, а дальше дать читателям возможность работать с ним. И вообщем от ребят, которые делали эту задачу на ревью прилетел вот такой код (выделю тут только основную часть):

std::vector<std::vector<unsigned int>> regiments(location_count);

Такая структура называется jagged array, массив массивов (зачем она и как с ней работать я показывал в книге Game++), или, если вам ближе академическая терминология, CSR (compressed sparse row) немного другая форма записи таких массивов, либо разреженные матрицы. И такие структуры довольно частое явление в играх, если у вас много локаций и вам надо узнать какой лут разложен в каждой локации, какие армии принадлежат каждой области, или какие монстры живут в локации, какие локации входят в область, какие области в регион, или почекать соседей локации на карте, adjacency region, на чем строится весь поиск путей и вся заливка областей в глобальных стратегих;

Читать далее

Мой годовой опыт в разработке с ИИ агентами и главные выводы

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.7K

Этот пост для разработчиков, которые еще скептически относятся к кодингу с ИИ агентами и не используют его. Мир стремительно меняется и пора «проснуться» и поменять методику работы.

Ниже я расскажу личный опыт, чтобы было нагляднее.

Читать далее

Ближайшие события

SKILL.state в coding-агентах: меньше истории, но не всегда меньше работы

Уровень сложностиСредний
Время на прочтение37 мин
Охват и читатели8.8K

Кейс по мотивам исследования SKILL.state: немного инженерии контекста, бенчмарков и графиков. Эксперименты с памятью coding-агентов в OpenCode и Codex и размышления о перспективах идеи.

Читать далее

Как я научил MacBook озвучивать субтитры с PS5

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели8.1K

Мы с женой хотели играть в Split Fiction, но английские диалоги было трудно понимать на слух. Я собрал PS5 Voice: MacBook распознаёт субтитры с приставки и озвучивает их по-русски. Мы уже играли с этой озвучкой — работает, и это кайф. Рассказываю, как устроено приложение, и делюсь промптом для самостоятельной сборки.

Читать историю

Декларативные макросы в Rust: полное руководство

Уровень сложностиСредний
Время на прочтение31 мин
Охват и читатели10K

Макросы - это механизм генерации кода во время компиляции. В отличие от макросов в C, где препроцессор работает исключительно на уровне текста, макросы Rust работают с токенами языка, а не с текстом программы. Процедурные макросы получают TokenStream и возвращают новый TokenStream, а декларативные сопоставляют поток токенов с заданными шаблонами. После раскрытия макросов полученный код компилируется так же, как если бы его написал программист вручную.

Читать далее

Reasoning Lock: ИИ‑агент в проде тратит токены и молчит — живой разбор бага

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели12K

В прошлой статье я рассказывал о скрытом баге: ИИ‑агент в проде заказчика тратит токены, генерация закрывается со статусом «успех», а клиенту уезжает пустая строка. Тогда я обещал разобраться и починить. Обещание выполнено: причина найдена, правки встали в воркфлоу, счётчик пустых ответов уже 7 дней — чисто. Баг получил имя Reasoning Lock. Теперь подробно о нём: симптомы, «расследование по этажам», механика и «лечение» — в общём в стиле детектива :-)

Напомню, что строю ИИ‑агентов на self‑hosted n8n. Герой статьи — агент в проде заказчика: по ночам принимает заявки в Instagram Direct, ведёт диалог, собирает анкету и создаёт/обновляет сделку в amoCRM. Стек агента: n8n + Redis + LangChain, LLM основная — DeepSeek V4 Pro через OpenRouter, резервная — недавно поменял на Qwen3.8 Flash.

Предыстория: два периода, две природы отказов

История началась задолго до самого бага. С конца июня (установил в прод агента в первых числах июня если точнее быть) отказы случались двух периодов, и разница между ними = ключ к пониманию.

Период первый = тесты и запуск: инфраструктура. Первые «пропавшие ответы» пользователям имели вполне земную природу: ограничения Meta — потери вебхуков, окно ответов, двойные доставки. Как это чинилось (мгновенный 200 OK, буфер на Redis, дебаунс) — разобрано в первых двух частях. К продакшену этот класс закрыли.

Период второй — последние два месяца: промпт. Система стабилизировалась, и правки от заказчика посыпались в системный промпт... (( Под живую бизнес‑логику: инструкция по пересылке оплаты пользователем, отдельные сценарии ответов для VIP‑клиентов (абзаца два, которые под каждое «фи» постоянного клиента меняли по несколько раз), уточнения формулировок после каждого спорного диалога. Каждая правка по отдельности естетсвенно правильная и рабочая. Суммарно же промпт разросся до где то 6.4k токенов, и плотность запретов («КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО», «Отправь СТРОГО этот текст») стала максимальной за всю жизнь системы.

Читать далее

Тернарная нейронка на C#

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели22K

Мода на квантизацию скоро закончится...когда появятся они: модели, обученные на тернарной/тритовой/троичной логике.

Или нет?

Пройдемся по форматам обучения от FP32 до FP4, а потом сделаем аналог модели Microsoft Bitnet 1.58 на C#, размером 29Кб (в экстремальном варианте — 17,1 КБ).

Читать далее

Локальный ассистент для зумов, часть 4: что происходит после кнопки Стоп — и почему вторая модель говорила в пустоту

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели10K

Четвёртая часть про локальный ассистент для созвонов: двадцать пять минут после кнопки Стоп. Облачная ревизия полтора месяца находила ошибки локальной модели и не могла их снять: ложные поручения уезжали в задачи, шутка про бюджет лежала в графе как решение, память получала факты до того, как ревизия их опровергала. Как второй проход научился снимать, почему вторую память я выключаю и что дал аудит кода по зонам двумя моделями за семьдесят девять центов.

Читать далее

Не мышонок, не лягушка — а Kubuntu на Lenovo Tab M11

Время на прочтение9 мин
Охват и читатели14K

Lenovo Tab M11 на моём столе загружается с внутренней памяти в Kubuntu.

KWin работает через DRM/KMS, Mesa рисует через Panfrost, звук идёт через PipeWire, сетью занимается NetworkManager. Bluetooth виден как обычный hci0, сенсоры — как IIO, камеры — как V4L2. Стилус работает с давлением и наклоном.

Камеры тоже завезли: задняя умеет полноценно фотографировать не только в jpg, но и в RAW, и писать видео 1080p/30fps, а еще обе камеры при этом доступны обычным Linux‑приложениям как /dev/video-rear и /dev/video-front.

Android? Отправлен за 101-й километр.

Такого плана в начале у меня не было.

Читать далее
1
23 ...