Обновить
512K+

Python *

Высокоуровневый язык программирования

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

Just A While Loop (JAWL): асинхронный Python‑фреймворк для событийно‑управляемых ИИ‑агентов с гибридным RAG

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

В марте я уже выкладывал материал про свой ранний проект - AAF (Autonomous Agent Framework). Это был базовый эксперимент, на котором я обкатывал концепции локального контекста и вызова инструментов. За прошедшие месяцы я переписал архитектуру с нуля, учтя накопленный опыт, и сформировал новый фреймворк - JAWL (Just A While Loop).

Если посмотреть на актуальный ландшафт опенсорсных автономных агентов, выделяются два интересных проекта: OpenClaw (созданный Питером Штайнбергером) и Hermes Agent (от Nous Research).

Читать далее

Я разбил две машины и написал оркестратор ИИ‑агентов

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

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

В январе 2026 я вышел на рынок труда искать своего идеального работодателя. Все тестовые задания для SEO-специалиста одинаковы до банальности: провести аудит сайта, написать ТЗ, дать рекомендации. После первого же тестового я понял, что не готов сделать ещё сотню таких. И решил, что помощника проще написать, чем искать, учить, терпеть и оплачивать.

9 января 2026 появилась первая строка кода. Сегодня это Оракул — оркестратор ИИ-агентов: 465 коммитов, ~20 000 строк Python, четыре LLM-провайдера, планировщик, MCP-сервер и первые клиенты. Загрузка по основной работе никуда не делась, так что весь проект — это примерно 4 часа в день.

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

Читать далее

Я прогнал топ VRAM-калькуляторов для LLM — все ошибаются в одном и том же

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

Наивная формула «веса + KV < VRAM» промахивается по двум причинам, и обе стоят денег. Первая: движок (vLLM, SGLang, TensorRT-LLM) резервирует почти всю память под свой пул ещё до того, как вы посчитали KV — поэтому ответ «сколько запросов влезет» всегда мимо, в сторону «влезет», а потом OOM под нагрузкой. Вторая, которую в уме не посчитать: на DeepSeek-V2-Lite обычная формула завышает KV в 7–11 раз, и промах уже в обратную сторону — зря откажетесь ставить модель.

Я прогнал топ VRAM-калькуляторов из выдачи Google, показал на скриншотах, где ломается каждый (даже лучший), сверил числа с живым vLLM на A100/H100 — расхождение ~1% — и собрал ridgepoint: калькулятор, который считает как движок, а не как учебник. Ставится локально (pip install ridgepoint), GPU не нужен.

Сколько реально влезет

Гейт зелёный, а полезные результаты теряются: три ошибки в LLM-конвейере

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

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

Читать далее

Как я автоматизировал выдачу ТСД на складе: от бумажных талонов до Python‑приложения

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

Моя основная работа на распределительном центре — выдача и приём ТСД. Формально автоматизация этого процесса в мои обязанности не входила. Но когда я увидел, как устроена выдача оборудования, решил попробовать самостоятельно изменить процесс — получить практический опыт в автоматизации и оптимизации складских операций.

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

Ссылка на исходный код

Читать далее

Взлом городского мессенджера: разбор цепочки атаки на машину Messenger на платформе Standoff 365

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

Статья рассчитана как на людей, близких к IT и ИБ, так и на тех, кто далек от этих областей. Автор постарался подробно разобрать каждый шаг: почему было принято то или иное решение, на какие признаки он опирался и где искать дополнительную информацию по теме.

Итак, в этой статье взламываем уязвимую машину Messenger, а точнее — проводим эксплуатацию цепочки из двух базовых уязвимостей и реализацию двух бизнес-рисков: «Получение доступа к корпоративной переписке разработчиков городского мессенджера» и «Получение ключа шифрования городского мессенджера».

Читать далее

Zero Downtime Deploy: как обновлять production, не роняя пользователей

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

Представим ситуацию: у вас есть примитивное веб-приложение онлайн-редактора, которое уже набрало среднюю нагрузку под 100 RPS. И вы, как тимлид, дождались того самого дня, когда вся кропотливая работа над обновлением и бессонные ночи наконец завершились.

Настал момент релиза.

Вы радуетесь, что пользователи вашего приложения станут ещё счастливее. Они доверяют вашему сервису свои важные задачи, а вы расширите их возможности и сделаете их жизнь ещё немного лучше.

И вот момент.

3, 2, 1…

Релиз состоялся.

Вы рады. Ваши коллеги тоже рады. Всё прошло успешно.

Но спустя некоторое время к вам заходит начальство с максимально неприятным выражением лица...

Чем недовольно начальство?

Один `settings.py` на всё больше не работает: наводим порядок в настройках Django

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

Один settings.py удобен только в начале проекта. Когда появляются несколько окружений, Celery, Redis, внешние API и объектное хранилище, настройки быстро превращаются в источник скрытых ошибок. Разбираю практическую структуру django-split-settings: без магии, неявных переключений и случайного запуска с production-конфигурацией.

Читать далее

Картинка загрузилась, но API вернул images: [] — ловушка relationship в SQLAlchemy

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

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

Я добавлял в админку сайта портфолио. У проекта есть заголовок, описание и несколько изображений. После загрузки файла API должен вернуть обновлённый проект, чтобы интерфейс сразу показал новую картинку.

Файл сохранялся. Строка появлялась в базе. Повторный GET тоже находил изображение. Но ответ самого запроса загрузки выглядел так:

Читать далее

Как мы автоматизировали перевод технической документации через инструменты вокруг модели

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

Рассказываем, как мы автоматизировали перевод технической документации и построили отдельный слой вокруг LLM, который выполнял главную работу.

Читать далее

Восемь аниме-плееров рунета изнутри: шифр Цезаря, пустой параметр и домен, который увели

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

Я взял за основу популярную опенсорсную библиотеку парсеров аниме-плееров, запустил её — и получил от Kodik 500 Internal Server Error. Не «токен протух», не «IP заблокирован», а именно 500 на каждый запрос. Разбор занял вечер, а причина оказалась в одном символе: библиотека отправляла параметр ref пустым, а сервер требует его заполненным и раскодированным.

Дальше выяснилось, что это не единичная поломка, а норма жанра. Один плеер полгода назад переехал на другой формат страницы. Другой отвечает бесконечным редиректом на самого себя. У третьего домен просто увели — сейчас там индонезийский интернет-магазин, а не аниме. Четвёртый прячет ссылки в WebSocket из обфусцированного бандла на 600 КБ, и его я честно не осилил.

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

Читать далее

Купил ИБП, а его программа недоступна для NVDA. Пришлось написать дополнение

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

Я незрячий и пользуюсь NVDA. После покупки ExeGate LLB-3000 выяснилось, что работать с PowerManagerII с клавиатуры и на слух неудобно. Вместе с Codex я разработал дополнение: разобрали графические кнопки, наладили навигацию, добавили текстовые показания и проверили управление. Рассказываю, как устроено решение и что в этой работе делал я.

Как устроено дополнение

Сканер альткоинов на Python: данные пяти бирж и Telegram Mini App

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

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

Пользователь отправляет тикер и получает три результата: направление активность и итоговый статус.

Читать далее

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

Месяц тюнил поиск по памяти, а починила всё одна строка в промпте

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

Поднял Recall@5 поиска по памяти на 17%, померил качество самих ответов и получил прирост, неотличимый от шума: тест Макнемара, p = 0.79. Месяц работы впустую. Потом посмотрел в промпт, поправил там одну формулировку и получил плюс 16 процентных пунктов за вечер. Модель отказывалась отвечать, когда ответ лежал прямо перед ней.

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

Читать далее

Как я сделал и запустил ГрузоБот: Python, MAX API, SQLite и первые пользователи

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

Несколько месяцев назад я начал делать небольшой сервис для контейнерной логистики.

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

Так появился ГрузоБот это сервис для грузоотправителей, экспедиторов и перевозчиков, работающий через мессенджер MAX.

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

Читать далее

Смерть сабагентов в Claude и Codex

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

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

Но если честно проще в вашем стиле попросить кодекс/клод объяснить как оно все работает, чем читать эту статью, она для неленивых.

Не полениться и прочитать

Один Telegram‑бот, три сервиса, один 301: как я сделал webhook‑router вместо монолита

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

У Telegram-бота может быть только один активный webhook. У меня при этом появились три независимых сценария: поддержка пользователей, управление небольшим магазином и внутренние административные команды. Склеивать их в один процесс не хотелось, заводить отдельного бота под каждый сервис — тоже.

Пока я выбирал архитектуру, переезд панели с одного домена на другой неожиданно провёл бесплатный chaos test: Telegram продолжил отправлять updates на старый адрес, получил 301 Moved Permanently и перестал доставлять сообщения. В очереди зависло шесть updates, а со стороны пользователей бот просто замолчал.

В статье разберу диагностику этого инцидента и устройство небольшого open-source router на FastAPI и Redis: с декларативными правилами, дедупликацией, надёжной очередью, retry и HMAC-подписью внутренних запросов.

Читать далее

Как использовать облачные AI модели внутри контура компании и не получить по шее от ИБ?

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

Или пример того, что будет, если роль пакетного менеджера доверить AI.

[ Перед прочтением ознакомьтесь с политикой безопасности в вашей компании ]

Читать далее

Один пользователь зарегистрировался у вас четыре раза, и все четыре легально

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

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

В базе четыре учётные записи: Ivan.Petrov@gmail.com, ivanpetrov@gmail.com, ivan.petrov+shop@gmail.com, IVAN.PETROV@gmail.com. С точки зрения кода это четыре разных строки. С точки зрения почты - один и тот же ящик, все письма придут в одно место.

Дальше начинается интересное: акции «только для новых пользователей», лимиты на бесплатный период, «одна заявка на человека» - всё это обходится без единой уловки, просто точкой в адресе.

Читать далее

Claude Code взломали просьбой пересказать сайт

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

Представь простую задачу: ты просишь агента пересказать содержимое сайта.
Не установить пакет.
Не запустить скачанный скрипт.
Не открыть подозрительное вложение.
Просто прочитать страницу и сделать краткое резюме. Через несколько шагов на твоей машине выполняется код атакующего, устанавливается соединение с управляющим сервером и для наглядности открывается калькулятор.

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

Такую цепочку продемонстрировал исследователь безопасности Иоганн Ребергер на Claude Code с моделью Opus 5 в Auto Mode. В его небольших сериях тестов атака срабатывала в трёх или четырёх запусках из пяти. Это не означает, что "Claude взламывается с вероятностью 80%", но хорошо показывает более важную проблему: безопасный на вид отдельный шаг ничего не гарантирует, если вся цепочка строится в среде, которую контролирует атакующий.

И чего он там наломал?