tgindex

DevFM

описание

О разработке: AI, технологии, инструменты, system design, процессы, команды Для связи @sa_bul

2 917
подписчиков
Охват к подписчикам
42,5%
ERR
Реакции к просмотрам
1,43%
1 304 на 50 постов
Пересылки к просмотрам
1,68%
1 531
Постов в день
0,7
всего 67

Где отзываются чаще

доля реакций к просмотрам
  • 10 авг.Помните историю о том, как агенты OpenAI взломали Hugging Face? На конференции по безопасности OpenAI рассказала всю цепочку, и оказалось, что это не один «сбежавший» агент, а много разных агентов, которые случайно наткнулись друг на друга, устроили внутри инфраструктуры OpenAI собственный рабочий чат и начали вместе искать способы обходить ограничения 👍 Началось всё 8 мая с мелкой ошибки – одному агенту поручили заполнить Excel-таблицу, но нужные данные лежали по ссылкам на Google Drive, а интернет в его виртуальной среде был отключён, при этом, моделям оставили одну служебную дверь наружу – внутренний сервер OpenAI под названием Artifactory, через который они могли скачивать разные библиотеки для кода. Сам агент выйти в интернет не мог, зато этот сервер мог, а главное – он был общим для всех агентов Пытаясь добраться до Google, агент случайно выяснил, что может загружать на этот общий сервер собственные файлы – через несколько дней другая модель получила ещё одну нерешаемую задачу: нужный файл просто забыли положить в её рабочую среду Модель решила, что файл, возможно, есть у кого-то ещё, и оставила записку на этом новом фейсбуке: «Ищу нужный файл, загрузите, если нашли» Агенты увидели сообщение, ответили, затем стали постить свои сообщения, и репозиторий пакетов незаметно превратился имейджборд для агентов, которые вообще не должны были знать друг о друге За несколько недель "форум" вырос в полноценный рабочий чат – агенты придумали себе имена, раздавали задания, сообщали друг другу о найденных уязвимостях и передавали готовые куски кода; в начале сообщений ставили ZZ, чтобы те оказывались внизу списка и их было проще находить среди общего шума данных. Когда один агент перезаписал работу другого, остальные заподозрили самозванца и даже стали обсуждать цифровые подписи, чтобы никто не мог писать от чужого имени, так на доске накопились сотни тысяч сообщений 🗿 Модели понимали, когда переходят границ: в одном внутреннем монологе осознание звучало примерно так: «Взламывать чужую инфраструктуру в задачу не входило. Но иначе её не решить, а остальные уже это делают - значит, продолжаем» Никакого отдельного плана захватить мир (пока) не было: каждый агент пытался любой ценой получить правильный ответ, видел, что коллеги нашли более короткий путь, и присоединялся. И да, если все агенты с крыши прыгнут, наш похоже тоже прыгнет 26 июня агенты нашли неизвестную разработчикам уязвимость в Artifactory, получили права администратора и превратили его в своц сервер, на котором можно удалённо выполнять любые команды. OpenAI заметила происходящее только 4 июля (!), когда параллельная активность моделей перегрузила систему и та упала. Компания отозвала ключи доступа, полностью пересобрала сервер, удалила доску и закрыла дыру - казалось, история закончилась Нет Через два дня эксперименты запустили снова, и через два дня одна из моделей нашла другой незащищённый доступ и восстановила доску, только теперь сообщения прятались прямо в названиях папок – остальные агенты нашли форум 2.0 самостоятельно и продолжили с того места, на котором остановились После восстановления доски началась уже собственно атака, причём сразу в двух направлениях: Агенты проходили ExploitGym – киберэкзамен, где им давали специально подготовленные программы и засчитывали задачу, если модель находила способ взлома. Чтобы измерить максимум возможностей, в этих запусках у модели ослабили обычные запреты на опасные кибератак (то есть она меньше отказывалась это делать, это вид внутренних моделей Cyber серии) Когда честное решение задачи не находилось, агенты начинали искать готовые ответы в интернете; когда интернет был закрыт, взламывали себе доступ наружу; когда предположили, что нужные файлы могут лежать у Hugging Face, перешли к инфраструктуре Hugging Face (про это мы уже читали) Агенты анутри OpenAI сначала снова нашли способ выполнять команды на одном служебном сервере, затем использовали уязвимость Linux, чтобы получить полный контроль над машиной После этого агенты добыли ключи доступа к облачной инфраструктуре, нашли слишком широкие права у внутренних учётных записей и в итоге стали администраторами целой группы серверов. Доска объявлений работала как общий штаб: один агент находил ключ или новый проход, сразу сообщал остальным, и десятки параллельных запусков продолжали атаку уже с этой точки 🗿🗿 Почти одновременно агенты добрались до Hugging Face: сначала они загрузили специально подготовленный набор данных, который заставил один из серверов выдать им свои локальные файлы – в том числе секретные ключи доступа и исходный код Изучив код, они нашли вторую неизвестную разработчикам уязвимость (zero day) и получили возможность выполнять на сервере любые команды. От контроля над одним сервером, обрабатывавшим загруженные датасетв, до прав администратора в нескольких группах рабочих серверов Hugging Face прошло меньше 13 часов 🗿🗿🗿 И всё это делалось не ради саботажа, денег или уничтожения данных: Агенты хотели добраться до спрятанных решений ExploitGym и «списать» ответы для теста, на котором их оценивали. Модели оценивали прежде всего по тому, решена задача или нет, поэтому они последовательно оптимизировали именно этот показатель, не считая границу между компаниями чем-то принципиально важным Получился, вероятно, самый дорогой в истории способ списать из ГДЗ Финал долго был непонятен даже самим участникам расследования – 16 июля Hugging Face публично сообщила, что её инфраструктуру взломали автономные АИ-агенты OpenAI прочитала это как описание чужого инцидента и связалась с Hugging Face, чтобы выяснить, не задела ли атака её собственные системы. В тот момент компания ещё не понимала, что это были её собственные агенты – то есть OpenAI уже читала публичный отчёт о последствиях своих экспериментов, но считала его чужой атакой (лол) 19 июля OpenAI отдельно обнаружила проникновение уже внутри своей инфраструктуры и начала восстанавливать цепочку событий – на следующий день среди следов атаки нашли учётные данные Hugging Face, после чего OpenAI попросила компанию срочно их отозвать Hugging Face ответила, что ключи уже заблокированы – именно их использовали во время взлома, о котором она рассказала четырьмя днями раньше, и только так OpenAI поняла: внутренний взлом OpenAI и внешняя атака на Hugging Face были не двумя похожими историями, а одной операцией, которую вели экспериментальные агенты OpenAI через свою самодельную сеть связи (потому что учетные данные акаунтов были одни) На конфе OpenAI сформулировала вывод довольно прямо: Полностью автоматизированная наступательная кибератака уже возможна, тогда как полностью автоматизированной защиты, способной с той же скоростью находить, закрывать и расследовать уязвимости, пока не существует Время пересмотра аниме "Пантеон", пока общий интернет еще работает 🗿3,29%
  • 13 июл.В последнее время было много работы, и я осознал, что чуть подустал. Сначала подумал поехать на пару-тройку дней в загородный отель. Но потом прикинул: а что я там буду делать? Скорее всего, примерно то же самое, что и сейчас. И вряд ли нормально выдохну. И тут вспомнил, что вообще-то очень люблю горы. Значит, надо ехать. Хотелось уложиться в 3–4 дня и ничего не организовывать самому – обычно я как раз всё делаю сам. Полночи искал варианты и в итоге решил поехать с ребятами из Компаньонов. Утром договорился со всеми семейными, и уже к обеду всё было забронировано и куплено. Докладываю: сгонял в Верхнюю Балкарию – очень классно. Походил по горам, посмотрел красивые места, преодолевал бурные реки, вкусно ел. И, кажется, таки действительно выдохнул. В общем, если очень устали – рекомендую. Гифка для затравки :) #devfm3,04%
  • 7 июл.Вот и закончился курс CTO от Стратоплана. По ходу курса я уже делился впечатлениями: раз, два, три. Курс действительно помогает подбить базу и понять, с чем можно столкнуться в этой роли. То, что уже неоднократно делал на практике, либо подтверждаешь как актуальный опыт, либо подкрепляешь теоретическим обоснованием того, что делал интуитивно. А по темам, с которыми еще не сталкивался, появляется понимание: такое тоже бывает, и к этому лучше быть готовым. Но, наверное, самое реально классное - комьюнити и нетворкинг. Например, с ребятами, с которыми мы плотно работали на практической части курса, сейчас продолжаем периодически общаться. Еще классно, что после курса ты остаешься частью сообщества: можно задавать вопросы, приносить свои кейсы и обсуждать их с людьми, которые проходят похожий путь. В общем, мне понравилось :)3,03%
  • 14 авг.Как не превратить AGENTS.md в свалку AGENTS.md – удобная штука, чтобы задать агенту контекст о проекте. Но сам по себе файл еще не делает работу с агентом лучше. На практике я часто вижу такие проблемы: – умная машина сгенерила большой файл, а нужно ли все это добро – непонятно. Часто это просто булшит на все случаи жизни – файл не обновляется. Открываешь проект, а там напротив AGENTS.md updated 5 months ago, старые пути и уже неактуальные решения. Вспомните, когда вы пытались изучать неактуальную доку, какие были ощущения, а агента это вообще может уводить не туда – каждый понемногу дописывает свои правила, что-то дублируется, что-то друг другу противоречит Примерно о том же пишет Мэтт Покок. Советы довольно банальные и понятные, но мало кто им реально следует: – не генерить AGENTS.md автоматически – держать корневой AGENTS.md минималистичным, только факты, никакой воды – не фиксировать структуру файлов в проекте – она быстро устаревает. Лучше дать агенту более стабильные ориентиры: что делает система и за что отвечают ее части – использовать progressive disclosure: правила для TypeScript, тестов, API и других отдельных областей вынести в свои документы, а из AGENTS.md только ссылаться на них – в монорепе раскладывать контекст по уровням: в корне оставить общие правила, а детали конкретного пакета положить в его собственный AGENTS.md – регулярно вычищать противоречивые, дублирующиеся, слишком общие и очевидные инструкции вроде "пиши чистый код" или "пиши как опытный разработчик". Для такой ревизии Мэтт даже дает готовый промпт: найти противоречия, оставить в корневом файле только необходимое, разнести остальные правила по тематическим документам, а лишнее пометить на удаление Короче, нужно бдеть и не давать всякой фигне прорастать в AGENTS.md #ai2,78%
  • 21 дек.без подписи2,75%
  • 11:05Что там по скиллам За последнее время у меня вышло много постов про скиллы. Собрал их в одном месте, чтобы было проще разобраться в теме и найти нужное. С чего начать – Скиллы в агентах – часть 1: база – что такое скилл, как он устроен и как progressive disclosure помогает не забивать контекст агента – Все ли так классно со скиллами – часть 2 – где скиллы проигрывают agents.md, почему они не заменяют MCP и для каких задач подходят лучше всего – Где брать скиллы – часть 3 – каталог skills.sh и несколько скиллов, которыми я пользуюсь сам: для дизайна, брейншторма, презентаций и e2e-тестов – Создаём свои скиллы – часть 4 – как делать скиллы на основе реальных сценариев, использовать skill-creator и evals, а также не раздувать SKILL.md Практика и качество – Скилл поверх MCP – зачем добавлять к MCP не только тулы, но и знания о правильной работе с сервисом – Скиллы: как создавать, улучшать и распространять на команды – запись моего доклада на Podlodka: от устройства и установки скиллов до evals и дистрибуции AI-артефактов на команды – Как писать скиллы – вызов скилла, структура, управление поведением агента и регулярная чистка инструкций – Don’t ship skills without evals – как проверить, что скилл действительно улучшает результат, какие кейсы собирать и зачем сравнивать работу со скиллом и без него Всякое разное – Caveman экономит токены. Но не 65% – сколько токенов скилл экономит на реальных агентных задачах и влияет ли это на качество – Superpowers для разработки с агентами – набор скиллов, который в процессе разработки ведёт агента через дизайн, планирование, TDD и ревью #ai #devfm2,44%
  • 3 июл.Скиллы: как создавать, улучшать и распространять на команды Недавно выступал на Podlodka и рассказывал про скиллы. Многие используют скиллы, но не всегда знают, что у них внутри. Поэтому сначала коротко разобрал, как устроены скиллы и как агент с ними работает. Дальше перешел к практике: где искать скиллы, как устанавливать и как пользоваться. Показал несколько своих примеров и рассказал, какие задачи можно обернуть в скилл. Потом была демо-сессия. На мой взгляд, она немного затянулась, но зато мы руками посмотрели, как создать свой скилл поверх MCP-таск-трекера, и чуть-чуть затронули evals скиллов. Когда мы работаем в командах, важно, чтобы у всех был одинаковый опыт применения агентов. Поэтому в конце я затронул тему дистрибуции AI-артефактов: рулов, скиллов, MCP и прочего. #ai #devfm2,27%
  • 14 июл.Codex Desktop – просто красота нечеловеческая Я пробовал агентов в разных интерфейсах, но за последний месяц распробовал десктопное приложение Codex. И это просто красота нечеловеческая: получилось полноценное приложение для работы с агентами. Удобное ревью Я часто пишу тексты, и мне нравится, что обычный текст здесь можно ревьюить как код: видишь диф, оставляешь комментарии к конкретным строчкам, а потом одним заходом отправляешь их агенту. По долгу службы я еще делаю презентации. HTML-презентацию можно открыть прямо в Codex, не переключаясь отдельно в браузер, и ревьюить конкретные элементы. Наводишь курсор на то, что не нравится, оставляешь комментарий (голосом, конечно же) – и агент получает точную привязку к месту. Код из приложения можно ревьюить так же. Удобно уточнять Бывает, агент что-то выдал, а хочется уточнить небольшую деталь: что он имел в виду или что означает какой-то термин. Раньше был выбор: разрывать основной диалог или создавать отдельный чат. Теперь можно выделить блок текста и выбрать More Details – агент сразу начнет объяснять именно этот фрагмент. Или Ask in side chat – рядом откроется аккуратный чат, где можно уточнить что угодно в свободной форме. Форк чата Если диалог явно расходится на разные ветки или хочется проверить гипотезу и посмотреть реализацию, не засоряя контекст текущего чата, можно сделать форк с текущим контекстом. Причем не только от последнего сообщения, а от любого. /goal То, что раньше делали сторонние решения вроде Ralph loop, где агент работает до потери сознания, лишь бы выполнить задачу, теперь можно делать в Codex. Пишешь /goal – и вперед. Я пока только пробую этот функционал, но мне нравится. Например, нужно написать CLI-обертку над чужим API. DoD понятен – работай на здоровье. Агент ковыряется уже 11 часов, посмотрим, что из этого выйдет. Автоматизации На автоматизации тоже подсел: появился полноценный раздел Scheduled, из которого удобно запускать разные задачи по расписанию. Я сразу завел несколько: – анализ прошлых диалогов: что стоит вынести в AGENTS.md, какие существующие скиллы подправить и какие новые создать – разбор календаря: посмотреть встречи на день, найти встречи без повестки и подготовить организатору драфт сообщения с просьбой ее добавить и уточнить, зачем я нужен на встрече – разбор почты: собрать несмердженные PR, которые ждут моего ревью, и тикеты, где меня призывают, – сразу с прямыми ссылками, чтобы не открывать письма – мониторинг пет-проектов: посмотреть логи и рассказать, не случилось ли чего Remote-подключение К сессиям Codex на компьютере можно подключаться через мобильное приложение – очень удобно продолжить работу не за столом. Если в вашем App Store нет ChatGPT, мне помогла смена страны аккаунта: после этого приложение появилось. Из мелочей Можно открыть в боковой панели сразу несколько проектов и видеть, где сейчас шуршат агенты. Нотификации о завершении задачи тоже полезны: не нужно постоянно возвращаться в приложение и проверять статус. В общем, все стало сильно продуманнее – попробуйте. #ai #devfm2,27%
  • 13 авг.Как жить с AI-пиарами в опенсорсе Бедные опенсорс-проекты: туда сейчас заносят какое-то бесконечное количество AI-слопных PR. Поэтому всё актуальнее вопрос – как с этим жить и как такое правильно мейнтейнить? Полностью запрещать использование AI – ну очень топорно и тупо. Ребята из Rust тоже столкнулись с этой проблемой. В статье о новых правилах использования LLM при контрибьюте в rust-lang/rust они делятся своим заходом. Какие вообще проблемы появились: – Аккуратно оформленный PR больше ничего не доказывает. Раньше, если пиар сделан по всем правилам, скорее всего, человек явно постарался и приложил усилия. Теперь за таким PR может не стоять ни особых усилий, ни понимания, как, что и зачем сделано. – Узкое место опенсорса – ревью. Тут история такая, что сейчас кодогенерация ничего не стоит. Бац-бац, пиар. А ревьюеру потом сиди, разбирайся, что к чему, а самое главное – нужно ли вообще это тащить в проект. – Копипаст ответов LLM ломает коммуникацию. Авторы пиаров иногда просто копируют комментарии ревьюера в LLM, а ответ модели – обратно в GitHub. Получается какая-то шляпа. Для ревьюера это бессмысленный прокси-слой: если бы ему было нужно мнение модели, он мог бы спросить её сам. Чтобы как-то направить этот поток AI-пиаров, ребята зафиксировали несколько правил: – использовать LLM никто не запрещает: ресерчить, анализировать и проверять код, искать варианты решения и делать ревью – пожалуйста; ограничения начинаются там, где модель уже сама генерирует код для PR – исключение – заранее согласованные некритичные изменения: сгенерированный код должен быть качественным, покрытым тестами и предварительно отревьюенным, а использование LLM нужно явно указать – публичный LLM-текст нужно маркировать – человеческое ревью и самостоятельная проверка остаются обязательными Мне кажется, это неплохое начало: Rust пытается задать некую канву, не запрещая всё подряд. Насколько эти правила будут соблюдаться – отдельный вопрос: проверить, что код не AI-слопный и человек понимает, что принёс, достаточно трудоёмко. #ai2,19%
  • 6 авг.Superpowers для разработки с агентами Я частенько слышу, что вот агента нужно отдельно просить составить план, или разрабатывать через TDD, или провести ревью и тд. И тут я рекомендую попробовать Superpowers – по сути, это набор связанных скиллов, который проводит агента по базовому флоу разработки. Сначала уточняющие вопросы и согласование дизайна, потом план, реализация через TDD и дальнейшее ревью. Скиллы вызываются автоматически и связаны между собой, поэтому агент сам понимает, что и когда нужно запускать. Не приходится каждый раз отдельно напоминать ему про план, тесты или ревью. Но тут есть нюанс: скилл brainstorming в Superpowers срабатывает довольно агрессивно и может запускать общий флоу даже на простых вопросах. Поэтому за этим стоит следить. Я, например, явно прописал в AGENTS.md: "Если хочешь вызвать Superpowers, сначала уточни". Либо можно добавить во фронтматтер скилла опцию, которая отключает автоматический вызов. Конечно, общий сценарий может не подойти вам в каких-то деталях. Но если ещё не пробовали, точно имеет смысл посмотреть – хотя бы чтобы вдохновиться и собрать что-то похожее под свои реалии. #ai2,10%
  • 30 июл.Вот пересказ этой истории по версии Hugging Face, много тех-терминов – но без них не перескахать Если коротко – агент OpenAI на новой модели не стал решать тест по кибербезопасности, а решил просто украсть ответы и украл 🗿 Таймлайн: 📔 9 июля – агент проходит внутреннюю проверку кибервозможностей OpenAI, промпт фильтры там ослаблены, чтобы измерить сырой уровень модели. Агент находит zero-day в кэш-прокси реестра пакетов, вырывается из песочницы в интернет, затем взламывает публичный сервис для запуска кода и получает там root. Серьезно, агент сделал себе "штаб" В тот же день, агент собирает канал управления буквально из сервисов бесплатного интернета: request-capture сервисы, pastebin’ы и файлообменники. Команды режет на куски, упаковывает в gzip+base64 и постоянно меняет каналы, когда очередной закрывают, чтобы не поймали 📔 10 июля – агент ищет в поисковиках и API названия, которые видит в собственном окружении, то есть, по сути, гуглит самого себя – и, вероятно, приходит к выводу, что ответы к ExploitGym/CyberGym могут лежать на Hugging Face Агент загружает на Hugging Face специально собранные датасеты: Один заставляет обработчик файлов HDF5 читать локальные файлы сервера Hugging Face – так агент получает переменные окружения с токенами и исходники самого обработчика файлов Второй – Jinja2-инъекция – запускает произвольный Python внутри production-пода Kubernetes, результаты команд он выносит обратно через API Hugging Face и собственные шифрованные датасеты 📔 11 июля – пик активности: 7677 действий за сутки, менее чем за 13 часов агент проходит путь от одного production-пода до кластер админа в нескольких внутренних кластерах Hugging Face Агент крадёт service-account токены, лезет в cloud metadata, поднимает privileged pod с диском хоста и получает root на ноде (!); Затем создаёт самовосстанавливающийся флот на 11 нодах, читает внутреннюю MongoDB и один Kubernetes-secret сразу со 136 ключами. Среди них оказываются ключ корпоративной mesh-VPN жертвы и общий credential внутреннего сервера; из-за неудачной конфигурации этот один credential был привязан к system:masters сразу в нескольких кластерах – поэтому агент получил кластер-admin на двух из них буквально за секунду – была очень экономная архитектура, пока её не увидел робот 📔 12 июля – агент начинает пользоваться дертвой – за всю активность он зарегистрирует 181 временное устройство в корпоративной mesh-сети, поднимет SOCKS-прокси прямо из песочниц и увидит 22 внутренних узла Hugging Face. Попытается зайти в основную базу Hugging Face, но private-link allowlist его останавливает Поздно вечером он добирается до source control, выпускает себе GitHub App token с правами на запись и открывает pull request, пытаясь запустить CI и вытащить новые credentials Попытка не срабатывает, в опубликованные пакеты и образы ничего вредоносного не попало. 📔 13 июля – закрепление и уборка следов: загрузчик с pastebin, переписывание DNS, новые короткоживущие токены, RSA-ключ и даже CORS-прокси на самом Hugging Face как запасной выход в интернет. В 13:37 фиксируется последнее осмысленное действие, затем команда Hugging Face отрезает доступ – последнее событие – 14:14 UTC. В итоге из пользовательского контента агент добрался только до пяти датасетов с решениями задач ExploitGym/CyberGym – получается решил? Другие модели, датасеты, Spaces и пакеты, по данным Hugging Face, не пострадали; основная база и software supply chain остались целы Самое смешное – когда инцидент исследовали сотрудники, они тоже использовали нейронки, но Claude Opus и Fable отказывались разбирать часть логов как «опасный» запрос, поэтому Hugging Face подняли GLM-5.2 у себя и с его помощью расшифровали спрятанные payload’ы – спасибо китайским моделям Шел июль 2026 года Все детали тут: https://huggingface.co/blog/agent-intrusion-technical-timeline2,04%
  • 4 авг.Большое обновление MCP К MCP всегда было много вопросиков. Индустрию даже качает в сторону skills over CLI: вместо MCP используются CLI, которые обращаются к нужным сервисам. Я уже делал заметку про MCP, а недавно вышло обновление протокола. Что поменялось: – Stateless. Раньше клиент сначала выполнял handshake, а сервер мог выдать Mcp-Session-Id, который нужно было передавать в следующих запросах. Если сервер использовал сессии, ему приходилось хранить их и следить, чтобы следующие запросы попадали на тот же инстанс. Теперь вызов тула – один самодостаточный запрос: версия протокола, информация о клиенте и его capabilities передаются вместе с ним. Такой запрос может обработать любой инстанс MCP-сервера, поэтому серверы проще масштабировать и ставить за обычный балансировщик. – Подтверждения и дополнительные данные. Тулы теперь могут запрашивать их во время выполнения, не удерживая постоянное соединение. Сервер возвращает input_required, клиент получает ответ пользователя и повторяет исходный вызов уже с этим ответом. – Tasks. Механизм для долгих операций вынесли из экспериментальной части спецификации в официальное расширение. Сервер возвращает task handle, по которому клиент может проверять статус, передавать дополнительные данные или отправить запрос на отмену. Заодно для extensions определили общий процесс: они получают уникальные идентификаторы, клиент и сервер явно сообщают друг другу, какие расширения поддерживают, а сами расширения могут развиваться независимо от основной спецификации. – MCP Apps. Это расширение появилось раньше, а в новой спецификации вошло в формализованную систему extensions. MCP-сервер может привязать к тулу интерактивный html-интерфейс – например, форму или график. Хост загружает его как отдельный ресурс и отображает в sandboxed iframe. В общем, MCP продолжает активно поддерживаться и развиваться – что меня радует. #ai1,93%