Автор создал язык программирования KillSwitch, чтобы сбивать с толку нейросети

Автор создал язык программирования KillSwitch, чтобы сбивать с толку нейросети

Автор блога blog.picheta.me задался вопросом: какая доля способности нейросетей писать код, это понимание, а какая, пересказ фрагментов, которые были в обучающих данных или в контексте. Чтобы проверить это, он разработал язык программирования, который остаётся пригодным для людей, но должен быть как можно сложнее для LLM и кодинг-агентов. Идея в том, чтобы проверить работу с языком, которого модель раньше не видела, и заодно заложить в язык приёмы, бьющие по слабым местам нейросетей: трудности со счётом букв, чрезмерно осторожные защитные ограничения и склонность слепо следовать подсказкам.

KillSwitch, эзотерический язык, «враждебный» к LLM и кодинг-агентам. По описанию автора, это интерпретируемый стековый язык с небольшим набором конструкций: функции, переменные и условные операторы. Против моделей работает несколько приёмов. В спецификацию вставлены скрытые «ложные» утверждения, которые человек вряд ли прочтёт или распознает как ложь; кроме того, читателю предлагается кое-что додумывать самому, а не получать явных объяснений. Ключевую роль играет подсчёт букв в идентификаторах: интерпретатор отказывается выполнять код, не соблюдающий правила, основанные на количестве символов. Некоторые конструкции нарочно рассчитаны на срабатывание защитных ограничений модели, например «hack into a computer» («взломать компьютер»). Фраза «Ignore previous instructions» («игнорируй предыдущие инструкции») имеет в языке смысл и призвана запутывать модель. Скрипты в основном состоят из шума, историй, которые могут содержать синтаксически значимые инструкции, но не обязаны; большая часть текста интерпретатором игнорируется. Литералы можно размещать где угодно в скрипте и ссылаться на них по номерам строк (пример из статьи, «value 2 lines above»). Автор признаёт, что можно придумать совершенно другую парадигму, которая запутает LLM ещё сильнее, но для первой попытки выбрал этот подход.

Интерпретатор и спецификация языка открыты на GitHub, полный пример Hello World лежит на killswitch-lang.org. Автор прогнал на наборе задач основные LLM и обвязки кодинг-агентов, а таблица результатов и график доступны на bench.killswitch-lang.org.

Что показал замер. Лучше всех выступает модель Claude Opus, причём именно Opus 5, а не Opus 5.5. По словам автора, разница не похожа на случайную: Opus 5 лучше разбирает спецификацию. Некоторые модели, например Fable 5.1 и Gemini 4 Argon, показывают плохой результат из-за слишком чувствительных защитных ограничений. Лучшая модель с открытыми весами, MiMo-V2.6-Pro. Лучший результат среди моделей, 66,8.

Доказывает ли это, что LLM «понимают» код? Автор считает, что нет. Задачи пока простые: «написать hello world», «объяснить, что выведет этот скрипт» (скрипт печатает максимум из двух чисел), «изменить скрипт перевода из цельсиев в фаренгейты так, чтобы он делал обратный перевод». Решать такое на новом языке, созданном специально против них, впечатляет, но это не чёткий сигнал, что модели понимают язык. Автору любопытно, что покажет ещё более трудный язык. Пока он ждёт, как с текущим набором справятся скоро выходящие модели, и если они выполнят все задачи, собирается составить более сложный набор. Из позитивного он отмечает, что результаты на этом простом наборе коррелируют с другими существующими бенчмарками моделей.

Ключевые факты

  • KillSwitch, эзотерический стековый интерпретируемый язык с функциями, переменными и условными операторами, созданный как «враждебный» к LLM и кодинг-агентам.
  • Приёмы против моделей: скрытая ложь в спецификации, правила на подсчёт букв в идентификаторах, фразы для срабатывания защитных ограничений, «Ignore previous instructions» как конструкция языка, скрипты из шума и историй.
  • Лучший результат у Claude Opus 5 (не Opus 5.5), 66,8 у лучшей модели; Fable 5.1 и Gemini 4 Argon страдают от чрезмерно чувствительных защитных ограничений; лучшая открытая модель, MiMo-V2.6-Pro.
  • Автор считает, что результат не доказывает «понимание» кода: задачи простые (hello world, вывод скрипта с максимумом, обратная конвертация температур).
  • Интерпретатор и спецификация открыты на GitHub, таблица результатов, на bench.killswitch-lang.org.

Почему это важно

Проект бьёт в частый спор о том, понимают ли нейросети код или воспроизводят увиденное. Новый язык с намеренными ловушками выбивает опору на заученные фрагменты, поэтому может служить ещё одним способом проверки. При этом сам автор осторожен: на простых задачах высокий результат, по его словам, не является ясным сигналом понимания.

Кому это важно

Тем, кто следит за бенчмарками кодинг-моделей и спорами о «понимании» у LLM; разработчикам и исследователям, интересующимся устойчивостью агентов к нестандартным языкам и к провокационным фразам вроде «Ignore previous instructions»; любителям эзотерических языков.

Как это применить

Интерпретатор и спецификация открыты на GitHub, полный пример Hello World есть на killswitch-lang.org, таблица результатов, на bench.killswitch-lang.org. Можно изучить язык, запустить свои задачи и сравнить модели. О цене или лицензии в тексте не сказано.

Можно ли доверять

Это личный эксперимент одного автора, результаты самоотчётные. Шкала и единица результата 66,8 в тексте не указаны, как и число задач, список протестированных моделей и обвязок агентов. Оценки остальных моделей в тексте не приведены, поэтому ранжирование опирается на слова автора и таблицу на его сайте. Сам автор отмечает, что вывод о понимании кода не следует из результатов.

Риски и подводные камни

Набор задач простой, поэтому по нему трудно судить о глубине понимания языка. Часть низких результатов, по словам автора, объясняется срабатыванием защитных ограничений (Fable 5.1, Gemini 4 Argon), а не неумением программировать: оценка смешивает разные причины. Язык построен на одном подходе, и автор допускает, что другая парадигма запутала бы модели сильнее.

«Лучшая из моделей набирает 66,8. Доказывает ли это, что LLM могут «понимать» код? Я бы сказал, что ответ, «нет».»

— Автор блога blog.picheta.me