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

推荐订阅源

GbyAI
GbyAI
N
News and Events Feed by Topic
D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
Y
Y Combinator Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
A
About on SuperTechFans
I
InfoQ
S
Securelist
Last Week in AI
Last Week in AI
S
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Hacker News: Ask HN
Hacker News: Ask HN
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
腾讯CDC
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
博客园 - 三生石上(FineUI控件)
Simon Willison's Weblog
Simon Willison's Weblog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
美团技术团队
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
罗磊的独立博客
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
S
Secure Thoughts
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Latest news
Latest news
Recent Announcements
Recent Announcements
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LINUX DO - 热门话题
Security Latest
Security Latest
TaoSecurity Blog
TaoSecurity Blog
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 миллионов точек без потерь
Вайбдебаггинг — уже реальность? Мы дали ИИ-агенту отладчик и проверили
Maksim Parshin · 2026-04-16 · via Все публикации подряд на Хабре

Привет, Хабр!

В конце прошлого года Cursor выпустил Debug Mode — режим, в котором агент может собирать логи из рантайма, чтобы лучше понимать причины багов. Судя по реакции на Reddit, идею приняли с интересом.

Но что, если пойти более прямым путём? Дать агенту «руки», чтобы он отлаживался так же, как это делает разработчик: ставил брейкпоинты, ходил по ним, выполнял evaluate expression? Этим вопросом недавно задались исследователи из Microsoft Research и сделали экспериментальный фреймворк Debug2Fix. Субагент, оснащённый инструментами для взаимодействия с отладчиком, разбирался с багами из датасетов GitBug-Java и SWE-Bench-Live на 20% лучше, чем обычный агент без таких инструментов.

Если агент уже интегрирован с IDE, естественно дать ему доступ к полноценному дебаггеру, когда он так близко. Тем более что этим занимаются даже в Microsoft. Поэтому в недавнем релизе своего ассистента для IntelliJ мы добавили Debug Agent, позволяющий агенту взаимодействовать с дебаггером в среде разработки.

Сегодня попробуем починить реальный баг с помощью агента с инструментами дебаггера в IDE и Cursor в Debug Mode и проверим, действительно ли ИИ нужен полный доступ к отладчику или достаточно и хорошего логгирования.

Чему можно научить агента-дебаггера

JetBrains предоставляют удобное кросплатформенное XDebugger API для взаимодействия с отладчиком. Мы обернули эту функциональность в инструменты и дали их отдельному агенту. В результате IDE стало напоминать механическое пианино, которое играет само:

Вот как агент может взаимодействовать c отладчиком при помощи XDebugger API.

  • Установка брейкпоинтов. Агент может ставить брейкпоинты в любом месте проекта, в том числе в библиотечном коде. Поддерживаются также условные брейкпоинты: инструмент сразу валидирует выражение и не даёт поставить точку с некорректным условием. Удалять брейкпоинты агент тоже умеет, чтобы не оставлять после себя мусор.

  • Запуск отладочной сессии. Агент может сам запустить подходящую конфигурацию под дебаггером или дождаться, пока вы запустите нужное приложение вручную.

  • Навигация по коду. Агент умеет ждать срабатывания очередной точки останова. Когда выполнение останавливается, он может двигаться по коду с помощью привычных step over, step into, step out и run to cursor. При каждом переходе агент получает краткий дамп состояния отладчика и небольшой сниппет окружающего кода, чтобы сразу понимать, где он находится.

  • Evaluate expression. Это инструмент, который показался нам самым мощным в «руках» агента. Вручную писать длинные выражения в окне отладчика, чтобы посмотреть их значение, — рутинная и утомительная работа. Агенту же несложно сочинить даже довольно сложный сниппет. Доходило и до забавного: в процессе разработки мы однажды попытались сделать агента-отладчика read-only, чтобы он не натворил лишнего. Но DeepSeek не растерялся. Когда ему понадобилось воспроизвести тест, а записать его было нельзя, он просто вычислил его код целиком через evaluate expression:

Китайская модель не растерялась в read-only окружении

Китайская модель не растерялась в read-only окружении

И после этого радостно выдал:

Радостно!

Радостно!

Зачем это нужно

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

  • Автономная отладка. Самый прямой и «вайбкодерский» сценарий использования таких инструментов — автономная отладка. Вы даёте агенту задачу вроде «почини падающий тест» или «разберись, почему при клике на эту кнопку всё падает», и он начинает делать примерно то же, что делал бы разработчик: формулирует гипотезы, ставит брейкпоинты в интересных местах и ходит по ним, пытаясь подтвердить или опровергнуть свои предположения. Топовые LLM, например Claude Opus 4.6, способны на такую самостоятельную работу. Моделям послабее нужны более детальные инструкции. Поэтому мы добавили агентский skill, заточенный именно под автономную отладку с помощью новых инструментов.

  • Chat with debugger. Агент-отладчик может работать и в менее автономном режиме, помогая отлаживаться вам. Представьте, что вы пытаетесь поймать сложное состояние программы во время дебага. Для этого часто приходится разбираться в структуре объектов и проверять значения полей. У агента можно спросить о состоянии программы на естественном языке, и он сам построит и вычислит нужные выражения. Ещё один кейс — поручить агенту понять, куда и при каких условиях поставить брейкпоинты, чтобы быстрее попасть в нужное состояние.

  • Сбор данных из исполнения. Есть и менее очевидный, но в ряде случаев полезный сценарий: запускать агента не для поиска бага, а для сбора информации о том, какие данные и куда приходят во время выполнения. Это может пригодиться, например, для генерации модульного теста на конкретных данных, извлечённых из интеграционного. Кстати, для такой задачи мы разрабатывали и отдельный, более формальный пайплайн, о котором уже рассказывали на Хабре и на HeisenBug.

Отлаживаем настоящий баг

Мы взяли настоящее issue с багом и попробовали автоматически отладить его двумя способами: через структурированное логгирование в Cursor Debug Mode и через инструменты дебаггера в Veai. В качестве baseline запустили ещё и Claude Code без какого-либо специализированного инструментария для отладки. Во всех случаях использовалась одна и та же модель — Claude Sonnet 4.6.

Для теста мы выбрали хорошее issue в проекте jsoup. Оно подходит по нескольким причинам:

  • issue свежее, от 17 декабря 2025 года, и потому не попало в обучение;

  • баг не совсем тривиальный;

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

Настоящий фикс бага из issue

Настоящий фикс бага из issue

Результаты

Время

Все три инструмента справились с тем, чтобы найти причину проблемы и предложить правильный фикс. Claude Code потребовалось на это 8 минут рассуждений, так что баг не был тривиальным для агента, и наш эксперимент не вырожденный. Cursor на нескольких запусках в среднем находил причину проблемы за 6 минут, а Veai — чуть быстрее, примерно за 4. 

Evaluate expression помогает выявить причину прямо во время отладочной сессии

Evaluate expression помогает выявить причину прямо во время отладочной сессии

При отладке через логирование система по сути остаётся чёрным ящиком. Поэтому такой подход требует больше предположений, чем работа с дебаггером. На ходу отбросить гипотезу или сформулировать новую сложнее: сначала нужно дождаться завершения очередного цикла, и только потом принимать следующее решение. Этим, по-видимому, и объясняется разница во времени: агент в IDE с помощью evaluate expression смог срезать путь и определить причину проблемы прямо во время сессии:

Победитель: Veai

Стратегия

В нашем сценарии Cursor показал более структурированный подход к отладке. Сначала агент cформулировал несколько гипотез, а затем расставил в коде вызовы логгера, каждый из которых однозначно соответствовал конкретной гипотезе:

Cursor добавляет логгирование очень аккуратно: оборачивает в регионы и чётко сопоставляет каждый вызов определённой гипотезе

Cursor добавляет логгирование очень аккуратно: оборачивает в регионы и чётко сопоставляет каждый вызов определённой гипотезе

В результате запуска получились аккуратные и хорошо интерпретируемые логи:

После запуска агенту отдаётся json с хорошо структурированными логами

После запуска агенту отдаётся json с хорошо структурированными логами

Такая структурированность и формальность особенно помогают менее мощным языковым моделям. Например, мы попробовали отладить тот же баг на Cursor Free с Auto-моделью, и она справилась не хуже Sonnet.

Veai Debug Agent тоже строит гипотезы перед началом отладки, но у нас это зафиксировано на уровне SKILL.md:

State-of-the-art промпт-инжиниринга

State-of-the-art промпт-инжиниринга

И это тоже работает — в том числе на self-hosted DeepSeek v3. Но последовательно пройти по плану из девяти пунктов, используя большой набор сравнительно сложных инструментов, для LLM очевидно труднее, чем расставить логгирование по формализованному шаблону. Во втором случае сами вызовы логгера играют роль внешней «памяти» и помогают ассистенту не сбиваться с пути. В Veai же мы в большей степени опираемся на собственный «мозг» модели. Это даёт агенту больше свободы, но одновременно повышает вероятность, что он запутается.

Мы планируем упростить и формализовать этот процесс с помощью субагентов, но пока в этой номинации победу стоит отдать конкурентам.

Победитель: Cursor

Тулинг

За счёт интеграции с IntelliJ API агенту в IDE доступны инструменты, которых нет в Cursor. В нашем сценарии это проявилось довольно явно.

В одном из запусков Cursor не учёл, что в настроенной версии Java ещё не поддерживаются text blocks, и сгенерировал такой воспроизводящий тест:

Да, даже Sonnet 4.6 может так ошибиться

Да, даже Sonnet 4.6 может так ошибиться

При этом агент не заметил ошибку и сразу перешёл к формулировке гипотез. Проблема обнаружилась только на этапе запуска теста. Veai умеет ловить такие вещи раньше: инструмент edit_file возвращает список предупреждений компилятора по текущему файлу, и агент «видит», что созданные им строки подсвечены как ошибочные.

Более важное различие связано со способом запуска приложения под отладкой. Cursor использовал консоль и напрямую запускал mvn-команды, а Veai стартовал IDE-конфигурации через специальный инструмент. То есть делал ровно то же, что делает разработчик, нажимая кнопку Run рядом с тестом в IDE. На нашем примере и Sonnet результат получился примерно одинаковым. Но для LLM всё же проще передать название теста в инструмент run_configuration, чем правильно сформулировать команду для Maven или Gradle, которые могут быть нетривиально настроены. У нас в проекте, например, единственный корректный способ запустить плагин под отладкой — через вручную созданную конфигурацию.

Победитель: Veai

Расход токенов

Перед отладкой в Cursor агенту нужно расставить вызовы логгера в коде, а после завершения — убрать их. Это означает дополнительные вызовы edit_file, которые по сути «уходят в ноль», но дважды расходуют output-токены в объёме, сопоставимом с длиной сниппетов с логами.

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

Ничья

Кроссплатформенность

Может показаться, что Veai заточен именно под JVM-разработку в IntelliJ IDEA, тогда как Cursor — универсальный редактор, в котором можно отлаживать что угодно. На практике всё не совсем так. API дебаггера в IntelliJ кроссплатформенное, поэтому использовать агента-отладчика можно во всех IDE, где доступен плагин: IDEA, PyCharm, GoLand, PhpStorm, WebStorm, Rider, Android Studio, GigaIDE, OpenIDE.

Ничья

Выводы

Конечно, один баг не заменяет полноценный бенчмарк, но даже на таком примере можно сделать несколько выводов. Инструменты IDE, включая дебаггер, действительно можно превратить в рабочий набор для ИИ-агента. Однако решает не только сам доступ к отладчику, но и качество harness: как именно агенту даны инструменты, насколько аккуратно ограничены их действия, как ему возвращается состояние программы и насколько легко ему опираться на этот контекст в следующих шагах. Если обвязка сделана хорошо и/или модель достаточно сильная, ассистент будет этими инструментами пользоваться и получать от них реальную пользу.

Структурированные логи — тоже рабочий способ отладки. Он легче, предсказуемее и потому лучше подходит для менее сильных LLM, а также для более простых проектов и окружений. Полезно смотреть на агента как на разработчика, чьи возможности ограничены моделью под капотом, и задаваться вопросом: как в этой ситуации отлаживался бы человек?

Если речь о неочевидной проблеме в проекте средней сложности на JVM, то сильный агент с доступом к дебаггеру, скорее всего, разберётся быстрее. Если же это аномалия в поведении Telegram-бота, написанного одним файлом на Python, проще и надёжнее залоггировать все переходы состояний. Инструменты сами по себе остаются лишь инструментами, а решающее значение имеет то, какой агент ими пользуется и в каком контексте.

Приглашаем попробовать Veai Debug Agent на багах, до которых раньше не доходили руки, и проверить на практике, где доступ к дебаггеру действительно даёт агенту преимущество. Фидбек можно оставить в Telegram-чате с командой разработки. А на JPoint в Москве мы отдельно расскажем ещё об одном способе ИИ-отладки, который встроили в плагин, — сборе дерева вызовов упавшей программы.

Скилл для вайбдебаггинга доступен на стартовом экране Veai

Скилл для вайбдебаггинга доступен на стартовом экране Veai

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

11.11%Использую полноценный дебаггер через MCP или в ассистенте (например, Veai)2

0%Использую Cursor Debug Mode0

61.11%Использую ИИ для отладки, но без специальных инструментов (просто спрашиваю в чате)11

27.78%Нет, не доверяю отладку ИИ или вообще не пользуюсь им5

Проголосовали 18 пользователей. Воздержались 2 пользователя.