Автор инструмента памяти для ИИ-агентов нашёл за сутки 11 багов и выпустил 11 исправлений
Автор инструмента памяти для ИИ-агентов нашёл за сутки 11 багов и выпустил 11 исправлений Автор открытого инструмента skillmem — локальная память для кодовых агентов, куда они складывают выжимки из рабочих сессий, — за сутки выпустил одиннадцать релизов (с 0.9.3 по 0.10.5). Повод был не плановый: он сел проверять собственный продукт и нашёл подряд одиннадцать дефектов. Денежных цифр в статье нет, но цена самого дорогого бага измерима: за сутки он потратил около 286 млн кэш-токенов — кусочков текста, которыми модель измеряет объём работы и расход квоты подписки. Главный баг был рекурсией. Хук — скрипт, который срабатывает на событие. Хук на событие Stop (в Claude Code он срабатывает после каждого ответа модели) просил модель сделать выжимку через отдельный вызов Claude Code, а тот, завершаясь, запускал тот же хук снова — круг замыкался без дна. За сутки: 3901 фантомная сессия — ложные сессии, порождённые этой рекурсией, — гигабайт мусорных записей на диске, а пустые выжимки вида «сессия пуста, пришлите текст» попадали в контекст агента при следующем старте. Обиднее всего, что этот баг уже закрывали 9 сентября тремя предохранителями, но при переносе модуля хуков потеряли все три. Автор вернул их и добавил тест, который проверяет, что защитный флаг реально доходит до дочернего процесса. Дальше по списку: частотный лимит (без него модель вызывалась на каждый ход, ведь Stop срабатывает после каждого ответа, а не при закрытии сессии), четыре тихих дефекта, найденных внешним ревью, — например, все 7793 заметки лежали без привязки к сессии из-за несовпадения названий полей, — гонки за финальную выжимку и лишнее чтение файлов до 59 МБ на каждом пропущенном ходу. Самый крупный кусок — «граница доверия» в версии 0.10.0. У каждой записи памяти теперь есть происхождение, доверие выдаёт только владелец, а всё неодобренное подмешивается агенту внутри пометки «данные, не инструкции». Это закрывает путь атаки «чужой README → память агента → правило для пользователя». Суммаризатор запускается вообще без инструментов, а если система их не поддерживает — выжимка не делается совсем. Автор честно отмечает открытую проблему: как строго проверить, что читатель недоверенного текста лишён прав, — у его «канарейки» (контрольного файла) нет положительного контроля. Два дефекта нашла не человек, а автоматика. CI — автоматическая проверка кода при каждом изменении — поймал мёртвый поиск по пути файла на всех системах: на обычной установке без дополнительных зависимостей поиск для правки файлов не работал целиком, и это прятал эмбеддер — модуль смыслового поиска. Проверка на чистой Ubuntu выявила ложный флаг переиндексации на свежей базе. Вывод автора: держите в CI прогон без опциональных зависимостей — у него такой прогон был, и только поэтому дефект всплыл. Счёт находок автор отдаёт не себе: сам он нашёл рекурсию, потерянные предохранители и медленную миграцию; внешнее ревью другой моделью (Codex/GPT-6, читало код целиком) — дыру в задании до кода, три серьёзных бага и два остаточных блокера; CI и проверка на Ubuntu — ещё по одному. При этом каждое утверждение ревьюера проверялось командой на живой системе: из шести проверенных одно оказалось неверным. Итог: 214 тестов, причём каждая защита проверена откатом правки — ломают фикс, тест должен покраснеть, иначе он не считается. Кроссплатформенность проверена реальной установкой на macOS и Ubuntu, Windows — в CI. Пользователям версий 0.9.0–0.9.2 автор прямо советует обновиться: там рекурсия, которая тратит квоту подписки. Источник: https://habr.com/ru/articles/1082720/