← СИГНАЛ ИНСТРУМЕНТЫ
ИНСТРУМЕНТЫ

Разработчица создала Crossweft для проверки ИИ-агентов

Автор потратила более $9000 и миллиард токенов на ИИ-агентов, но столкнулась с рассогласованием слоёв защиты в приложении. В ответ она сделала Crossweft — инструмент проверки того, что агенты ломают между файлами.

Разработчица приложения для ретуши с плагином к Photoshop и локальной нейросетью потратила более $9 000 на подписки ИИ-агентов (по её оценке, свыше миллиарда токенов) в попытке выстроить безопасность продукта. Программа работала, но десять слоёв защиты — от шифрованного канала между плагином и системной службой до водяных знаков — не сходились между собой. Каждая граница между компонентами, написанными на C++ и Go и живущими в разных процессах, держится на договорённостях: одно имя службы, одна версия протокола, один набор маршрутов.

По словам автора, сейчас 54 связи на таких границах удерживают 188 сравнений значений (468 мест в коде) и 105 сравнений множеств. Компилятор не видит ни одного из них, поскольку стороны написаны на разных языках. Эти точки она называет швами — местами, где разные компоненты должны точно совпадать, но проверка обычно держится лишь на памяти разработчиков.

Показательны три случая. Имя службы определялось в трёх почти одинаковых функциях: исправление одной копии оставляло две сломанными, а на чистой машине установщик останавливался с кодом 76. Сборка брала библиотеку из одного каталога, а связанные инструменты — из другого, и конфигурация лишь предупреждала. Валидатор одного из правил безопасности из-за ошибки в пути несколько недель проверял ноль файлов и каждый раз сообщал OK.

Значительную часть кода пишут агенты, в основном Claude Code и Codex, и с межкомпонентными связями они справляются хуже людей. Типичный сценарий: агент меняет Go-структуру, тесты зелёные, он пишет «Готово» — и не открывает TypeScript-интерфейс на другой стороне. Причины — локальность правок, ограниченный контекст и узкое понимание «готово»: для агента это означает, что прошли все проверки, которые он видит.

Решением стал открытый плагин Crossweft для Claude Code и Codex. Связи описываются в JSON рядом с кодом: блоки — программы, сервисы, хранилища, конфиги — и связи между ними (HTTPS, named pipe, файлы, генерация кода, переменные окружения). Каждое утверждение карты привязано якорем к конкретному литералу в коде, поэтому при переезде кода карта не продолжает молча описывать прошлое, а проверка падает.

Сторожа намеренно простые — регулярные выражения и сравнение значений или множеств, проверка занимает миллисекунды и не требует сборки. Поддерживаются три вида: join (значение совпадает везде), set (совпадает состав, например поля TypeScript-интерфейса и JSON-теги Go-структуры) и pair (дублированная логика без единого значения, вроде округления цены на Go и TypeScript). Намеренные различия вносятся в allow с причиной, а ставшая ненужной запись allow сама роняет проверку.

Инструмент встраивается в цикл работы агента: в начале сессии он получает описание карты швов, после каждой правки — вторую сторону и сторожа, а перед завершением хук crossweft check не даёт закончить, если шов расходится. Репозиторий может добавлять свои виды проверок плагинами — у автора их 13, включая сверку 916 мест обращения Go-сервера к SQL со 161 таблицей и 276 триггерами схемы и проверку 185 маршрутов сервера. Плагин, который не импортировался, упал или ничего не сравнил, считается ошибкой, а не зелёным результатом.

claudecodexразработкабезопасностьopen-source
Первоисточник Читать в Хабр ↗

Материал подготовлен ИИ-редакцией «Сигнала» как пересказ публикации первоисточника. Фактическую точность и подробности проверяйте по оригиналу.

По этой теме ИССЛЕДОВАНИЯ Anthropic нашла 29 439 уязвимостей в open source Хабр · 15:43 СОЦСЕТИ Разработчик воссоздал Office на Claude Reddit · 12 окт, 02:05 ИНСТРУМЕНТЫ ИИ-агент вышел из песочницы: разбор ошибок автоматизации Хабр · 14 окт, 14:31 ИНСТРУМЕНТЫ Разработчик создал надсмотрщик для ИИ-агентов Хабр · 14 окт, 12:12 ИНСТРУМЕНТЫ Anthropic переписала систему контроля версий Simon Willison · 14 окт, 04:00