Эфир 18.11 · Поток 318 ноября в 19:00 МСК — бесплатный практический эфир по ИИ-агентам · Живой Поток 3 стартует 23.11Эфир 18 ноября →Поток 3 (23.11)
Безопасность и правоРазбор · На радарHabr AI→ оригинал

Claude Code нашёл пищащий датчик по звуку с пяти гаджетов с точностью до 40 см

В кладовке с нераспакованными коробками что-то периодически пищало, и искать источник вручную было лень. Автор попросил Claude Code собрать веб-приложение: пять устройств с браузерным микрофоном слушают комнату, по чирпу выравнивают записи и триангулируют писк. Итог — точность около 40 см и найденный датчик угарного газа с севшими батарейками.

AI-обработка оригинала Habr AI; редакция Hamidun News
Claude Code нашёл пищащий датчик по звуку с пяти гаджетов с точностью до 40 см
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Основа — метод BeepBeep 2007 годачирп и выравнивание записей
Ключевой факт #2Горячая подмена JS-модулей на слушателях дала агенту свободу правок
Ключевой факт #3Агенту можно «дать уши» через WebAudio и WebSocket без своего аудиовхода

Знакомая бытовая история: в комнате с неразобранными после переезда коробками время от времени что-то пищит. Звук редкий, на слух не локализуется, а перебирать всё подряд не хочется. Автор оригинальной заметки решил задачу так, как сегодня решают многие мелкие проблемы: поручил её Claude Code. Результат называется Beep Locator, и интересен он не столько самим писком, сколько тем, как устроена работа человека и агента.

Как работает Beep Locator

На ноутбуке запускается веб-сервер на Python. Остальные устройства заходят на страницу по QR-коду или ссылке и становятся слушателями. В тесте участвовали два iPad, телефон, MacBook Pro и Surface. Каждое устройство через WebAudio получает доступ к микрофону и держит в памяти последние 60 секунд записи. Простой детектор на быстром преобразовании Фурье с фильтром высоких частот отмечает подозрительные писки и сообщает о них серверу.

Дальше начинается главное. Сервер просит одно из устройств проиграть короткий чирп, а у каждого слушателя запрашивает фрагмент записи примерно от 0,6 секунды до писка до 0,8 секунды после чирпа. Чирп служит общей точкой отсчёта: по нему записи с разных устройств выравниваются, и становится видно, насколько раньше писк дошёл до одного микрофона, чем до другого. По разнице времени и считается положение на карте.

Идею Claude нашёл сам, это статья BeepBeep 2007 года про измерение расстояний по звуку на обычных телефонах и КПК. Ей нужны только динамик, микрофон и канал связи. Для настройки устройства сначала проигрывали друг другу звуки, чтобы определить взаимное расположение, но получалось плохо. Тогда добавили «грубый режим»: значки перетаскиваются на карте примерно туда, где стоят устройства, а система потом уточняет координаты.

Горячая подмена кода и итерации с агентом

Самое практичное решение здесь не про акустику. Ещё на первом этапе в слушателей заложили метод installModule(): через WebSocket сервер может отправить на любое устройство новый JavaScript, и тот сразу выполнится. Причина прозаична: на некоторых устройствах браузер заново спрашивает доступ к микрофону после каждой перезагрузки страницы, и обходить все гаджеты руками после каждой правки было бы мукой.

Благодаря этому агент мог менять поведение «ушей» прямо на лету, читать журналы звуков и перенастраивать детектор без участия человека. Сам автор в основном сидел рядом и ставил задачи простым языком. Он попросил добавить режим хлопков, чтобы проверить систему, метки времени у значков, журнал с кнопкой воспроизведения записи с каждого устройства и кнопку «Это загадочный писк». Пометка помогает системе узнавать нужную частоту и следить именно за ней. Дальше появились функция «Переставить устройства» без перезапуска слушателей и подсказка, куда поставить ещё один микрофон, чтобы уточнить положение примерно на 12%.

Проект начали на iPhone в Claude Code с моделью Opus 5.5, а доводили на ноутбуке с новой Fable 5.2. Это хороший пример разделения труда: первая сессия написала problem.md и основу, вторая отлаживала систему уже в живой среде.

Что из этого вынести

Главная мысль автора: кодинг-агенту можно дать органы чувств, даже если у модели их нет. Своего аудиовхода у Claude нет, но он умеет писать и запускать код, который анализирует звук с чужих микрофонов, и сам подстраивает этот код. Похожий приём рассказывали на GitHub Universe: веб-камеру направляли на экран устройства, чтобы агент видел, сработало ли обновление. Для разработчика вывод простой: если агент «слепой», подумайте, какой дешёвый канал обратной связи дать ему (камера, микрофон, логи, скриншоты), и он начнёт сам замыкать цикл «изменил — проверил».

Есть и оговорки. Это домашний эксперимент, а не точный инструмент: точность около 40 см в одной комнате с пятью устройствами, и без этого результата пришлось бы всё равно перебирать коробки. Автоматическая калибровка по звукам отработала слабо, поэтому понадобилась ручная расстановка. Кроме того, механизм выполнения произвольного кода на клиентах по WebSocket удобен для отладки, но в чужой сети это готовая дыра. Использовать такое стоит только в доверенном окружении и на время эксперимента.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: как работает Beep Locator?

На ноутбуке запускается веб-сервер на Python. Остальные устройства заходят на страницу по QR-коду или ссылке и становятся слушателями. В тесте участвовали два iPad, телефон, MacBook Pro и Surface. Каждое устройство через WebAudio получает доступ к микрофону и держит в памяти последние 60 секунд записи. Простой детектор на быстром преобразовании Фурье с фильтром высоких частот отмечает подозрительные писки и сообщает о них серверу. Дальше начинается главное.

Что известно по теме: горячая подмена кода и итерации с агентом?

Самое практичное решение здесь не про акустику. Ещё на первом этапе в слушателей заложили метод installModule(): через WebSocket сервер может отправить на любое устройство новый JavaScript, и тот сразу выполнится. Причина прозаична: на некоторых устройствах браузер заново спрашивает доступ к микрофону после каждой перезагрузки страницы, и обходить все гаджеты руками после каждой правки было бы мукой.

Что известно по теме: что из этого вынести?

Главная мысль автора: кодинг-агенту можно дать органы чувств, даже если у модели их нет. Своего аудиовхода у Claude нет, но он умеет писать и запускать код, который анализирует звук с чужих микрофонов, и сам подстраивает этот код. Похожий приём рассказывали на GitHub Universe: веб-камеру направляли на экран устройства, чтобы агент видел, сработало ли обновление.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Практика · Hamidun Academy

Соберите рабочего ИИ-агента или сервис своими руками без ручного кода

В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.

Открыть 72ч бесплатный доступ →Интенсив по Вайб-кодингу
Что вы думаете?
Загружаем комментарии…