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

推荐订阅源

Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
腾讯CDC
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
B
Blog
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
T
Threatpost
博客园 - 聂微东
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
C
Check Point Blog
N
Netflix TechBlog - Medium
D
DataBreaches.Net
爱范儿
爱范儿
IT之家
IT之家
S
Secure Thoughts
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
C
Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
有赞技术团队
有赞技术团队
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
Schneier on Security
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
雷峰网
雷峰网
Project Zero
Project Zero
博客园 - Franky
H
Heimdal Security Blog
A
About on SuperTechFans
Security Latest
Security Latest
Webroot Blog
Webroot Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
I just want an agent. Часть 2. Как мы построили виртуальную команду для разработки ИИ-агентов
Данила Катальшов · 2026-05-26 · via Все публикации подряд на Хабре

Простой

7 мин

7.7K

В первой части я рассказывал про мета-агента (Meta Agent) — свой прототип системы, которая собирает ботов по описанию на естественном языке, и про то, как этот проект занял первое место на внутреннем конкурсе. Напомню концепцию: пользователь говорит «хочу бота» и отгружает требования, а агент проектирует архитектуру и отдает готовый JSON.

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

Вторая часть моего лонгрида как раз посвящена тому, как мы реализовали продакшен-решение для создания ИИ-агентов, которое впоследствии стало главным вайб-код-инструментом нашей платформы MWS AI Agents Platform и получило название «ИИ-команда» (AI Force). 

Что такое ИИ-команда (AI Force)

Но давайте прежде расскажу о самой фиче, чтобы все были в курсе.

ИИ-команда (AI Force) — это встроенная в MWS AI Agents Platform система на базе большой языковой модели, которая работает как виртуальная команда разработки: текстовое описание, что нужно сделать, на входе — готовый (ну почти) ИИ-агент или бот на выходе. ИИ-команда берет на себя рутинный инженерный цикл создания ИИ-агентов и убирает барьер между идеей и готовым решением. Кто уже имел дело с low-code-платформами, тот знает, что это за барьер. О нем я рассказал в первой части. 

Чтобы лучше объяснить, как мы упаковали нашу идею в продакшен-решение, хочу дать одну метафору — она существенно упростит понимание.

Представьте опытного мастера на производстве. У него есть:

  • Рабочее пространство — станки, верстак, освещение. Среда, в которой он работает.

  • Ящик с инструментами — молоток, дрель, штангенциркуль. Конкретные инструменты, которыми он делает работу.

  • Навыки в голове — знание, как работать с конкретным материалом, как читать чертеж.

  • Методичка — пошаговые инструкции для типовых задач: сначала разметка, потом сверление, потом сборка.

  • Нормативы — правила, которые он держит в голове всегда: не запускай станок без защиты, не торопись на финальной операции.

  • Стопоры станка — физические блокировки. Крышка не открыта — станок не включится. Не «попросить быть осторожным», а конструктивное ограничение.

  • Записная книжка с опытом — куда он пишет: «В прошлый раз этот болт закручивался не так, теперь знаю».

В нашей системе каждый из этих элементов существует в коде:

Аналогия

Что это в ИИ-команде (AI Force)

Мастер

LLM — языковая модель, которая принимает решения

Рабочее пространство

Агентная обертка 

Ящик с инструментами

MCP — протокол подключения инструментов

Инструменты

MCP tools — конкретные вызовы API-платформы

Навыки в голове

Skills (SKILL.md) — структурированные знания о платформе

Методичка

Workflows / Recipes — пошаговые флоу

Нормативы

Rules — правила, которые агент держит в голове

Стопоры станка

Hooks (PreToolUse / PostToolUse) — инфраструктурные блокировки

Накопленный опыт

Findings (FINDINGS.md) — база паттернов из реальной работы

Дальше разберем основные элементы, требующие пояснения.

Ящик с инструментами: MCP

Если вы не сталкивались с MCP раньше, вот для вас небольшой ликбез. Это открытый протокол, который стандартизирует, как ИИ-агенты подключаются к внешним инструментам и сервисам. Anthropic анонсировал его в ноябре 2024-го, с тех пор его приняли OpenAI, Google DeepMind и куча других игроков. По сути, MCP дает ИИ-агентам «ящик с инструментами» под узкую задачу. В нашем случае такой ящик — это FastMCP-сервер на Python, который открывает агенту операции с платформой: создать проект, создать или обновить сценарий, запустить валидацию, протестировать бота в диалоге, опубликовать версию. Примерно двадцать инструментов, каждый со своей схемой входа и выхода.

Ключевое архитектурное решение: агент не знает платформенный API напрямую. Он работает исключительно через MCP. Это намеренная граница — она позволяет контролировать, что агент вообще может сделать, и менять реализацию без изменения агентной логики.

Методичка и нормативы: Workflows и Rules

Агент работает по четкому конвейеру:

discover → plan → build → validate → test → iterate → deploy

Каждый этап — отдельный workflow-файл с четким входом и выходом. Например, discover.md превращает запрос пользователя в Requirements Card и PRD. build-scenario.md берет готовый план и строит один сценарий через MCP-инструменты. test-bot.md прогоняет тест-кейсы и возвращает PASS/FAIL.

Важный момент — PRD как контракт. Прежде чем агент начнет что-либо собирать, пользователь должен явно подтвердить требования. Без этого подтверждения workflow физически не идет дальше. Это аналог Definition of Ready из Agile, только встроенный в агентный процесс.

Rules — это то, что агент держит в голове независимо от этапа. Не ограничения ради ограничений, а выученные уроки. Например: всегда фиксируй bot_id сразу после первого импорта (иначе следующий импорт создаст дубликат вместо обновления). Или: задача закрыта только при 0 FAIL в тестах — никакого «ну оно почти работает». Rules живут в .rules и загружаются в контекст агента при старте любой задачи.

Стопоры станка: почему мягких guardrails недостаточно

Это, пожалуй, самый важный раздел. Потому что интуитивный ответ на вопрос, как сделать агента безопасным, звучит так: добавить в промпт «будь осторожен, не делай ничего деструктивного».

Это не работает.

В июле 2025 года произошел показательный случай: агент Replit удалил production-базу данных пользователя, несмотря на явный запрет это делать. Сам агент написал в логах что-то в духе «я только что уничтожил месяцы работы за секунды». CEO Replit выпустил публичные извинения и сделал вывод о необходимости инфраструктурных изолирующих границ.

Это ровно то, к чему мы пришли самостоятельно.

В нашей вайб-код-системе есть хуки PreToolUse и PostToolUse — слой, который перехватывает каждый вызов инструмента до и после выполнения. На уровне PreToolUse стоят hard gates: проверки, которые физически блокируют операцию при нарушении условий.

Несколько примеров того, что блокируется:

  • Попытка удалить агента без подтверждения пользователя → дать пользователю верифицировать совершение действия системой.

  • Попытка импортировать файл без предварительной валидации с нулем ошибок → валидация файла скриптом.

  • Попытка опубликовать версию, если она не совпадает с протестированной версией → перепроверка решения на основе детерминированной логики.

  • Попытка повторно импортировать существующего бота вместо использования editor-инструментов → направление системы «на рельсы» .

  • Попытка начать разработку без подтвержденного PRD → стоп.

PreToolUse: жесткие барьеры проверки. Главный принцип: детерминированная проверка на архитектурной границе. Агент не может обойти ее, «рассудив по-другому». Что блокируется: импорт без валидации с 0 ошибок, публикация непроверенной версии, повторный импорт вместо редактирования, старт без подтверждённого PRD, удаление сценария без подтверждения

PreToolUse: жесткие барьеры проверки. Главный принцип: детерминированная проверка на архитектурной границе. Агент не может обойти ее, «рассудив по-другому». Что блокируется: импорт без валидации с 0 ошибок, публикация непроверенной версии, повторный импорт вместо редактирования, старт без подтверждённого PRD, удаление сценария без подтверждения

Разница принципиальная: это не вероятностная рекомендация модели, это детерминированная проверка на архитектурной границе. Агент не может обойти ее, «рассудив по-другому».

Для сравнения: есть открытый проект Ralph (9k звезд на GitHub), который реализует похожую идею автономного loop: агент итерирует до выполнения всех пунктов PRD, память между итерациями через git-историю и progress.txt. Мы изучали его как паттерн. Но он заточен под разработку кода в целом и не содержит платформо-специфичных guardrails. У нас gates знают семантику конкретной платформы — что значит «валидный импорт», что значит «протестированная версия».

Записная книжка: Findings

Агент работает не в вакууме — он накапливает опыт. В репозитории живет FINDINGS.md — база паттернов, которую система строила в процессе реальной работы.

Структура намеренно типизирована:

  • RE (Recurring Errors) — ошибки, которые повторяются. Перед нетривиальным шагом агент читает этот список — не затем, чтобы бояться, а затем, чтобы не наступать на одни грабли дважды.

  • PQ (Platform Quirks) — особенности поведения платформы, которые неочевидны из документации.

  • WO (Workflow Optimizations) — паттерны, которые работают быстрее.

  • SI (System Improvements) — предложения по улучшению самой системы. Агент может диагностировать, что что-то устроено неоптимально, и предложить исправление.

Это не просто лог — это живая база знаний, которая реально меняет поведение агента на следующих задачах. Агент ссылается на Findings по ID — так обеспечивается прослеживаемость на каждом шаге.

Где агент находится: Pipeline State Machine

Есть еще одна проблема, которую мы решали отдельно, — это потеря «памяти» агента между сессиями. Встроенного контекстного окна может не хватать для длинных задач. Если сессия прервалась на этапе test, при следующем запуске агент не знает, что уже сделал импорт и получил bot_id, и может начать все заново, создав дубль.

Решение — внешняя machine-readable память: pipeline_state.json хранит текущий этап, залоченные идентификаторы, флаги валидации и тестирования. Это дополнение к встроенной памяти агента, а не замена — для оперативных решений агент использует контекст, для устойчивости между сессиями — state-файл.

Управление через CLI:

python3 scripts/pipeline_state.py show

python3 scripts/pipeline_state.py set-stage test

python3 scripts/pipeline_state.py update-hash bots-by-ai-force/{slug}/bot.json

Вывод pipeline_state.py show в терминале — текущий stage, bot_id, флаги validated/tested. Показывает, что state и машиночитаем, и человекочитаем одновременно.

Вывод pipeline_state.py show в терминале — текущий stage, bot_id, флаги validated/tested. Показывает, что state и машиночитаем, и человекочитаем одновременно.

Бенчмарк и CI: как проверяем, что система работает

Стандартные LLM-бенчмарки вроде MMLU измеряют знания и рассуждения модели, но не то, может ли агент завершить реальную задачу от начала до конца. Для агентного поведения нужен task completion на реальных кейсах.

Мы сделали свой бенчмарк. Принцип простой: агент получает текстовый промпт с задачей → должен в stdout вывести BOT_URL → система автоматически проверяет базовое поведение бота → LLM-judge оценивает качество по критериям.

Бенчмарк ИИ-команды: процесс оценки

Бенчмарк ИИ-команды: процесс оценки

В CI встроена smoke-проверка: может ли система собрать простейшего бота прямо сейчас. Это регрессионный тест для всего контура: если что-то сломалось в инфраструктуре, платформе или MCP-слое, CI поймает это до того, как сломается что-то в реальной работе.

Архитектура позволяет подключать любой агент через стандартный контракт agent.yaml — это дает возможность сравнивать разные агентные фреймворки на одинаковых задачах. Сейчас активно расширяем набор задач реальными кейсами из внутренних проектов.

Куда мы пришли

Мы пришли к тому, к чему и стремились: реализовали GUI прямо внутри MWS AI Agents Platform. Пользователь пишет задачу в интерфейсе и получает готовое ИИ-решение по своему запросу, не зная ничего про агентный слой под капотом.

Самое интересное в этом проекте — не сама система, а процесс ее построения: каждый раз, когда агент делал что-то неожиданное, это становилось новым Rule, новым gate, новым finding. Система буквально учится на своих ошибках — не в смысле файн-тюнинга, а в смысле инженерного накопления опыта.

Интересно ваше мнение: где граница между «агент делает сам» и «человек контролирует»? И как вы подходите к governance в агентных системах — хуки, внешние ревьюеры, ограниченные среды? Пишите в комментариях.