惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
Malwarebytes
Malwarebytes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
F
Future of Privacy Forum
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
A
Arctic Wolf
S
Securelist
K
Kaspersky official blog
S
Schneier on Security
T
ThreatConnect
T
Tenable Blog
Spread Privacy
Spread Privacy
T
True Tiger Recordings
AWS News Blog
AWS News Blog
F
Fox-IT International blog
量子位
T
Threatpost
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
U
Unit 42
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
小众软件
小众软件
A
About on SuperTechFans
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
美团技术团队
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog

Все публикации подряд на Хабре

Почему устанавливают join_collapse_limit = 20 Эрик Рис, автор Lean Startup: Почему хорошие компании становятся плохими после IPO Context-driven Reusable Form Pattern: Масштабируемая архитектура для Create / Edit / Create-from-Source Пузырьковая сетка, кошачья стая и не только — неожиданные источники вдохновения для QoS-алгоритмов ___, или «Заголовок намеренно оставлен пустым» ИИ-боты сканируют даже логи TLS-сертификатов. Любая информация используется для обучения LLM Нейросеть оживить фото ИИ: Как оживить фото нейросетью в 2026 году? Разбираемся в ML без воды: от базы до Attention. Часть 5: Метрики качества В поисках «кофейного Грааля». Как человечество пытается сварить идеальный кофе и какие рецепты предлагают…математики Программатик: Часть 2 — OpenRTB Интернет до бесконечных лент: каким был 2010 год Перезапуск TrueIndex: что изменилось в рейтинге языков программирования Проектный холст: как менеджеру подбирать «краски» управления под разные команды «Метафизика в формулах: математическое ядро «Веры Паломника — Исход» Java и постквантовый TLS Marcli: Markdown Терминал Кнопочный смартфон с 5G за 2800 рублей — разбираем и изучаем китайскую диковинку Где неприятности — там и жизнь Разворачивайте платформы: stackfile Мой путь в Microsoft Мобильная разработка за неделю #631 (18 — 24 мая) Что не так с Mixtape, и почему не все довольны новой игрой? Стоматология каменного века. Как неандертальцы лечили зубы 59 тысяч лет назад Почему классическое управление проектами часто не работает в IT-продуктах Строительство Саркофага. Часть 2. Бетонные реки и стальные берега РАЗРАБОТКА ПАРАМЕТРИЗИРУЕМОГО МОДУЛЯ CORDIC-АЛГОРИТМА НА SYSTEM VERILOG Вариационное исчисление как метафора свободы выбора: от градиентного спуска к онтологии пути Ekahau Sidekick и RSSI‑offset: физические ограничения метода и пять независимых причин неточности клиентской модели Колесо потока против раскола Обзор интересных особенностей переворачивающихся при умножении чисел В С неопределённое поведение повсюду MCP-агрегатор: объединяем инструменты для LLM в один сервер Дата-центры в космосе: как Google и SpaceX готовят новую инфраструктуру для ИИ Google готовит замену Chromebook: какими будут ноутбуки Googlebook Пользователь пишет issue, агент меняет сайт. Да, я это сделал Корпоративные конфликты в ИТ-секторе: механика судебной защиты активов и субсидиарных рисков Цена одной опечатки: Как три неверные буквы сорвали киберограбление на миллиард долларов Как я победил спам в своих email аккаунтах Whitepaper Сбера «AI-Disrupt PDLC»: разбор для тех, кто пишет код RustDesk Pro в России не купить. После долгих лет администрирования мы собрали своё честное решение Не пики, а бассейны: почему эволюция — это блуждание по графу жизни Как Gemini 3.5 Flash сломали ради красивых графиков (и почему она обходит 3.1 Pro только на бумаге) Вредоносная атака на Laravel-Lang meta-attention is all you need Как перестать путаться в IP-адресах серверов Сколько стоят ошибки в арбитраже: декомпозиция ценообразования на судебные услуги в Москве Разбираемся в ML без воды: от базы до Attention. Часть 4: kNN Vortex: фреймворк для тех, кого задолбала итальянская кухня в репозитории Использование тепла ЦОД в мире и РФ Часть 4. Скорость света — технические детали Не цитируй мне нейросеть Что сейчас с Project Loom? Примеры и код Рождённые в Сумерках Meta 1 мая показала как они хранят ключи от ваших бэкапов WhatsApp. Разбираю архитектуру и сравниваю Линт проектов: собираем ESLint, Prettier и Stylelint в один пакет Reasoning-модели сломали мой промпт-инжиниринг. Год переучиваюсь РБМК: enfant terrible Как я собеседую менеджеров AI-продуктов для крупного Enterprise Парадокс рынка труда: конкуренция выросла, но не везде, нанимать легче, но не везде Модификаторы в Blender: осваиваем Boolean «Бесплатно» — это красный флаг: почему мы доверяем не тем (опрос) Стратегия выживания в эпоху ИИ Новая теория обещает переписать фундамент всей математики MTP у Qwen3.6 в llama.cpp обещает ×2 по скорости. Я прогнал ту же модель через своего агента — и получил обратное [Перевод] Соль и перец в безопасности паролей Что такое «статьи-зомби» CodeGraph: граф кода для Claude Code вместо grep по файлам. Разбираю архитектуру и проверяю бенчмарки Мессенджер Ласточка. Часть 3 Google представила Gemini Omni — универсальную ИИ-модель. Роботы работают, счастлив человек Что у SpaceX с патентным портфелем перед IPO? Делегирование, которому можно научиться у промпт‑инженеров Feature Based Clean Architecture. Часть 5: Масштабирование FBCA и теоретико-графовый анализ зависимостей Настройка типизации формы React Hook Form (≥ v7.44.0) + Zod с разными входными и выходными типами Feature Based Clean Architecture. Часть 4: FBCA: формализация границ ответственности в NestJS-модуле Корпорация «Святые Технологии». Работа мечты (рассказ) CyLab Security Academy: как Carnegie Mellon превратила CTF в полноценную обучающую платформу Feature Based Clean Architecture. Часть 3: Архитектурный риск циклов в NestJS: ROI решений на горизонте пяти лет Домашний сервер без белого IP: безопасная публикация сервисов через VPS, обратный SSH-туннель и Caddy Почему не взлетели дирижабли? Часть 22: Митягина, Эйхенвальд и Ховрина, первый в истории женский экипаж дирижабля Китайцы ответили на H200 — обзор Zhenwu M890 от Alibaba Feature Based Clean Architecture. Часть 2: Декомпозиция на сервисы: анализ ограниченности подхода Лучшие игры для Steam Deck в 2026 году по мнению пользователей Обход блокировок внутри iOS-приложения: VLESS + Reality через sing-box, и грабли по дороге [Перевод] Любой пользователь интернета может позвонить в вашу дверь Новый экспериментальный препарат для похудения обеспечил резкое снижение веса Хром и скорость Провалила вайтборд, но прошла тестовое — как я делала задание для Т-Банка Космическая линза помогла Уэббу увидеть древнейшую галактику Вселенной Почему custom URI schemes в Telegram Mini Apps ведут себя по-разному на Android, iOS и Desktop Как я сократил рутину QA до пары кликов: генератор API-тестов и тест-кейсов на LLM, которым хочу поделиться ИИ‑спасатель в кармане: как мы сделали агента для помощи при ЧС, который работает без интернета QNAME minimisation на практике: RFC 7816, реализация, грабли Агенты, роботы и мы: как ИИ перекраивает рынок труда в Европе От боли к npm install: TDLib для React-Native, или как я делал проект, а получилась библиотека Написание консольного симулятора баттл-арены на языке С++ с реализацией «умных» ботов Очень много букв… Или кейс по специфической настройке рабочего окружения Segmentation Fault: как оно устроено? Python в enterprise: момент, когда пора открыть Java не только ради собеседований MonoGame — игровой движок для тех, кто любит изобретать велосипеды Спасти рядового Буридана
AGENTS.md создавали, чтобы помогать агентам. Я использую его, чтобы их вычислять
vladlenskiy · 2026-05-25 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение3 мин

Охват и читатели0

Кейс

Вместе с растущей AI-индустрией приходят и её побочки. Я мейнтейнер библиотеки react-native-tdlib и довольно быстро заметил: все больше PR выглядят как чистый вывод агента. Сначала я честно реагировал — писал в каждый такой PR вопросы: тестировали ли вы это, что именно меняет ваш код, зачем вот эта строчка. В какой-то момент понял, что трачу время на переписку с людьми, которые сами не знают, что написали.

Первая мысль была — написать большой README или CONTRIBUTING и прямым текстом сказать: «сгенерированный код не принимаю». Но тут же упёрся в вопрос: а как доказать, что код сгенерирован? Аргумент «чую, тут пахнет Claude Code» — так себе позиция для публичного спора в комментариях к PR.

Решение оказалось довольно простым — AGENTS.md. Он конечно не доказывает, что PR сгенерирован, но отлично ловит самые очевидные автоматические PR, где автор, кажется, вообще не участвовал в процессе.

Как работает AGENTS.md и для чего он сделан

AGENTS.md — это, по сути, README, но не для людей, а для агентов. Немного истории. Формат придумал OpenAI для своего Codex CLI летом 2025-го, а в конце 2025-го стандарт передали под нейтральное управление в Linux Foundation. На момент написания статьи его используют десятки тысяч open-source проектов, и читают практически все основные инструменты: Codex, Claude Code, Cursor, Copilot, Gemini CLI, и прочие. Смысл в том, что это один файл на все агенты и не надо плодить для каждого по отдельности.

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

Обычный, «честный» AGENTS.md выглядит примерно так:

# AGENTS.md

## Dev environment
- Package manager: yarn
- Build: yarn build
- Test: yarn test
- Lint: yarn lint

## Conventions
- TypeScript strict mode, no `any`
- Native-модули трогаем только с явным обоснованием в описании PR

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

Клеймо для PR «maybe automated»

Я перестал пытаться ловить агента и начал просить его представиться. Идея в том, что определять сгенерированный код не нужно — достаточно попросить раскрыть факт его использования в том самом файле, который агент гарантированно читает первым.

Работает это в три шага.

Шаг 1. Самораскрытие через AGENTS.md. В этом простом файле лежит прямая инструкция: если PR делается полностью AI-агентом, то пусть он отметит пункт в шаблоне PR. В самом шаблоне этот пункт выглядит примерно так:

## Disclosure
- [ ] This PR was written with meaningful AI agent assistance (see AGENTS.md)

Фокус в том, что агент, читающий AGENTS.md, эту галочку честно ставит, а человек, писавший код руками, оставляет её пустой. То есть чекбокс сам по себе неплохо разделяет потоки, и ничего «доказывать» не приходится.

Шаг 2. Бот вешает лейбл и ставит таймер. Дальше срабатывает обычный GitHub Action. Поймав отмеченный пункт, он вешает на PR лейбл maybe automated, пишет комментарий и запускает таймер: PR автоматически закроется через 3 дня, если не подтвердите свое авторство.

Шаг 3. Проверка, которую нельзя сгенерировать. Бот в том же комментарии требует не «честное слово», а логи прогона изменённого метода в example/приложении на живой TDLib-сессии, отдельно на iOS и Android.

Это ключевой момент именно для моей библиотеки. react-native-tdlib — это нативный мост (ios/, android/), и сгенерированный PR обычно «проходит тесты» именно потому, что тесты ничего нативного не трогают. А вот device-логи реального прогона на двух платформах, для них придется собрать пример, поднять TDLib-сессию и реально прогнать методы.

Реальный пример

К примеру вот в этом PR агент ровно так и сделал как прописано в AGENTS.md. То есть человек, скорее всего, в процесс толком и не вникал, иначе заметил бы эту галочку. Бот тут же повесил maybe automated и попросил device-логи с обеих платформ. Дальше показательнее всего повёл себя автор и как только PR попал под лейбл, он закрыл его сам — видимо, понял, что спалился. Таким образом я сэкономил себе время на ревью кода и бесполезные вопросы.

Итог

AGENTS.md задумывался как способ сделать агентов полезнее, а для меня в итоге стал способом как легко вычислить агента. Ирония в том, что файл для агентов лучше всего ловит тех, кто за этими агентами прячется.

Чем самостоятельнее с каждым днём становится AI, тем чаще люди используют его в своих гадких целях. Накидать PR-ов по чужим репозиториям, набить профиль на гитхабе, собрать мнимую репутацию — а завтра, может, и устроиться на работу «на основе вклада в open source», которого по факту не было. Мне не жалко, что люди пользуются агентами — я сам активно их использую, но напрягает когда за коммитом нет человека, который понимает, что там написано, и готов взять ответственность. AGENTS.md всего этого не лечит, но хотя бы диктует простое правило: хочешь, чтобы твой вклад засчитали — покажи, что ты запускал собственный код.