Человек 65 дней в одиночку собирал радиостанцию с AI-диджеем — и самое ценное там не радио, а как он заткнул модель.
Perminder Klair сделал SUB/WAVE: одну общую трансляцию поверх своей музыкальной библиотеки, где LLM выбирает треки, пишет подводки, читает погоду и принимает заявки обычным языком. Не плейлист — радио: кнопки «пропустить» у слушателя нет принципиально.
Интересна архитектура. Всё, что диджей говорит между треками, вынесено из кода в папки: SKILL.md с YAML-фронтматтером плюс необязательный tool.mjs. Один скилл — ровно один произносимый в эфир сегмент.
Ключевое поле во фронтматтере — context. Это белый список того, что скиллу вообще разрешено упоминать: время, дата, погода, праздник, текущее шоу, число слушателей. Не «что модель знает», а «о чём ей позволено говорить в этом сегменте».
Появилось оно не от красоты замысла. В репозитории есть ишью №471: погода, приклеенная к каждой подводке, сделала диджея комично помешанным на погоде. Лечение — убрать погоду из дефолтного контекста и вынести в отдельный скилл с кулдауном.
Вот это и есть приём, который стоит забрать. Мы привыкли думать про контекст как про ресурс: чем больше дал, тем лучше поймёт. А оказывается, контекст ещё и разрешение — и модель использует всё, до чего дотянется, просто потому что оно там лежит. Ограничивать надо не только объём, но и состав.
Разделение труда там же образцовое: пул кандидатов, кроссфейды, дакинг, очередь, расписание — обычный код. Модель выбирает из готового пула и пишет реплику. Контекст только смещает выбор, но не делает его.
https://github.com/perminder-klair/subwave
Что ваш агент упоминает к месту и не к месту, потому что вы однажды дали ему эти данные?
Post #773
508