Эти три открытый проекта по ИБ позволяют анализировать и изучать беспроводные сети Wi‑Fi:
Wi‑Fi‑autopwner — моделирование взлома сетей Wi‑Fi с простой защитой. Работает в консоли.
Wi‑Fi Exploitation Framework — сервис, который поможет проверить и пробить безопасность беспроводной сети, а также протестировать на ней различные виды тестовых атак: от простых до комплексных.
Freeway — Python‑сервис, который показывает механизм работы беспроводных сетей и их уязвимостей, помогает выявить способы перегрузки сети и смоделировать атаки с нарушением аутентификации.
Достойный внимания proof-of-concept с GitHub: превращаем обычный ноутбук в устройство с сенсорным экраном без какой-либо электроники.
Что понадобится: маленькое зеркало, картон, клей. Бюджет — около 100 рублей
Как это работает:
Зеркало крепится перед веб-камерой под углом так, чтобы камера смотрела вниз на экран
Под острым углом обзора дисплей становится частично отражающим — камера видит палец и его отражение в стекле экрана
Алгоритм анализирует расстояние между пальцем и отражением: если они соприкоснулись — регистрируется клик, есть зазор — курсор следует за пальцем без нажатия
Ограничения очевидны: зависимость от освещения, калибровка, точность. Но как демонстрация принципа — отлично
Проект Pentaract позволяет сделать Telegram бесконечное хранилище файлов и превратить мессенджер в личное облако. Основа — PostgreSQL. Технология максимально экономит место, не создаёт лишний мусор, таблицы или списки. Работает без ограничений и без нарушений политики и целостности Telegram.
Открытый проект SpotX позволяет бесплатно слушать Spotify без рекламы и со всеми Premium-опциями. Всё, что нужно — актуальная версия Spotify и запустить на ПК одну команду.
Для Windows пишем в Powershell: iex "& { $(iwr -useb 'https://raw.githubusercontent.com/SpotX-Official/SpotX/refs/heads/main/run.ps1') } -new_theme".
Для MacOS, пишем в Терминале: bash <(curl -sSL https://spotx-official.github.io/run.sh).
Представлен локальный и бесплатный сервис BentoPDF для работы с PDF. Вся обработка происходит в браузере. Умеет объединение, разделение, поворот, удаление страниц и кроппинг, а также в нём можно быстро добавить вотермарку, сделать нумерацию страниц и поменять текст в файлах. При этом бесплатно, без лимитов и даже регистрацию не просят.
Скрипт устанавливает и настраивает dumbproxy c TLS-сертификатами от LetsEncrypt, выпущенными прямо на IP-адрес сервера, без домена.
Настройка браузеров и прочих клиентов уже обсуждалась в одной из предыдущих статей. Добавлю только, что на сегодняшний день в качестве клиента для Android я бы выбрал NekoBox.
Обновлён проект Python Scripts, где более 60 Python-скриптов для любых задач, включая алгоритмы по парсингу, работе с видео и фото, клонированию сайтов, скачиванию с сайтов и другие популярные решения.
Открытый проект mail2telegram позволяет перенаправляет электронную почту сразу в Telegram. Можно настроить фильтры пересылки, выбрать группу, в которую будут падать письма и автоматом отсеивать весь спам.
Обновлён сборник твикеров, кастомайзеров и проверенных системных решений для Windows под названием System Tools. База данных проект включает ссылки на популярные и полезные утилиты для очистки, твика, удалённого доступа, мониторинга, виртуальных машин, менеджеров дисков, периферии и аудио в системе.
Состоялся первый мажорный релиз открытого проекта для шифрования текста и файлов Stirlitz. Программа написана на языке С++ и распространяется под лицензией GPLv3. Приложение адаптировано для работы в операционных системах семейства Linux, Windows и Android. Для пользователей Arch Linux в AUR доступен сценарий сборки пакета. Для пользователей Windows доступен экспериментальный инсталлятор. Для пользователей Android доступен экспериментальный пакет в формате apk.
Основные возможности Stirlitz 1.0:
Шифрование текста и файлов для передачи через любые каналы публичной связи (мессенджеры, e‑mail сообщения и тому подобное). Шифрование осуществляется на базе публичных ключей (алгоритм Ed25519) и алгоритма шифрования AES256.
Шифрование файлов для локального хранения. Шифрование осуществляется через задание имени пользователя и пароля с использованием алгоритма AES256.
Создание шифрованных профилей для хранения ключей, используемых для обмена сообщениями через публичные каналы связи.
Создание одноразовых профилей: ключи хранятся в защищённой памяти, выделяемой с помощью библиотеки libgcrypt, и уничтожаются после выхода из профиля или закрытия программы.
Криптографические функции вынесены в отдельную библиотеку stirlitz, которая может быть собрана и использоваться полностью независимо.
Для библиотеки stirlitz доступна документация в формате html.
Звёзды разработки и практикующие инженеры разбирают горячие темы — от FAIL до GOD. Встречайте tech-шоу «АйТир Лист» от МойОфис.
В нашем шоу мы берём одну область в разработке, выбираем самые обсуждаемые технологии, практики и подходы — и раскладываем их по шкале от FAIL до GOD. Формат простой: эксперты защищают свои позиции, спорят, соглашаются и не соглашаются. 14 табличек, 14 поводов для споров и честный экспертный рейтинг без попытки всем понравиться.
Дебютный эпизод мы посвятили популярным опенсорс-решениям для фронтенда: от инструментов, которые давно пора отпускать, до стандартов индустрии.
В выпуске:
Александр Коротаев — эксперт по фронтенду и креативному кодингу
Алексей Золотых — тимлид команды веб-редакторов МойОфис
Ведущий — Эдгар Акопян
Обсуждаем инструменты, которые формируют повседневную фронтенд-разработку, и честно отвечаем на вопрос: что сегодня выглядит как GOD-tier, а что застряло на уровне MVP или FAIL.
Во втором эпизоде «АйТир Листа» — уже не инструменты, а язык. Мы устроили полноценную битву мнений вокруг фич и идиом C++: 14 табличек превращаются в 14 поводов для дебатов, где каждая возможность языка проходит через экспертную оценку.
В выпуске:
Данил Черепанов — архитектор редакторов МойОфис
Антон Полухин — эксперт-разработчик C++ техплатформы городских сервисов Яндекс
Ведущий — Эдгар Акопян
Получилось много споров, неожиданных аргументов и ситуаций, где «привычно» не значит «хорошо».
В следующих выпусках продолжим разбирать технологии без скидок на хайп и «так исторически сложилось». Предлагайте темы, а если готовы к жарким спорам – становитесь участниками нашего шоу) А как стать? Пишите в комменты с какой темой бы хотели поспорить!
IMPulse - Open Source менеджмент инцидентов. Freeze, Jira, ChatOps
Прошло достаточно времени с прошлой публикации: мы добавили много нового и хотим поделиться этим и нашими планами.
Из нового
У нас появился механизм Freeze, который выполняет пару задач. С одной стороны он отключает уведомления по инциденту на некоторое время, например на выходные. С другой - исключает создание таких же инцидентов на время "заморозки". Этот функционал похож на Silence Alertmanager'а.
Появилась интеграция с системой трекинга задач, Jira.
Теперь есть возможность просматривать закрытые (архивные) инциденты.
Добавлены метрики.
IMPulse теперь можно запускать в нескольких экземплярах. В случае недоступности основного (primary) инстанса, работу подхватит запасной (standby).
Webhook'и стали ещё мощнее. Теперь с их помощью можно очень гибко формировать JSON для отправки в любую сторонюю систему.
IMPulse научился перечитывать (reload) конфигурацию без полной перезагрузки. Также вы можете добавить проверку конфигурации в CI/CD перед её применением.
В UI теперь есть индикатор online / offline, чтобы понимать, актуальная ли сейчас информацию на экране. К слову, несмотря на внешнюю простоту, UI очень гибок: умеет фильтровать инциденты по лейблам (в качестве фильтров можно использовать regex'ы), можно сортировать инциденты по нескольким столбцам, а также выделять цветом интересующие данные.
В случае заполнения диска, IMPulse теперь продолжит работать. Обновления по инцидентам будут храниться в оперативной памяти пока не появится место на диске. Настройте алерты на ERROR логи, чтобы вовремя среагировать.
Планы
В первой статье я уже упоминал, что мы считаем крайне важным для всех, кто работает с инцидентами, иметь общий контекст. Многие решения при проектировании принимались, исходя из этого. Сейчас можно констатировать, что ChatOps стал основой IMPulse и дальнешее движение будет под этим знаменем. Мы будем глубже интегрироваться с мессенджерами, чтобы команде дежурных / devops'ов не нужно было переходить в UI. Да, обязательно останутся задачи, которые не решить в рамках мессенджера, но мы постараемся минимизировать их количество.
Здесь часть из наших планов на ближайшие пару месяцев:
добавить работу с группами в Slack и Mattermost;
добавить в UI механизм аутентификации;
перенести кнопки для работы с инцидентами в UI;
реализовать механизм подавления инцидентов на основе правил по аналогии с Inhibition в Prometheus. Если согласно правилам инцидент становится дочерним, то уведомления по нему прекращаются пока не будет решена основная проблема. Это позволит уменьшить количество активности по инцидентам.
По поводу других новшест мы пока сохраним интригу!
Критика и советы
Мы растём, решаем всё больше проблем, но конечно же всегда остаются незакрытые потребности. Будем рады услышать, чего не хватает лично вам и постараемся с этим помочь. Особенно интересно услышать мнение людей, которые ищут куда мигрировать с Grafana OnCall. Мы открыты к обратной связи и критике, будем рады услышать замечания. Наша задача - стать лучше благодаря сообществу.
Оставайтесь с нами в Telegram - мы используем его для общения с русским сообществом, следите за обновлениями в GitHub. Мы продолжаем!
WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы.
Пакет плагинов, обеспечивающий ручную и автоматическую отправку url адресов Joomla в поисковые системы на переиндексацию по протоколу IndexNow.
Согласно документации протокол поддерживают все крупнейшие поисковые системы, кроме Google. Протокол служит для получения от сайтов URL, которые нужно переиндексировать заново или проиндексировать в первый раз как можно быстрее. Отправка адресов сайта таким образом существенно ускорит индексацию нового или изменённого контента поисковыми системами.
Поисковые системы по этому протоколу обмениваются друг с другом данными, поэтому отправив URL в одну из них вы сообщаете их сразу всем.
Протокол IndexNow поддерживают:
Amazon
Microsoft Bing
Naver
Seznam.cz
Yandex
Yep
Суточный лимит URL - 10000 в сутки. Возможна отправка вручную и автоматически. Пакетом поддерживаются:
материалы и категории материалов Joomla
контакты и категории контактов Joomla
SW JProjects - компонент каталога расширений для Joomla
JoomShopping - компонент интернет-магазина для Joomla
В партнерском материале расширяются результаты нагрузочного тестирования из статьи «Нагрузочное тестирование GP6 vs GP7 vs Cloudberry» и презентуются результаты тестирования YMatrix. Это дополнение к предыдущей статье, призванное сформировать понимание сравнимости результатов различных форков GreenPlum.
Проект с открытым исходным кодом bookhunter позволяет охотиться за книгами. Не нужно искать по сети и натыкаться на ограничения. Решение имеет удобный интерфейс.
Представлен открытый защищённый менеджер паролей PearPass, который хранит ключи на локально и не передаёт их в облако. Синхронизация между устройствами пользователя происходит через зашифрованное соединение. Есть встроенный генератор надёжных паролей. Приложение также проверяет слабые пароли.
Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0.
Этот метод регистрирует устаревшие слушатели событий в диспетчере, имитируя работу плагинов Joomla! 3.x и ниже для Joomla 4+. По умолчанию этот метод ищет все общедоступные методы, название которых начинается с on. Он регистрирует лямбда-функции (замыкания), которые пытаются преобразовать аргументы отправленного события в аргументы вызова метода и вызвать ваш метод on<Нечто>. Результат передаётся обратно событию в его аргумент result.
Теперь этот слой совместимости с устаревшей Joomla 3 помечен к удалению в Joomla 7.0, которая должна выйти осенью 2027 года. Это означает, что те уникальные расширения от Joomla 2.5 / Joomla 3, которые ещё работали на Joomla 4-6 скорее всего окончательно перестанут работать на Joomla 7. Предполагается, что активные разработчики планомерно и постепенно избавляются от технического долга и обновляют свои расширения 😎
Находим зловреды в любых файлах. Представлен открытый проект для анализа статического вредоносного ПО Qu1cksc0pe. Решение умеет анализировать исполняемые файлы, показывать, какие DLL файлы используются, видит все функции и API, разделы и сегменты, URL-адреса, IP-адреса, электронные письма, считает разрешения на Android, расширения и имена файлов. Проект сканирует документы: Word, Excel, HTML, Portable, OneNote, а также находит вирусы в файлах архивов ZIP, RAR и ACE.
Всем привет! Hello, everyone! Hallo zusammen! Hola a tothom! مرحباً بالجميع!
В нашем блоге мы часто говорим про статический анализ, линтеры и подобные инструменты. Но на этот раз мы нашли их довольно интересного представителя! LanguageTool — это многоязычная программа проверки орфографии, стилистики и грамматики, которая помогает исправлять и перефразировать тексты.
В новой статье заглянем в её код и посмотрим на интересные вещи, которые нашёл в нём статический анализатор кода PVS-Studio: от утечек ресурсов и логических противоречий в условиях до дублирующихся ключей в хеш-таблицах, избыточных проверок и мёртвого кода.
Шифруем любой файл в PNG-картинку. Представлен открытый проект дешифратора ShadeofColor. Возможности: обход фильтров и блокировок (вместе .exe, .zip или .docx присылаем обычные изображение), незаметная передача файлов (PNG не вызывает подозрений), удобная архивация для визуальной сортировки, предпросмотра и каталогов. Это наглядный пример, как можно кодировать данные в цвета.
Привет, друзья! Мой коллега Марк, ведущий архитектор GlowByte, поделился в новой статье результатами тестирования YMatrix.
Сразу оговорюсь, что это дополнение к предыдущей статье, для того, чтобы сформировать понимание сравнимости результатов различных форков GreenPlum, поэтому акцентировать внимание будем только на YMatrix. Детали по методике тестирования и как были получены результаты для GP6, GP7 и Cloudberry 1.6, можно прочитать в предыдущей статье по ссылке выше.
Добро пожаловать в статью! Комментарии приветствуются.
📊 Multi-LLM Orchestrator v0.7.0: подсчёт токенов и мониторинг через Prometheus
На этой неделе вышел релиз v0.7.0 — завершена фаза observability. Теперь библиотека автоматически считает токены, оценивает стоимость запросов и экспортирует метрики в Prometheus. Всё работает из коробки.
Библиотека автоматически считает токены для каждого запроса — и для prompt, и для completion. Используется tiktoken с fallback на оценку по словам.
from orchestrator import Router
from orchestrator.providers import GigaChatProvider, ProviderConfig
router = Router()
router.add_provider(GigaChatProvider(ProviderConfig(
name="gigachat",
api_key="your_key",
model="GigaChat",
verify_ssl=False
)))
# Токены считаются автоматически
response = await router.route("Напиши стихотворение про Python")
# Получаем статистику
metrics = router.get_metrics()
print(f"Total tokens: {metrics['gigachat'].total_tokens}")
print(f" Prompt: {metrics['gigachat'].total_prompt_tokens}")
print(f" Completion: {metrics['gigachat'].total_completion_tokens}")
Результат:
Total tokens: 75
Prompt: 20
Completion: 55
💰Оценка стоимости запросов
Расчёт стоимости в реальном времени. Цены настраиваются в pricing.py (фиксированные значения для демонстрации — для production рекомендуется настроить под свои тарифы).
Результаты тестов с реальными провайдерами:
GigaChat: 75 tokens → ₽0.0750
YandexGPT: 105 tokens → ₽0.1575
Streaming: 342 tokens → ₽0.3420
📈 Интеграция с Prometheus
HTTP-эндпоинт /metrics в формате Prometheus. Метрики обновляются в реальном времени и готовы для scraping.
Представлена открытая библиотека Telegram-ботов для разных задач Awesome Telegram. Там есть боты: поисковики, интеграторы с сотнями сервисов, для удаления ватермарок, загрузчики видео, аудио и картинок, генераторы картинок, стикеров, текстов, поздравлений. К каждому боту авторы приложили описание работы и инструкцию.
Компьютерное зрение для кода: что PVS-Studio разглядел в OpenCV
Что общего у компьютерного зрения и статического анализа? Оба ищут смысл в данных. OpenCV находит образы среди миллионов пикселей, а PVS-Studio — ошибки среди тысяч строк кода. Изучим же исходники крупнейшей библиотеки компьютерного зрения.
На примере 14 фрагментов кода из OpenCV предлагаю посмотреть, как статический анализ помогает избежать попадания багов в релиз и облегчить жизнь разработчикам.
Давайте посмотрим на кусок кода из проекта:
template<typename T>
struct Ptr : public std::shared_ptr<T>;
// ....
Ptr<FlannNeighborhoodGraph> FlannNeighborhoodGraph::create(....)
{
return makePtr<FlannNeighborhoodGraphImpl>(....);
}
void Utils::densitySort (const Mat &points, int knn,
Mat &sorted_points, std::vector<int> &sorted_mask)
{
// ....
FlannNeighborhoodGraph &graph = // <=
*FlannNeighborhoodGraph::create(....);
std::vector<double> sum_knn_distances (points_size, 0);
for (int p = 0; p < points_size; p++) {
const std::vector<double> &dists = graph.getNeighborsDistances(p);
for (int k = 0; k < knn; k++)
sum_knn_distances[p] += dists[k];
}
// ....
}
Если вы думаете, что использование умных указателей раз и навсегда решает проблему "висячих" ссылок и доступов к памяти, то здесь всё пошло не так. Давайте разбираться. Сейчас код работает следующим образом:
Функция create создаёт и возвращает умный указатель на тип FlannNeighborhoodGraphImpl, и его счётчик ссылок на объект равен единице;
Создаётся ссылка graph на значение этого умного указателя, при этом счётчик ссылок на объект не изменяется;
Указатель является временным объектом, и поэтому после завершения инициализации счётчик ссылок уменьшится до нуля, что приведёт к освобождению управляемого объекта. Теперь ссылка указывает на разрушенный объект;
В цикле for происходит обращение к невалидной ссылке.
В итоге код, который казался правильным, приводит к неопределённому поведению. Кроме того, эту проблему находит не только PVS-Studio, но и санитайзер. Пруф.
Для исправления необходимо сохранить умный указатель, тогда объект типа FlannNeighborhoodGraph будет жить до конца блока. Можно сделать так:
std::vector<double> sum_knn_distances (points_size, 0);
{
// get neighbors
auto graph = FlannNeighborhoodGraph::create(....);
for (int p = 0; p < points_size; p++) {
const std::vector<double> &dists = graph->getNeighborsDistances(p);
for (int k = 0; k < knn; k++)
sum_knn_distances[p] += dists[k];
}
}
Дополнительно ограничили область видимости graph, чтобы ресурс освободился после выполнения циклов.
Хотите узнать больше?
Статический анализ выявляет скрытые дефекты даже в больших работающих проектах. Какие ещё опасные фрагменты кода мы нашли в коде OpenCV? Полный разбор можно найти в отдельной статье.
Совет по Joomla: использовать выключенное состояние для кнопок в списках элементов админки - listCheck().
Мы добавляем в тулбар панели администратора Joomla некую кнопку, которая что-то делает со списком id выделенных элементов и ajax-запросом отсылаем их в свой плагин. Но нам надо предупредить нажатия на кнопку в тех случаях, когда ни один элемент не был выбран. Для этого можно написать свою проверку на js. А можно воспользоваться встроенной в Joomla.
Добавить кнопку в тулбар Joomla 6.
use Joomla\CMS\Toolbar\Button\BasicButton;
use Joomla\CMS\Language\Text;
// ниже по коду, где-нибудь в плагине на onAfterDispatch()
// Предварительно проверяем в каком компоненте мы находимся по option из $app->getInput()
// пример из плагина, поэтому $this->getApplication()
$app = $this->getApplication();
// Берём текущий тулбар
$toolbar = $app->getDocument()->getToolbar('toolbar');
// Создаём кнопку
$button = (new BasicButton('send-to-indexnow'))
->text(Text::_('PLG_WTINDEXNOWSWJPROJECTS_BUTTON_LABEL'))
->icon('fa-solid fa-arrow-up-right-dots')
->onclick("window.wtindexnowswjprojects()");
// Добавляем кнопку в тулбар
$toolbar->appendButton($button);
Заблокировать кнопку тулбара Joomla, если не выбраны элементы списка.
Теперь нам надо проверить находимся ли мы в списке. Делаем это по view из $app->getInput().
И если мы в списке - используем метод $button->listCheck(true), который сделает проверку за нас. Если ни один элемент не выбран - кнопка в тулбаре Joomla будет заблокирована и JS-обработчик не будет вызван. Этот метод есть у всех классов кнопок, наследующих класс \Joomla\CMS\Toolbar\ToolbarButton.
Всем привет! Меня зовут Катя, я развиваю Gramax, open source-платформу для управления технической документацией. За последние 3 месяца мы сделали много новых полезных функций, коротко расскажу о самых важных.
Интеграция с GitVerse. Теперь в качестве хранилища можно использовать GitVerse. Как подключить GitVerse к Gramax читайте в статье.
Поддержка Gitea. Также добавили поддержку Gitea: доступно подключение в качестве хранилища и использование всех возможностей Gramax.
Экспорт в PDF и DOCX в собственных стилях. Можно настроить вид документа: добавить титульную страницу, оглавление, номера заголовков, собственные шрифты и отступы и так далее. Для DOCX — с помощью стилей, для PDF — с помощью CSS. Применяется при экспорте из приложения, портала документации и в CI/CD.
Предпросмотр загруженных файлов. Теперь при клике на загруженный файл в статье открывается окно предпросмотра. Отображаются файлы форматов DOCX и PDF. Остальные форматы — скачиваются.
Улучшения поиска.
Новое ранжирование. Больший вес дается результатам, в которых искомое слово содержится в названии статьи или в одном из заголовков.
Переход к поисковой фразе. После клика на результат поиска статья откроется на том фрагменте, в котором есть поисковый запрос.
Настройка поисковой выдачи. Для статей можно указать поисковые запросы: если в поиске ввести один из них, статья отобразится выше остальных.
Поиск по свойствам в приложении. Если на статьях установлены свойства — в поисковой строке можно отфильтровать по ним.
Улучшение внешнего вида. Теперь в результатах есть указание на каталог, в котором содержится запрос. А также отображается иерархия заголовков в статье.
Улучшения Gramax Enterprise Server.
Разворачивание с помощью Helm. Добавили новый способ разворачивания Gramax Enterprise Server в Kubernetes.
Тестирование знаний. Реализовали модуль проверки знаний читателей: в статью можно добавить тест с разными типами вопросов. После прохождения статистика пользователей отобразится в панели администрирования.
Поиск по вложенным файлам. Теперь поиск учитывает не только контент статьи, но и контент из PDF и DOCX-файлов.
Привет, Хабр! Тем, кому регулярно приходится заглядывать в etcd — будь то QA, поддержка или разработчики — хорошо знакома ситуация, когда нужно разобраться с неожиданным состоянием сервиса, проверить конфиги или найти застрявший лок. И каждый раз всё сводится к одному: копировать ключ, запускать etcdctl get, читать многострочный JSON в терминале, ошибаться в пути… и в какой-то момент понимаешь, что это однообразие выматывает больше, чем сама проблема.
Поэтому наш коллега из Хайстекс сделал небольшой TUI-инструмент, который заметно упрощает работу с etcd и делает её куда дружелюбнее для тех, кто каждый день копается в окружениях. Он снимает рутину etcdctl, даёт привычную “каталожную” навигацию, подсвечивает скрытые _-ключи, позволяет комфортно открывать большие конфиги и помогает разбираться с локами, которые любят появляться в самых неожиданных местах.
Если вы в QA, поддержке или просто часто работаете с etcd, этот инструмент легко сэкономит вам время и нервы.
📊 Multi‑LLM Orchestrator v0.6.0: метрики провайдеров и умный роутинг
На этой неделе на Хабре вышла статья про Multi-LLM Orchestrator — библиотеку для работы с российскими LLM через единый интерфейс. Сегодня релиз v0.6.0 добавляет метрики провайдеров и стратегию роутинга на основе health status.
Автоматический сбор метрик
Роутер отслеживает каждый запрос и собирает статистику по провайдерам. Latency, success rate, количество ошибок — всё фиксируется без дополнительной настройки.
from orchestrator import Router
from orchestrator.providers import GigaChatProvider, ProviderConfig
router = Router(strategy="best-available")
router.add_provider(GigaChatProvider(
ProviderConfig(name="gigachat", api_key="...", model="GigaChat")
))
# После нескольких запросов
metrics = router.get_metrics()
print(f"{metrics['gigachat'].avg_latency_ms:.0f}ms")
print(f"Health: {metrics['gigachat'].health_status}")
Система отслеживает среднюю задержку и rolling average по последним 100 запросам. Если провайдер начинает деградировать, это видно сразу.
Health status провайдеров
Роутер классифицирует каждого провайдера автоматически:
healthy — error rate меньше 30%, стабильная latency
degraded — error rate 30-60% или задержки растут
unhealthy — error rate выше 60%
Классификация происходит на лету, без пороговых значений в конфигах.
Стратегия best-available
Новая стратегия роутинга выбирает провайдера на основе метрик. Приоритет отдаётся healthy-провайдерам, среди них — с минимальной задержкой.
router = Router(strategy="best-available")
router.add_provider(gigachat_provider)
router.add_provider(yandexgpt_provider)
# Роутер выбирает самого здорового и быстрого
response = await router.route("Вопрос")
Если GigaChat деградирует до 3 секунд, а YandexGPT стабильно отвечает за 500ms — роутер переключится на YandexGPT.
Тестирование на боевых API
Запущена серия тестов с реальными запросами к GigaChat и YandexGPT. Результаты подтверждают стабильность системы метрик.
Метрики провайдеров: GigaChat vs YandexGPT (fallback-тест)
Первый тест показал базовую работу: GigaChat отвечает за ~1.7 секунды со 100% success rate. Второй тест проверил fallback при ошибке авторизации — роутер переключился на YandexGPT без потери запроса. Третий тест подтвердил корректность метрик при streaming-запросах.
YandexGPT показал стабильные 500-700ms на серии из шести запросов. GigaChat медленнее (~1.7s), но это ожидаемо для более тяжёлой модели. Success rate обоих провайдеров — 100%.
Structured logging
Каждый запрос логируется в структурированном формате с полями provider, model, latency_ms, streaming, success. Интеграция с Prometheus или Grafana требует только парсинг JSON
# При успехе
logger.info("llm_request_completed", extra={
"provider": "gigachat",
"latency_ms": 1723
})
# При ошибке
logger.warning("llm_request_failed", extra={
"provider": "yandexgpt",
"error_type": "RateLimitError"
})
[ВИДЕО] AmoCRM + Joomla: быстрая настройка интеграции. Библиотека WT AmoCRM.
- Как быстро настроить интеграцию AmoCRM и сайта на Joomla?
- использовать PHP библиотеку WT AmoCRM для Joomla, которая предполагает использование её разработчиками. А разработчики могут написать любое количество плагинов и решений по интеграции и автоматизации AmoCRM и Joomla.
Больше никаких мучений с Markdown — расширение Markdown Viewer превращает все файлы Markdown в Word-документы без боли и страданий. Захватывает инфографику: любые схемы, диаграммы, графики в чистые картинки. Берёт формулы из LaTeX и переносит их в Word нативно, а не в формате ужасных вставок. Переносит форматирование — подсвечивает код, сохраняет таблицы и списки, как в оригинале. Работает локально. Подходит для работы с GitHub: открывает документы и даёт перенести всё в Word.
Представлен проект открытого бота на Python для Telegram с торрент клиентом. Решение умеет загружать файлы по магнет-ссылкам и ссылкам на Google-диск, есть поисковик торрентов и встроенный yt-dlp.
Представлен открытый проект Telegram Downloader, который умеет легально, быстро и легко скачивать любые файлы даже из защищённых каналов и чатов, где закрыта пересылка контента:
качает даже тяжёлые файлы за несколько секунд.
загрузки экспортируются в JSON-формат прямо на локальный диск.
работает локально — вся информация о загрузках будет только на локальном ПК.
Repeater запускает задачи по расписанию. Задачи описываются в toml-файлах и отображаются в веб-интерфейсе.
title = "wiki"
cron = "55 * * * *"
[[tasks]]
name = "wiki_pageviews"
cmd = "python3 ./examples/wiki_pageviews.py --end_date={{.scheduled_dt}}"
[[tasks]]
name = "trigger_outliers_update"
cmd = "python3 ./examples/trigger_outliers_update.py"
Возможен запуск при завершении другой задачи, уведомления о падениях, параллельные этапы. Repeater подойдёт для импорта данных и обновления витрин в хранилище.
Представлена подборка Awesome Privacy из 100 сервисов-аналогов всем популярным платформам, но с упором на безопасность и приватность данных, включая файловые менеджеры, облачные хранилища и клавиатуры.
База проектов опен-сорсных игр, а также различных аналогов платных тайтлов различных жанров. Многие проекты устанавливаются за один клик или открываются прямо в браузере.
В июле я писал о том, что Gaunt Sloth Assistant дошёл до версии 0.9.2. Сегодня мы наконец можем сказать, что вышла версия 1.0.0. В этом релизе мы перевели основную зависимость на LangChain/LangGraph v1, обновили минимальные требования до Node 24/npm 11 и официально объявили CLI готовым к повседневной автоматизации.
Что изменилось с прошлого поста?
Ревью теперь завершаются вызовом встроенного рейтингового инструмента. По умолчанию шкала 10/10, порог прохождения 6/10, и оценки ниже 6 заставляют команду review возвращать ненулевой код (non-zero exit code). Если нужен только режим предупреждений, установите commands.review.rating.enabled (и/или commands.pr.rating.enabled) в false в .gsloth.config.*.
Профили идентичности стали частью базового сценария: один флаг -i profile-name, и вы переключаете промпты, модели и провайдеры на уровень нужной папки.
Middleware теперь сущность первого класса. Можно комбинировать встроенные варианты вроде anthropic-prompt-caching или summarization, подключать собственные объекты на JS, а CLI показывает, что именно выполняется при каждой команде.
Глубокое слияние конфигов команд устранило проблему, когда переопределение источника контента стирало настройки рейтинга. Теперь значения по умолчанию сохраняются даже при частичных правках.
Мы освежили кеш OAuth, документацию и README, чтобы новичкам было проще стартовать, и параллельно усилили безопасность зависимостей.
Профили идентичности — главный QoL‑апгрейд 1.0.0. Они позволяют мгновенно переключаться между системными промптами, пресетами моделей и наборами инструментов под конкретную задачу. gth pr 555 PP-4242 по‑прежнему читает .gsloth/.gsloth-settings, а gth -i devops pr 555 PP-4242 автоматически берёт конфиг из .gsloth/.gsloth-settings/devops/ со своими промптами и провайдерами.
Нужно поговорить с Jira через MCP? Создайте профиль вроде jira-mcp со своим конфигом и запустите gth -i jira-mcp chat. Укороченный пример:
Переключение между такими папками теперь — один флаг, поэтому удобно держать отдельные персоны для DevOps, документации или любого удалённого MCP.
Rater — второй крупный прорыв. Ревью всегда содержали текстовый фидбек, но в 1.0.0 оценка стала действенной: мы сохраняем её в хранилище артефактов, передаём в модуль ревью и вызываем setExitCode, чтобы CI автоматически падал при невыполнении цели по качеству. Настройка защит для продакшн‑сервисов занимает теперь секунды и не требует самописных скриптов.
Наконец, реестр middleware и хранилище артефактов дают аккуратные точки расширения на будущее. Можно оборачивать вызовы моделей и инструментов, логировать каждую операцию и при этом оставлять Gaunt Sloth вести те же chat/code/pr/init команды. CLI как и раньше — небольшой TypeScript‑бинарь, который устанавливается через npm или запускается npx gth, но теперь у него архитектура, позволяющая развиваться без костылей.
Хотите попробовать релиз — быстрый путь всё ещё npm install -g gaunt-sloth-assistant
репозиторий https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant пригодится как справочник и место для issues. Заводите issue, оставляйте фидбек в Discussions или подключайте rater к своему CI и расскажите, как он себя ведёт — буду рад помощи в движении к 1.1.