Crossweft: инструмент для контроля согласованности между компонентами в мультиязычных проектах

Habr AI · оригинал

Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Разработчица Анастасия создала Crossweft — открытый инструмент, который выявляет рассинхронизацию данных и логики между разными языками программирования. Решение позволяет AI-агентам автоматически проверять межкомпонентные связи и предотвращать скрытые ошибки в сложных системах.

Инструмент решает критическую проблему интеграции кода, написанного разными языками и сгенерированного AI-агентами, обеспечивая детерминированную проверку согласованности интерфейсов и бизнес-логики.

Разработка программного обеспечения с использованием искусственного интеллекта сталкивается с системной проблемой: AI-агенты эффективно работают в рамках одного языка или модуля, но часто упускают из виду зависимости между компонентами, написанными на разных языках. Разработчица Анастасия, создавая ретуш-программу с локальной нейросетью, столкнулась с этой проблемой после того, как потратила более 9 000 долларов на подписки и сгенерировала свыше миллиарда токенов кода. Несмотря на безупречную работу отдельных модулей, система безопасности не функционировала из-за рассинхронизации между клиентом, системной службой и бэкендом. Анализ показал, что ошибки возникали в «швах» — точках, где разные компоненты должны точно совпадать по значениям, маршрутам или структуре данных, но эти связи не проверялись компиляторами или стандартными тестами.

Для решения этой задачи был создан инструмент Crossweft (от англ. weft — поперечная нить в ткани). Его ключевая идея заключается в том, что каждая связь между компонентами должна явно объявлять способ своей проверки. Связи описываются в JSON-карте, привязанной к конкретным строкам кода через якоря. Если код изменяется или перемещается, а карта не обновляется, проверка немедленно падает, предотвращая скрытые рассинхронизации. Инструмент использует три типа простых сторожей: join для сравнения одинаковых значений (например, версий API), set для проверки соответствия наборов данных (полей интерфейсов) и pair для контроля дублированной логики (например, правил округления цены на разных языках).

Особое внимание уделено интеграции с AI-агентами. Поскольку агенты, такие как Claude Code или Codex, работают в ограниченном контексте, они могут не заметить, что изменение структуры в Go требует обновления интерфейса в TypeScript. Crossweft решает это через систему хуков: после каждой правки агент получает уведомление о затронутых «швах» и инструкции, какой файл на другой стороне необходимо перечитать. Если расхождение не устранено, хук блокирует завершение сессии, пока стороны не будут приведены в соответствие. Это превращает абстрактную проблему согласованности в конкретный список действий для ИИ.

Инструмент также включает мета-проверки, гарантирующие, что сами валидаторы действительно сканируют код, а не возвращают ложноположительные результаты из-за ошибок конфигурации. Разработчица отмечает, что после внедрения Crossweft характер ошибок изменился: вместо труднодиагностируемых сбоев на чистой машине стали появляться явные сообщения о рассинхронизации конкретных значений. По данным автора, агенты за один день добавили более 290 сторожей и нашли 15 реальных расхождений в коде. Crossweft распространяется под лицензией Apache-2.0 и поддерживает интеграцию через MCP, плагины для популярных IDE и CI/CD пайплайны.