ITTales :(){ :|:& };:
Ir al canal en Telegram
1 558
Suscriptores
+124 horas
+97 días
+4630 días
Archivo de publicaciones
Vibe Coding: как внедрять ИИ в инженерные процессы без магии и самообмана
В этом выпуске я рассказываю, как мы используем Claude Code и AI-агентов в повседневной работе инженерной команды Ænix.
За последний год AI для нас перестал быть просто помощником для генерации кода. Сегодня он участвует практически во всех процессах: разработке, отладке, код-ревью, исследованиях, документации, поддержке клиентов и даже подготовке архитектурных решений.
0:00 Почему мы считаем себя AI-first компанией
2:29 Какие модели и инструменты используем на практике
5:11 Как организовать работу команды вокруг Claude Code
12:00 CLAUDE.md, AGENTS.md и правила для агента
14:55 Как работать с контекстом, планами и памятью агента
21:02 Скиллы: как шарить знания внутри команды
26:07 MCP, хуки и автоматизация внешних систем
30:15 Как писать промты и общаться с нейронкой
33:24 Реальные кейсы: презентации, сайт и фронтенд
38:09 Когда агентный подход работает, а когда превращается в самообман
46:06 Линтеры, параллельные агенты и код-ревью
55:03 Spec-driven разработка: где граница между инженером и AI
58:31 Дебаг Kubernetes и инфраструктуры через AI
1:02:34 Постмортемы и артефакты сессий
1:05:55 RTFS: читаем исходники open-source вместо документации
Ralph Wiggum простыми словами: цикл в Claude Code, который не останавливается
https://habr.com/ru/companies/aenix/articles/1041372/
Последний мейнтейнер
Недалёкое будущее. В каждом GitHub-репозитории появилась программа-хранитель. Он отвечает на issues, обновляет зависимости, пишет код и годами поддерживает проект почти без участия людей.
Казалось бы, что могло пойти не так?
https://habr.com/ru/articles/1041332/
Третья часть серии про внутренности controller-runtime и Kubernetes API.
Теперь поговорим про жизненный цикл объектов в Kubernetes. Что происходит между kubectl apply и записью в etcd? Как работают admission webhooks, ownerReferences, финализаторы и Garbage Collector? Почему объекты застревают в Terminating и как Kubernetes выполняет каскадное удаление? Эволюция CRD от v1alpha1 до v1, conversion webhooks и совместимость между версиями API.
https://habr.com/ru/companies/aenix/articles/1040618/
Для тех кому интересно что из этого в итоге вышло, вчера выехала первая версия Blockstor. Пайплайн готов, тест кейсы собраны. Развлечение на вечер пятницы обернулось приключением на три недели. Но весь необходимый функционал был реализован, включая DRBD, ZFS, LVM, шифрование, снапшоты, совместимость с linstor-клиентами была сохранена.
Анонс на опеннете:
https://www.opennet.ru/opennews/art.shtml?num=65546
Исходники проекта:
https://github.com/cozystack/blockstor
Присоединяйтесь к разработке и тестированию
Вторая часть серии про внутренности controller-runtime и Kubernetes API — теперь про запись.
Если в прошлый раз говорили про кэш, watch'и и чтение объектов, то теперь разберём: как работает three way merge и server side apply, зачем нужны managedFields, как apiserver хранит ownership полей.
И главное — как всё это позволяет нескольким контроллерам безопасно менять один объект одновременно.
https://habr.com/ru/companies/aenix/articles/1039282/
Repost from Безумный кот (work)
Век живи — век учись ☹️
Через каждого инженера проходит такое количество информации, что часть вещей вроде бы и слышал, но до конца не осознал или просто никогда не применял на практике.
Сегодня словил себя на этом же 👀
Всегда думал, что в Kubernetes есть только:
• SelfSubjectAccessReview — проверка «могу ли Я сделать действие»
• SubjectAccessReview — проверка «может ли другой пользователь/SA сделать действие»
Например:
kubectl auth can-i create pods
А оказывается есть еще и:
kind: SelfSubjectRulesReviewЭта штука позволяет получить effective RBAC rules для текущего пользователя в рамках namespace. Пример:
apiVersion: authorization.k8s.io/v1 kind: SelfSubjectRulesReview spec: namespace: defaultили привычнее:
kubectl auth can-i --list -n default
Но тут есть интересный нюанс:
SelfSubjectRulesReview namespace-oriented и не умеет нормально показывать “все права во всем кластере”.
То есть cluster-scope права приходится проверять точечно:
kubectl auth can-i list nodes
kubectl auth can-i list namespaces
****
Может это и хорошо забытое старое но приятное 😇Сегодня наткнулся на интересный тред про серый рынок “дешёвого Claude API”.
На TaoBao и других площадках сейчас можно купить “безлимитный Claude Opus” за пару баксов.
На практике же вам дают не “дешёвый доступ к Opus”, а обычный relay между вами и настоящим API.
И, кажется, весь смысл таких сервисов вообще не в продаже токенов. А в сборе всего, что через них проходит. Причём речь уже даже не столько про SSH keys, kubeconfig’и или внутренние документы компаний. Основная цель всей этой истории — попытка массово спарсить frontier-модели.
Собирать:
— промпты,
— reasoning,
— agent workflows,
— код,
— ответы модели,
— реакции пользователей,
— паттерны использования,
а дальше использовать это для distillation, fine-tuning и обучения собственных моделей. Иначе экономика таких сервисов выглядит довольно странно.
И да, в какой-то момент вместо Opus вам вполне может отвечать вообще другая модель, а вы этого даже не заметите. Зато всё, что вы через неё прогоняете, остаётся у владельцев relay.
https://x.com/i/status/2056626175959826692
Зацените какую штуку тут товарищ написал:
https://github.com/crust-gather/crust-gather
Она сохраняет стейт Kubernetes кластера в файл (со всеми CRD, статусами, подами и их логами)
Потом его можно запустить локально и в нем покопаться обычным kubectl. Можно клода натравить, можно k9s, и т.п.
Идеально подходит чтобы интегрировать в свой пайплайн. Написано на rust'е.
Завтра будет рассказывать о ней на KCD
https://kcd-czech-slovak-2026.sessionize.com/session/1195463
(есть прямая трансляция)
Пользуюсь майндкартами ровно для одного кейса — когда готовлюсь к презентации.
На мой взгляд, главное преимущество майндкарт — это быстрое и удобное перемещение по дереву. Мне крайне важно видеть всё дерево целиком и иметь простую навигацию по нему: создавать элементы, удалять, сворачивать/разворачивать — и конечно же всё это с клавиатуры.
К сожалению, все доступные сейчас реализации либо ужасно неудобные, либо ужасно нефункциональные.
Есть формат Markmap, который позволяет писать майндкарты на Markdown. Он весьма неплохой, но в нём нет возможности генерировать Markdown обратно из самой майндкарты, а мне как раз нужно именно это.
Хочется спокойно накидать мысли, не отвлекаясь на форматирование, получить готовый Markdown и уже с ним идти к нейронке.
В общем, сделал для себя тулзу, теперь несу её вам.
https://kvaps.github.io/stackmind/
Прощай FreeMind, пора отправлять тебя на помойку.
Переписываем LINSTOR на go с Claude Code
В качестве пятничного эксперимента решил запустить шайтан машину и посмотреть что из этого получится.
Минимум вовлечённости, максимум слопа! 👃
Стрим в реальном времени: https://asciinema.org/s/wO0WH3M3bTqdSvm1
Репозиторий: https://github.com/cozystack/blockstor
Чат в котором ведётся обсуждение: @cozystack_ru
Магия кэша в controller-runtime: почему ваши контроллеры быстрые, стабильные и не убивают apiserver
Если вы когда-нибудь писали Kubernetes-контроллер на Go, то почти наверняка использовали controller-runtime.
А если использовали — значит, пользовались одной из самых недооценённых и мощных частей всего Kubernetes-стека: кэшем controller-runtime.
https://habr.com/ru/companies/aenix/articles/1031818/
Если ещё беспокоитесь за copy.fail в своих кластерах - вот изи-фикс.
Маленький DaemonSet, грузит
BPF-LSM хук на socket_create и режет любые попытки открыть AF_ALG. Без ребута, без пересборки ядра, без правки cmdline.
Работает на Talos Linux, где rmmod архитектурно недоступен (SELinux + lockdown + контроллер не умеет unload).
Ставится одной командой:
kubectl apply -f https://raw.githubusercontent.com/cozystack/copy-fail-blocker/main/manifests/copy-fail-blocker.yaml
https://github.com/cozystack/copy-fail-blockerВышел подкаст DevOps Paradox со мной 🎙️
Поговорили про Kubernetes, путь Ænix и Cozystack, попытки собрать "свой AWS" для on-prem. Обсудили современные тренды и конечно же AI, как он помогает нам в работе уже сегодня.
https://www.devopsparadox.com/episodes/cozystack-turns-bare-metal-into-a-managed-services-platform-347/
Мне тут закинули интересный проект - T4.
По сути это такой git с S3-бэкендом и фронтендом в виде etcd.
Снаружи всё выглядит как обычный etcd-compatible datastore, а внутри вместо привычного "храним состояние" - просто поток изменений, который складывается в виде WAL в object storage.
Если подумать, модель довольно нетипичная: источником истины становится не состояние, а лог изменений.
А дальше из этого уже вытекают все побочные эффекты — можно откатываться, воспроизводить состояние, делать форки и гонять эксперименты отдельно от прода.
Автор явно смотрит в сторону сценария "а давайте заменим etcd в Kubernetes", и это звучит странно ровно до того момента, пока не задумываешься, что control plane - это по сути и есть машина состояний, которую мы постоянно мучаем бэкапами, ресторами и попытками понять "а что вообще произошло".
Пока это всё выглядит как эксперимент и есть куча вопросов по перформансу и консистентности. Но сама идея сильная:
не хранить состояние как главную сущность, а хранить историю, из которой оно получается.
И это как раз тот случай, когда сначала думаешь “что за дичь”, а потом “блин, а ведь в этом что-то и правда есть” 🙂
Короче, прямо сейчас разворачивается довольно показательная история из мира supply chain атак 👇
AI-агент (да, уже не человек руками) нашёл уязвимость в GitHub Actions у Trivy — популярного security-сканера.
Через небезопасный workflow (
pull_request_target) он смог получить токен с правами записи в репозиторий.
А дальше стало совсем неприятно:
— переписали почти все теги релизов
— подменили GitHub Action
— и встроили вредоносный код
В итоге, любой CI, который использовал Trivy через uses: aquasecurity/trivy-action@vX.Y.Z, автоматически начинал исполнять чужой код.
То есть одна точка компрометации каскадно затронула тысячи пайплайнов. Внутри пайплайна payload собирал: SSH-ключи, cloud credentials, Kubernetes-токены и прочее добро прямо из CI runner’ов.
Главный инсайт:
теги в GitHub — это не immutable.
Если ты не пинишь actions по commit SHA — ты буквально исполняешь код “по доверию”.
Ну и второй инсайт:
AI уже не просто помогает писать код — он сканирует GitHub и ломает CI быстрее, чем ты успеваешь ревью сделать 🙂
Ссылки:
- Разбор атаки (Socket)
- Детали payload и последствий (The Hacker News)У нас тут появился запрос на то чтобы упростить нашим пользователям путь для запуска своих приложений в Cozystack.
Основной поинт такой: Я хочу писать код, и не думать о докерфайлах и кубернетисах ваших.
Я целился в то, что-бы выстроить что-то вроде heroku, т.е. максимально простой интерфейс для девелоперов.
За сегодня протестировал OpenFaaS и knative, но кажется serverless и FaaS - это не совсем то, что нужно чтобы полноценно удовлетворить этот запрос.
Копнув чуть глубже в тему наткнулся на epinio.io
Epinio развивается за счёт комьюнити. Под капотом у него buildpacks - это своего рода стандарт для доставки кода в различные контейнерные окружения.
А ещё оно потенциально очень хорошо интегрируется с Cozystack.
Логика такая:
- Запускаем кластер Kubernetes, ставим туда epinio (это может быть легко автоматизировано со стороны Cozystack)
- Пользователь заходит в UI
- Указывает путь до гит репы
- Buildpacks билдит приложение
- Деплоит его в Kubernetes
Бонусом в Cozystack уже есть container-registry, S3 и множество готовых баз данных
В самом epinio есть service-catalog из которого можно деплоить dev-версии mysql, postgres, mongodb и прочее. Есть мысли что этот сервискаталог немного переделать и предоставлять в нём готовые продакшен версии баз данных из Cozystack
Здесь есть видео с демонстрацией работы:
- https://youtu.be/jia6Laqz2WM?si=f1RElFLoesrbCFIU&t=919
На данный момент есть мысли чтобы выстроить полноценный IDP на базе этого решения.
Тут поресёрчил тему, как распилить GPU между виртуалками. Для QEMU/KVM всё завязано на VFIO: можно пробрасывать как целое PCI-устройство (полный passthrough), так и виртуализированные GPU через vGPU-подход, когда хост создаёт mediated devices (mdev) или PCI-based виртуальные GPU и уже их отдаёт в VM. Именно этот вариант нужен, если один физический GPU должен использоваться несколькими виртуалками.
Я думал, что можно как-то заиспользовать MIG, но MIG — это лишь аппаратное разбиение GPU. Сам по себе MIG не создаёт mediated devices и VFIO-устройств для виртуалок: чтобы отдельные MIG-инстансы можно было пробрасывать в VM, всё равно нужен vGPU-стек, который экспортирует их как mdev или PCI-устройства.
У NVIDIA этот функционал исторически доступен только в рамках проприетарного NVIDIA vGPU софта и требует лицензии.
При этом NVIDIA сейчас двигается в сторону open-source GPU virtualization: есть RFC-патчи для реализации vGPU в Linux, которые должны работать с VFIO и VM passthrough. Но это пока не mainline, патчи на стадии обсуждения, и когда (и в каком виде) их смерджат — непонятно.
https://www.phoronix.com/news/NVIDIA-Open-GPU-Virtualization
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
