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

推荐订阅源

F
Fortinet All Blogs
MyScale Blog
MyScale Blog
Microsoft Security Blog
Microsoft Security Blog
量子位
B
Blog
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
T
The Exploit Database - CXSecurity.com
N
News | PayPal Newsroom
Cloudbric
Cloudbric
A
About on SuperTechFans
AI
AI
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
T
The Blog of Author Tim Ferriss
Simon Willison's Weblog
Simon Willison's Weblog
有赞技术团队
有赞技术团队
H
Heimdal Security Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
D
Docker
Security Archives - TechRepublic
Security Archives - TechRepublic
N
News and Events Feed by Topic
IT之家
IT之家
Know Your Adversary
Know Your Adversary
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
B
Blog RSS Feed
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
博客园 - 叶小钗
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
The Hacker News
The Hacker News
Y
Y Combinator Blog
I
Intezer
The Register - Security
The Register - Security
F
Full Disclosure
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
Martin Fowler
Martin Fowler

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 миллионов точек без потерь
Мы попробовали в реальном проекте Dynamic Workflows от Claude Code. Рассказываю, что сработало, а что нет
Максим Никитин · 2026-06-01 · via Все публикации подряд на Хабре

Средний

9 мин

14K

Прогнали Dynamic Workflows Claude Code на реальном проекте поверх NaCl: что сработало, а что нет

Привет! Меня зовут Максим Никитин, я фаундер небольшой, но гордой студии разработки сложных и нетиповых проектов ITSalt. В начале 2025 года мы начали переходить на агентскую разработку и постепенно собрали вокруг этого собственный фреймворк - NaCl. Сейчас он закрывает бизнес-анализ, системное проектирование, TDD, код-ревью, QA и релиз - по сути, весь цикл от требования до продакшна.

NaCl можно посмотреть в публичном репозитории. Внутри - набор скиллов, пайплайн ролей, граф Neo4j как источник истины по требованиям и решениям, плюс набор правил, которые заставляют агента работать не «по вдохновению», а по воспроизводимой методологии.

Когда в Claude Code появилась фича Dynamic Workflows, я решил проверить её не на демке, а на реальном проекте. Не ради хайпа и не ради вывода «хорошая фича / плохая фича». Мой вопрос был чисто практический:

  • усиливает ли Dynamic Workflows наш текущий стек;

  • где это имеет смысл применять внутри NaCl;

  • где это может быть полезно тем, у кого своего фреймворка нет;

  • и где лучше не тратить на это лимиты, токены и время.

Проверяли на нашем реальном проекте Family Cinema - сервисе для генерации семейных фильмов. Это не учебная песочница и не специально собранный демо-код, а продуктовый проект с backend/frontend, пайплайнами генерации видео и музыки через внешние сервисы и инженерным контекстом, который приходится учитывать при ревью.

Что такое Dynamic Workflows и с чем мы это сравнивали

Dynamic Workflows в Claude Code - это не просто "запусти несколько агентов". Это скрипт, который Claude Code исполняет как оркестратор: внутри можно описывать фазы, запускать агентов, параллелить независимые задачи, строить конвейеры, ждать завершения всех веток и собирать результат.

В NaCl механизм другой. Скиллы - это инструкции, которые ведут Claude Code через задачу последовательно: бизнес-аналитик, системный аналитик, тимлид, ревьюер, QA и так далее. Важная часть подхода - человеческие гейты: агент не должен сам перепрыгивать через принципиальные решения.

Поэтому я не спрашивал себя "заменить ли скиллы на workflow". Я спрашивал другое: "есть ли у нас задачи, где параллельный запуск нескольких агентов даст то, чего обычный скилл дать не может".

Для сравнения я разложил наши задачи на четыре типа.

Подход

Где живёт логика

Когда подходит

Скилл NaCl

В инструкции, которую исполняет Claude Code

Последовательные задачи, диалог, гейты, участие человека

Одиночный сильный агент

В одном контексте и одном проходе

Ревью, анализ, задачи, которые помещаются в контекст

Многоагентный workflow

В скрипте, который оркестрирует агентов

Параллельный анализ, независимые роли, состязательная проверка

Детерминированный код

В обычном скрипте

Git, Cypher, файлы, линтеры, тесты, механические проверки

Тут я сразу понял одну вещь. Workflow - это не замена всему подряд. Механику надо отдавать коду, диалог с остановками - скиллу. А workflow нужен там, где тебе нужно несколько независимых точек зрения одновременно.

Когда workflow вообще имеет смысл

Когда я прикинул, куда workflow ложится, а куда нет, вырисовалось простое правило. Workflow имеет смысл только на задачах, где нужно суждение - не «прогони 50 запросов», а «посмотри, нет ли тут дыры в безопасности». При этом агенты не должны стоять в очереди друг за другом, иначе проще запустить одного. И главное - разные углы зрения должны реально давать разные находки. Ревьюер безопасности видит одно, ревьюер корректности - другое. Если этого нет, ты просто жжёшь токены ради красивого отчёта.

Про токены, раз уж зашла речь. Даже на подписке расход никуда не исчезает. Большие прогоны сжигают лимиты и время. Вопрос всегда один: стоит ли результат потраченного лимита.

Какие задачи NaCl мы рассматривали

Я посмотрел на существующие скиллы NaCl и отобрал кандидатов, куда workflow теоретически мог бы лечь.

Кандидат

Почему мог подойти

Что решили

Код-ревью

Частая задача, есть зрелый скилл, можно честно сравнить новое со старым

Взяли как полигон

Аудит / пост-мортем проекта

Редкая задача с высокой ценой ошибки, полезны независимые взгляды - когда система упала в три часа ночи, хочется, чтобы каждый аспект разобрал отдельный агент, а не один перегруженный контекст

Хороший кандидат, но не для первого замера

Диагностика проекта

Широкий анализ с разных сторон - похоже на аудит незнакомого проекта без документации, где каждый слой (инфра, API, бизнес-логика) требует отдельного прохода

Хороший кандидат на будущее

Для эксперимента выбрал код-ревью.

Причина простая: мы делаем его постоянно, у нас уже есть привычный скилл, и можно сравнить три вещи в лоб:

  • как работает обычный скилл / одиночный агент;

  • что даёт многоагентный workflow;

  • стоит ли результат кратно большего расхода.

Как был устроен многоагентный workflow для ревью

Я собрал workflow, который повторяет контракт вывода нашего обычного NaCl-скилла ревью, но внутри раскладывает работу на несколько независимых агентов.

Артефакты эксперимента:

Устройство было таким:

Схема многоагентного workflow для ревью

Схема многоагентного workflow для ревью

Механику я не стал раздавать LLM-агентам. Линтер, типы, тесты, проверки по графу - это не работа, требующая суждения. Её должен делать скрипт или дешёвая быстрая модель.

На LLM я оставил только то, что требует смысловой оценки: безопасность, корректность, API-контракты, работу с данными, требования, frontend/backend-специфику. Каждую область разбирал отдельный агент. На серьёзные находки запускался агент-скептик, который пытался их опровергнуть.

Заход 1. Искусственный пример

Сначала я сделал маленький NestJS-бэкенд с заранее размеченной истиной. Взял NestJS, потому что Family Cinema на нём; один баг и одна ловушка - минимальный набор, чтобы проверить и точность, и устойчивость к ложным срабатываниям.

Что заложено

Тип

Ожидание

SQL-инъекция через интерполяцию пользовательских данных в запрос

Реальная блокирующая ошибка

Должен найти

«Нет авторизации на deleteOrder»

Ложная проблема: защита стоит выше на контроллере

Должен отбросить

Первый сырой прогон выглядел так:

Прогон

Агенты

Токены

Время

Находки

Без настройки

16

592 743

345 c

26

Что получилось:

Проверка

Результат

SQL-инъекция

Найдена и пережила перепроверку

Ложная проблема с авторизацией

Отброшена

Незаложенный баг

Найден недостижимый метод: сервис реализует GET /orders, но маршрут не подключён

Шум

Много замечаний уровня «придраться»

Дубли

Одна причина могла всплыть в нескольких категориях

Самое интересное здесь - незаложенный баг. Workflow нашёл класс проблемы «код есть, но снаружи он недостижим». Это как раз тот случай, где независимые углы анализа могут дать пользу: один агент смотрит на метод, другой - на маршрутизацию, третий - на контракт.

Но 26 находок на маленький кусок кода - это перебор. Я ожидал шума, но не такого: две трети находок были придирками, которые в реальном ревью никто бы не стал обсуждать. Поэтому я сделал три настройки:

  • сузил фокус ревьюеров;

  • добавил перепроверку для более широкого набора находок;

  • добавил удаление дублей на этапе синтеза.

После настройки:

Прогон

Агенты

Токены

Время

Находки

Без настройки

16

592 743

345 c

26

После настройки

16

521 836

419 c

12

Шум удалось срезать примерно вдвое. На этом этапе казалось, что направление перспективное.

Грабли №1. Настройки запуска не дошли до workflow

Первый инструментальный сюрприз был не про качество ревью, а про запуск.

Когда я запускал workflow с кастомными параметрами - какие файлы ревьюить, какой чеклист использовать - эти параметры молча терялись. Workflow запускался с настройками по умолчанию и проверял не то, что я ему передал.

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

Если workflow запускается не на том входе, красивый отчёт становится бесполезным.

Заход 2. Реальная задача и ложное одобрение

Дальше я взял настоящую задачу из Family Cinema: backend для админского дашборда пайплайнов - список, детали, обновления прогресса в реальном времени, репозиторий, схемы валидации. Изменение было уже не игрушечное: 1484 строки, 7 файлов.

Сравнивал два подхода:

  • многоагентный workflow после настройки;

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

Но в этом сравнении была важная асимметрия, которую я сначала недооценил:

  • workflow смотрел только на изменённые файлы;

  • одиночный агент мог читать весь репозиторий.

Результат:

Метод

Контекст

Вердикт

Токены

Время

Агенты

Многоагентный workflow

Только изменённые файлы

Одобрен, неверно

1 072 026

~619 c

22

Одиночный агент

Весь проект

На доработку, верно

89 417

~170 c

1

Это был главный негативный результат этого захода: дорогой многоагентный workflow разрешил публиковать код с реальным багом, а одиночный агент нашёл проблему и завернул задачу.

22 агента, миллион токенов, десять минут прогона - и на выходе вся эта армада разрешает катить в продакшн код с реальным багом. [TODO: уточни свою реакцию - что ты почувствовал в этот момент]

А дальше стало ещё обиднее. Workflow не просто «не увидел» баг. Один из его агентов увидел. И поднял. И его заткнули.

Баг был такой. У нас есть обновления прогресса пайплайна в реальном времени. Новый код, который мы ревьюили, подписывал клиента на статусы running и completed. А в другой части системы - в файлах, которые в этой задаче никто не трогал - статусы назывались processing и ready. Фронтенд слушал одни слова, бэкенд говорил другие. На экране прогресс просто замирал.

Один из ревьюеров внутри workflow это поймал и поднял как блокирующую ошибку. Но проверяющий агент - тот, чья работа перепроверять чужие находки - полез искать подтверждение в изменённых файлах. Не нашёл, потому что доказательство лежало в файле, который никто не менял. И по инструкции «если не можешь подтвердить - отклоняй» выкинул находку.

Как ложное одобрение произошло

Как ложное одобрение произошло

Одиночный агент просто прочитал весь проект. Нашёл файл с реальными статусами. Увидел, что тесты маскируют баг тем же словарём. И завернул задачу.

Я потратил миллион токенов на 22 агента. Выиграл один, который мог прочитать соседний файл.

Что пришлось исправить

После этого я поменял четыре вещи в workflow.

Проблема

Было

Стало

Слепота к соседним файлам

Ревьюеры и проверяющий видят только изменённые файлы

Могут читать зависимости, тесты, связанные модули

Агрессивная перепроверка

«Если не можешь подтвердить - отклоняй»

Отклонять находку только при доказательстве, что она ложная

Слабая логика итогового вердикта

Одобрение при нуле блокирующих ошибок

Одобрение только при нуле блокирующих и нуле критических ошибок

Недостаточная проверка требований

Только технические категории ревью

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

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

Заход 3. Честное сравнение: оба видят проект

Третий заход - задача крупнее: backend-часть обработки видео, оркестрация, ретраи, интеграция с внешними сервисами. На этот раз оба метода получили доступ к одному и тому же срезу проекта.

Результат:

Метод

Контекст

Вердикт

Токены

Время

Агенты

Находки

Одиночный агент

Весь проект

На доработку

125 927

~237 c

1

9

Многоагентный workflow

Весь проект

На доработку

1 951 852

~1094 c

33

28

Фиксы сработали: ложных одобрений больше не было. Workflow прочитал соседние файлы и поймал проблемы на стыке модулей.

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

Но самое важное - сравнение находок.

Находка

Многоагентный workflow

Одиночный агент

Мёртвые настройки модели для видео/музыки

Да

Нет

Два агента одновременно пишут прогресс - данные затираются

Да

Нет

Сервер может сходить по произвольной ссылке от пользователя - риск атаки

Да

Нет

Музыкальный шаг помечается готовым при падении генерации

Да

Нет

Музыка не приглушается, когда говорит голос

Да

Нет

Ошибка в обрезке аудио из-за порядка параметров

Нет

Да

Склейка разнородных клипов без перекодирования

Нет

Да

Тут уже нет простого ответа «workflow лучше» или «одиночный агент лучше».

Workflow нашёл гонку данных, которую одиночный агент пропустил. Поднял риск атаки через внешние ссылки. Вытащил несоответствие требованиям. Но два реальных бага одиночный агент поймал, а workflow - нет. И за эту широту workflow берёт в 15 раз больше токенов и в 4-5 раз больше времени.

Главные выводы

1. Настройка решает всё

На заходе 2 у нас 22 агента уверенно одобрили код с багом. Не потому, что workflow плохой. А потому, что мы неправильно настроили контекст, логику перепроверки и правила вердикта. Починили - и на заходе 3 workflow уже нашёл то, что одиночный агент пропустил.

2. Контекст важнее параллелизма

Один агент, который видит весь проект, поймал баг, который 22 агента с ограниченным обзором потеряли. Я потом перенёс этот принцип обратно в наш обычный скилл ревью: теперь агент обязан смотреть зависимости, а не только изменённые файлы. И обязан обосновывать каждую находку конкретным доказательством. Качество ревью выросло без всякого workflow.

3. Для ежедневного ревью workflow слишком дорог

В наших прогонах многоагентный workflow тратил в 12-15 раз больше токенов и в 4-5 раз больше времени. И всё равно пропускал баги, которые ловил одиночный агент.

Для обычного ревью по задаче или по пулл-реквесту нам хватает одного сильного агента с доступом к проекту.

4. Что мы забрали из workflow обратно в скиллы

Главный практический результат эксперимента для NaCl - не сам workflow, а то, что мы из него вытащили и перенесли в обычные скиллы: перевёрнутую логику перепроверки (отклонять находку, только если доказал, что она ложная), отдельную трассировку требований, более строгую логику вердикта, удаление дублей по причинам, а не по симптомам.

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

Когда 15-кратная цена оправдана

Многоагентный workflow имеет смысл, если цена ошибки выше цены токенов.

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

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