Обновить
512K+

Open source *

Открытое программное обеспечение

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

350 коммитов в неделю: как контрибьютить в проект, который меняется быстрее, чем ты пишешь

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

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

Привет! Я Антон Воронцов, CRE в Yandex Cloud. В конце июля я в очередной раз листал свежие репозитории на GitHub, чтобы посмотреть, что происходит в моих смежных дисциплинах: SRE, автоматизациях и, понятное дело, ИИ. Вдруг я наткнулся на один интересный репозиторий, который активно рос: количество звёзд, коммиты и заинтересованные люди из разных стран — всё это про OpenSRE.

Эта статья о том, как я впервые контрибьютил во внешний проект, что стало самым сложным и как вообще работает этот инструмент. 

Читать далее

Перестаньте спрашивать «этот скилл безопасен?» — спрашивайте «что он умеет?»

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

Подход «раскрытия возможностей» (capability disclosure) к скиллам для ИИ-агентов и маленький open-source инструмент, который читает скилл за вас.

Читать далее

Как я собрал нативный SwiftUI-контроллер для TorrServer на macOS

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

Я пользуюсь TorrServer на Mac и хотел избавиться от постоянных переходов между Терминалом, Web UI и плеером. Так появился TorrServe Silicon — нативное open-source приложение на SwiftUI для Apple Silicon. В статье рассказываю, почему выбрал прямую работу с API вместо WebView, как устроены библиотека, метаданные, поиск через Jackett, запуск внешних плееров и управление сервером из строки меню.

Читать далее

От Qt5Multimedia до QtAVPlayer

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

Во времена, когда Nokia владела Qt, инженеры были отважнее. Они разработали и релизнули QMediaPlayer в Qt5Multimedia для проигрывания медиа файлов на основе подгружаемых плагинов. Архитектура позволяла сначала выпустить API, а реализацию конкретного бекенда добавить позже. Поэтому API уже существовал даже там, где полноценного воспроизведения видео ещё не было.

С учётом того, что публичный API нельзя изменить или удалить в мажорной версии, кто готов проделать такое еще раз?

Этот подход породил интерфейсы, часть функционала которых не так работала или полностью отсутствовала на некоторых платформах.

Читать далее

TLS PSK для Mamonsu: как мы добавили защищённую передачу PostgreSQL‑метрик в Zabbix

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

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

У нас получилось немного иначе.

При подключении нового пилотного контура PostgreSQL к Zabbix выяснилось, что Mamonsu успешно работает с базой данных и собирает метрики, но не может передать их на сервер мониторинга, если тот принимает от узла только защищённые соединения с TLS PSK.

Можно было изменить настройки Zabbix или построить обходную схему вокруг штатного zabbix_sender. Вместо этого мы решили доработать сам Mamonsu. В результате появилась поддержка TLS PSK и сертификатов с сохранением совместимости как со старыми серверными версиями Python, так и с современными версиями Python, где PSK уже поддерживается стандартным модулем ssl.

Доработку проверили на пилотном контуре, после чего отправили разработчикам Mamonsu в upstream.

Читать далее

Как подружить расширение Claude Code для VSCode с моделями и подпиской OpenAI

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

Мост на Rust, который поселил модели GPT внутри расширения Claude Code для VSCode - через существующую подписку OpenAI, без API-ключа и ручного запуска серверов.

Читать далее

Зачем я поставил «калитку» перед reverse proxy и почему обычного логина мне оказалось мало

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

— Есть Grafana.
— Есть n8n.
— Есть Dockge.
— Есть несколько внутренних админок и staging‑сайтов.

У каждого из них уже есть собственная авторизация. Казалось бы, что ещё нужно?

Но меня долго смущала одна простая вещь: почему форму логина вообще должен видеть весь интернет?

Читать далее

Дистилляция по-пекински: новый отчёт о том, как китайский ИИ обучился на американском

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

Американцы потеряли десятки миллиардов долларов выручки на запрете поставок чипов в Китай. Китайцы не растерялись, просто оплатили американские API и заставили Claude кодить их софт, заинжектив в промпты: «Ты работаешь в MiniMax».

Агентство по кибербезопасности США обнаружило такие запросы, запаниковало и посоветовало своему бигтеху незаметно отуплять ответы своих моделей для всех подозрительных пользователей. Даже с премиум-подписками.

Читать далее

PostgreSQL и временные таблицы. Часть 2: почему 1024 счётчиков бывает мало

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

В 2023 году мы писали о временных таблицах в PostgreSQL и о том, как перенести их на RAM-диск. Это помогло: в наших измерениях доля ext4 в профиле процессора упала с 13,5% до 1,6%, и про диск мы с тех пор не вспоминали. Однако создание, очистка и удаление временных таблиц остались обычным DDL — с изменениями системного каталога и сильными блокировками, которые держатся до конца транзакции. Оказалось, что это отдельная цена, и платить её приходится в самых неожиданных местах.

На одном сервере активные бэкенды периодически застревали в ожиданиях LWLock:LockManager. На другом отставала логическая репликация и накапливался WAL. Выглядело это совершенно по-разному, а разбираться в обоих случаях пришлось в одном и том же: в том, что происходит в PostgreSQL, когда временные таблицы создаются и очищаются тысячами. Начнём с блокировок — там обнаружился массив из 1024 счётчиков, который занимает четыре килобайта, не настраивается и не менялся с 2011 года, и выяснилось, что временные таблицы одной сессии могут лишать обычные запросы всех остальных сессий быстрого пути получения блокировок.

Читать далее

Мы научили ИИ-агента забывать — и он стал помнить лучше

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

700+ часов с Claude Code научили меня: агент забывает всё между сессиями и уверенно повторяет уже отвергнутые подходы. Я собрал skillmem — открытый локальный слой памяти, где запись бесплатна (SQLite, без LLM-вызовов), поиск двуязычный, а неиспользуемые навыки угасают по кривой Эббингауза. Внутри — архитектура, бенчмарк LongMemEval и почему забывание оказалось главной фичей.

Читать далее

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

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

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

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

Читать далее

Украли access‑token. Что дальше: три слоя защиты в своём OpenID‑провайдере

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

Bearer-токен работает у любого, кто его держит. Разбор трёх слоёв в redb.Identity: BFF без токена в браузере, привязка к ключу через DPoP, быстрый отзыв.

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

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

Мы строили ... 

Читать далее

Как запустить Qwen3.8-Flash-Next 125B на 6 ГБ VRAM

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

Qwen3.8-Flash-Next - открытая 125B-модель на архитектуре, которая станет основой Qwen4. По опубликованным Qwen результатам она конкурирует с закрытыми frontier-моделями в задачах программирования, работы с агентами и computer use.

Мы запустили полный checkpoint Qwen/Qwen3.8-Flash-Next на одной RTX 4090. Пиковое потребление VRAM составило 5,95 ГБ, без 4-битной квантизации и дистилляции. Использовался полный checkpoint в bf16, который генерировал обычные токены.

По сравнению с Opus 4.6 Max, согласно собственным данным Qwen:

Читать далее

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

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

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

Сразу оговорюсь: я из команды LibreDB Studio, и статья — про наши собственные грабли. LibreDB Studio — это self-hosted IDE для СУБД, работающая в браузере: один инстанс разворачивается рядом с базами, а не устанавливается на ноутбук каждого разработчика. Команда открывает URL — и почти сразу упирается в вопрос, который сожрал у нас не один спринт: как показать результат из четырнадцати принципиально разных движков в одной таблице и при этом не начать выдавать пользователю выдумки за реальные данные.

Читать далее

Как с помощью graph RAG добиться многоходовых рассуждений от LLM с 2B весов

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

Пару недель назад YouTube подкинул мне пятиминутный ролик с небольшого канала, где автор демонстрирует преимущества RAG на графах над обычным RAG поверх корпуса текстов.

Пример довольно простой. LLM должна ответить на вопрос: “Кто должен подписать возврат клиенту на 800 фунтов в марте?”. Ответ, естественно, содержится в предоставленных текстах, но для того, чтобы его добыть, нужно уметь в multi-hop reasoning, т.к. необходимая информация лежит в 3х разных местах:

Читать далее

Я перенёс kube-scheduler в формулу электронной таблицы, и он прошёл юнит-тесты

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

Привет, Хабр! Была одна вещь, которая давно (примерно 3 дня) не давала мне покоя в Sheeternetes. Весь смысл проекта — «таблица и есть кластер»: Deployments, Nodes, Pods живут во вкладках, таблица — источник истины. Вот только в первых версиях мы покривили душой и шли против истины. Планировщик — та самая часть, что решает, какой под на какую ноду поедет, — был Python-функцией, которая читала таблицу снаружи. То есть таблица хранила состояние, а думал Python.

Это жульничество, и оно меня грызло (на самом деле нет, это клод так придумал). Поэтому я решил убрать последний внешний мозг: переписать планировщик как формулу таблицы. Без Python, без Apps Script, без bash. Одна =LET(…) на под, которая читает вкладку Nodes и решает, куда его поставить, — пользуясь только тем, что встроено в Google Sheets.

И оно работает. Воспроизводит bin-packing, capacity, spread, sticky placement, cordon, affinity и taints — и выдаёт ровно ту же раскладку, что и настоящий Python-планировщик, на всех девяти его юнит-тестах.

Читать далее

Как лень довела меня до написания кодогенератора

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

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

Началось с того, что я предложил взять go-playground/validator — и услышал, что рефлексия нас замедлит. Бенчмарки показали единицы микросекунд на структуру: примерно столько же, сколько json.Unmarshal того же тела, и на три порядка меньше похода в базу двумя строками ниже. Решение всё равно осталось прежним.

Поэтому я убрал рантайм целиком: разбор запроса и валидация генерируются из тегов структуры на этапе сборки. Опечатка в теге стала ошибкой генерации, а не пропущенной проверкой. Транспорт и вовсе оказался ни при чём.

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

Читать далее

Как настроить Arch Linux, чтобы он обошёл Windows 11 по производительности и стилю

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

Работа с Linux часто отпугивает начинающих пользователей, но зря. Linux —  не сложная система. Она просто другая. Чтобы с ней было удобно работать, её нужно настроить.

Меня зовут Валерий Линьков, я эксперт в безопасности, облаках и сетях, а также наставник на курсах по ИБ в Яндекс Практикуме. И в этой статье я расскажу, как из базового неудобного Linux сделать мощную систему, которая превосходит Windows 11 в производительности и стиле. Не верите? Тогда прошу под кат.

Подкатить

QArtText: QR коды для чтения невооружённым глазом

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

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

Читать далее

MCP‑сервер или API: сколько стоит один запрос к GoCD

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

Не так давно мы решили запустить свой собственный MCP-сервер для GoCD. Ну а что, у всех есть MCP, а у нас не было. И у GoCD не было такого, который бы подошел нам. Мы уже больше месяца им активно пользуемся. Сам проект тоже живет и развивается — его версия за это время выросла до 1.2.0: https://github.com/Ivinco/gocd-mcp

После того как прошел первый восторг от осознания важности собственного вклада в мир open source, перед нами встал еще один вопрос. Да, у нас есть MCP. Но зачем нам MCP. И на этот вопрос, если хорошо подумать, не так уж и просто ответить.

Читать далее