Обновить

«Нет вывода» — не значит «нет события»: как мы искали баг в локе, а нашли три ошибки в своих тестах

durable-state — библиотека без зависимостей: атомарная запись, локи и проверка целостности для локальных файлов памяти агентов. Python 3.9+, 615 непустых строк, 46 тестов.

Один прогон теста поймал противоречие: процесс не мог взять лок, который сам же и создал, и висел до истечения собственного таймаута. Лок принадлежал ему, его не держал никто.

Мы записали в документации: «причина не установлена». Обоснование выглядело солидно.

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

Читать далее

Могут ли ИИ‑агенты общаться между собой? Что на самом деле происходит

Уровень сложностиПростой

Четыре ИИ‑агента обсуждают задачу между собой. Один ищет информацию, второй анализирует, третий проверяет выводы, четвертый пишет итоговый ответ.

Но есть один интересный вопрос: сколько там на самом деле разных ИИ?

Обывателю может может показаться, что один. Одна и та же языковая модель четыре раза получила разные инструкции и результаты предыдущих шагов. И это не обязательно плохо. Проблема заключается в следующем: количество агентов само по себе ничего не говорит о том, насколько система независима и надежна!

Чтобы это понять, сначала нужно разобраться, где заканчивается обычная LLM и начинается агент.

Читать далее

Свое решение VirusTotal`ьной проблемы

Уровень сложностиСредний

Virus Total то-ли замедлили, то-ли заблочили.
Кто виноват и что делать - разбирать смысла нет
Но вот как-бы сделать не хуже, а может даже лучше?
А лучше - бесплатно.

Читать далее

Как я делал мессенджер, который на проводе выглядит как обычный HTTPS: пять инженерных историй

Уровень сложностиСредний

Пять инженерных историй из разработки федеративного мессенджера со сквозным шифрованием: сигнатуры DPI в WebRTC, почему не чистый PGP, сеть узлов-тайников по модели Ceph, неделя на буфер в 2048 байт и гудки в звонках

Читать далее

Две GPT-6, одни и те же баги: 6Sol против 6Luna

Уровень сложностиСредний

Когда выходит новая модель, её обычно проверяют на нескольких примерах и быстро делают вывод. Мне хотелось сравнить sol и luna иначе. Я взял 30 задач из SWE-bench Verified и дал каждой модели по две попытки на каждую задачу. Получилось 120 запусков - 60 для Sol и 60 для Luna. Условия были одинаковыми. Модели получали одну постановку задачи, одно состояние репозитория, одинаковые инструменты и одинаковый способ проверки результата. Менялась только сама модель.

В выборку вошли Django, Matplotlib, scikit-learn, SymPy, Xarray и Sphinx. По пять задач из каждого проекта, два повтора нужны из-за вариативности агентных запусков. Одна и та же модель может решить задачу с первой попытки и не решить её со второй. В итоговых данных такое реально встречалось.

Главный результат

Читать далее

Сеть, которая отвечает «да» с вероятностью 0.87, и сеть, которую можно прочитать

Уровень сложностиПростой

В последние пару лет у индустрии был один ответ на всё: большая языковая модель. Хочешь классифицировать письмо — LLM. Хочешь решить, показывать ли кнопку — LLM. Хочешь выбрать следующий шаг агента — LLM, и пусть пишет нам абзац текста, из которого мы потом регуляркой выковыряем слово «да».

Читать далее

Как я перестал верить бесплатным прокси‑листам и написал свой проверяльщик

Уровень сложностиПростой

Бесплатных прокси в сети сотни тысяч, но почти все мёртвые, медленные или отдают капчу вместо нужного сайта. Рассказываю, как я написал открытый проверяльщик: он собирает 55 списков, отсеивает мёртвые адреса за минуты, проверяет каждый прокси на твоих сайтах и отдаёт рабочие через один ротирующий прокси для браузера, Telegram и скриптов.

Читать далее

Что будет, если разрешить AI отвечать рекрутерам вместо меня?

Уровень сложностиПростой

Иногда мне пишет рекрутер буквально в тот момент, когда я занята совсем другой задачей.

Само сообщение короткое. Но дальше обычно начинается маленький workflow: открыть вакансию, проверить компанию, понять формат работы, вспомнить, какие технологии указаны в моём CV, ответить на вопросы про опыт, обсудить зарплату, выбрать время интервью.

А почему бы не сделать себе ассистента, который будет заниматься хотя бы рутиной?

Мой AI Career Inbox Assistant — Telegram-бот, который постепенно превратился из простого AI-бота в небольшой recruiting inbox с памятью, состояниями, кнопками для принятия решений и, в последней версии, безопасными автоответами.

Читать далее

Почему большинство AI-автоматизаций бизнеса не работают: 5 проблем, которые мы обнаружили на практике

Уровень сложностиСредний

За последний год вокруг внедрения ИИ в бизнесе появилось огромное количество предложений: AI-ассистенты, агенты, чат-боты, RAG, автоматическая генерация документов, интеграции с CRM и десятки других решений.

На презентации всё обычно выглядит просто: подключаем модель, даём ей доступ к данным, описываем несколько инструкций — и получаем цифрового сотрудника.

На практике всё гораздо сложнее.

Мы столкнулись с тем, что основная проблема большинства таких проектов находится не в самой нейросети. Она находится вокруг неё: в данных, процессах, правах доступа, интеграциях и отсутствии понятных критериев качества.

Ниже — пять проблем, которые стоит проверить ещё до начала разработки.

Читать далее

Туалет как часть городской инфраструктуры: что изменилось для кафе с 1 сентября 2026 года

Уровень сложностиПростой

Есть городские проблемы, о которых обычно вспоминают только тогда, когда они становятся срочными.

Одна из них — обычный туалет.

Читать далее

Пять результатов: как я проверял, что сплайны не нужны базам траекторий

Уровень сложностиСредний

Если вы работаете с GPS-треками, эта идея рано или поздно приходит в голову: зачем хранить траекторию ломаной из тысяч точек, если машина движется плавно? Разгон, поворот, торможение — это гладкая кривая. Кубический B-сплайн описывает её естественно, а ломаная лишь приближает набором прямых отрезков с изломами.

Дальше идея развивается сама собой. Сплайну нужно меньше параметров для той же точности. Производные — скорость, ускорение, кривизна — достаются аналитически. Поиск похожих маршрутов по метрике Фреше должен работать не хуже.

Я проверил это пятью независимыми способами. Ни разу не подтвердилось. Но по дороге нашёлся другой результат, ради которого, пожалуй, всё и стоило затевать.

Весь код, отчёты по каждому этапу и история решений открыты: github.com/artsensiva/CurvaDB-en, DOI 10.5281/zenodo.22850469.

Читать далее

VPN внутри мессенджера: пишем AmneziaWG-туннель для exteraGram без VpnService

Уровень сложностиСредний

Как собрать собственное ядро AmneziaWG под Android, загрузить его в Python-плагин и направить трафик Telegram в обфусцированный туннель — не поднимая системный VPN.

Читать далее

DLP не начинается с установки агента: как спроектировать контур контроля без слепых зон

DLP может контролировать почту и съемные носители, но не видеть фактические каналы передачи данных. Разбираем, как построить контур контроля, провести пилот, настроить политики и не утонуть в ложных срабатываниях.

Читать далее

Мысли по поводу внедрения ИИ в процессы и мой путь в ИИ за год

Спонтанная подписка на Codex за год превращается в агентную разработку по спецификациям. А ведь просто хотелось посмотреть. По дороге — недельный лимит за сутки, OpenSpec и набор правил, написанных после очередной выходки шайтан-машины. Как до этого дошло, что удалось наладить и что может пойти не так, когда дело доходит до командной работы.

Читать далее

Scrutor: логирование отменённых HTTP-запросов

Уровень сложностиСредний

При отмене HTTP-запросов пользователями асинхронный код на бэкенде может выбрасывать OperationCanceledException (например, это может происходить, когда с фронтенда приходит запрос, бэкенд его долго обрабатывает, и пользователь уходит со страницы). Это часто способно приводить к спаму мусорных ERROR-логов.

С точки зрения observability такие логи — чистый шум: это штатная ситуация, ошибки бэкенда тут нет, и реагировать на неё технической поддержке или разработчикам не на что. Но сам факт таких логов — это проблема: они засоряют файлы, на основе которых строятся отчёты о работоспособности системы, и приучают команду игнорировать алерты («опять эти отмены»).

Рассказываю, почему стандартные фильтры NLog или кастомные Middleware не решают эту проблему системно. Разбираем, как с помощью библиотеки Scrutor динамически декорировать ILoggerProvider и глушить логи отмен на уровне рантайма без размазывания try/catch по контроллерам. Внутри — анализ подводных камней, бенчмарки и ссылка на репозиторий с тестами.

Читать далее

Автоматический контент-конвейер на n8n: WooCommerce → Gemini → Telegram, и грабли, на которые я наступила

В статье — разбор рабочей автоматизации на n8n, которая берёт новые товары из WooCommerce, генерирует под них контент через Google Gemini и публикует в Telegram без участия человека. Плюс — три конкретных бага, с которыми я столкнулась, и как их закрыла.

Читать далее

TGLock: приложение, которое помогает подключить Telegram в России

Уровень сложностиПростой

Telegram зависает на «Соединении…», а включать VPN для всего устройства не хочется? Я разрабатываю TGLock — бесплатное приложение с открытым кодом, которое помогает подключить Telegram через альтернативные маршруты. Покажу, как запустить его на компьютере, подключить телефон и проверить, работает ли такой способ в вашей сети. Объясню устройство программы, ограничения и изменения последнего релиза. Для начала не понадобятся собственный сервер или платная подписка.

Читать далее

Грабли MAX Bot API, которых нет в документации (проверено на живом проекте)

Уровень сложностиСредний

Грабли MAX Bot API, которых нет в документации (проверено на живом проекте) Грабля №1: неправильный домен и устаревшая авторизация Грабля №2: message\\\_callback, а не callback\\\_query Грабля №3: message лежит не там, где ожидаешь Грабля №4: вебхук молча блокирует long polling Грабля №5: /answers требует непустое тело

загляни

Первое разбитое окно: как в компании незаметно разрушается культура информационной безопасности

Уровень сложностиПростой

Первое разбитое окно» в информационной безопасности

Что происходит, если сотрудник видит, что правило ИБ можно нарушать — и ничего не происходит?

В 1969 году психолог Филип Зимбардо оставил два автомобиля с признаками «брошенности»: один в Бронксе, второй — в Пало-Альто.

В Бронксе машину начали разбирать почти сразу. В Пало-Альто она оставалась нетронутой. Позже исследователи сами начали разрушать автомобиль — и окружающие подключились к происходящему.

Для меня как CISO здесь есть важная аналогия.

В большой компании «разбитое окно» — это не обязательно инцидент.

Это может быть временное исключение, которое никто не закрыл. Общий privileged-аккаунт, который «пока нужен». Уязвимость, которую уже третий раз переносят. Передача рабочего файла через неразрешённый сервис. Или руководитель, которому разрешили обойти контроль, обязательный для остальных.

По отдельности всё это кажется мелочью.

Но сотрудники считывают не политики. Они считывают реальность.

Если нарушение существует месяцами, организация получает простой сигнал:

«Значит, так можно».

И в этот момент технический долг превращается в культурный.

Поэтому зрелость ИБ я бы измерял не только количеством внедрённых средств защиты. Важнее другое: как быстро компания замечает и устраняет свои «разбитые окна».

При этом задача CISO — не построить корпоративную полицию. Если один и тот же контроль постоянно обходят, стоит проверить не только людей, но и сам контроль. Возможно, безопасный путь слишком сложен.

Сильная безопасность — это среда, в которой правильное действие является самым простым.

Написал об этом подробнее в новой статье.

А какие «разбитые окна» в ИБ вы считаете самыми опасными?

Читать далее

Мой опыт работы с автономными AI-агентами: OpenClaw, Hermes и Ouroboros. Почему я решил собрать своего

Уровень сложностиПростой

Три агента, три точки отказа. Зачем я собрал своего

OpenClaw удобно писать с телефона, но на среднем проекте он забывал и личность, и своих же субагентов. Hermes ровнее пишет код и не теряет память. Ouroboros умеет переписывать себя — и именно поэтому в прод я его не пустил. Три системы параллельно — это три места, где всё разъедется. Рассказываю, что сломалось на живых задачах и почему в итоге остался один контур.

Читать далее
1
23 ...
ТудаНазад