LLM을 곤란하게 하려고 설계한 난해한 프로그래밍 언어 킬스위치
개발자 Dominik Picheta가 LLM과 코딩 에이전트를 상대로 한 실험용 프로그래밍 언어 KillSwitch를 만들고, 언어 명세와 인터프리터를 오픈소스로 공개했다. 사람이 쓰는 데는 문제가 없지만, 모델이 읽고 쓰고 해석하는 과정에서는 최대한 마찰이 생기도록 설계한 것이 핵심이다. 여기에 그치지 않고 주요 모델과 코딩 에이전트 하네스를 같은 과제로 채점한 리더보드까지 함께 내놨다.
언어의 뼈대 자체는 낯설지 않다. 스택 기반 인터프리터에 함수, 변수, 조건문 정도의 구성 요소만 갖춘 작은 언어다. 이 부분만 보면 어떤 LLM이든 기존 언어에서 익힌 지식으로 어느 정도 접근할 수 있다. 문제는 그 위에 얹힌 장치들이다.
가장 눈에 띄는 것은 명세서에 의도적으로 심어둔 거짓 정보와, 사람이 추론해서 채워야 하는 빈틈이다. 또 식별자에 들어간 글자 수를 세는 규칙이 언어의 핵심 문법으로 작동해서, 이 조건을 어긴 코드는 인터프리터가 실행을 거부한다. 여기에 더해 모델의 안전 가드레일을 건드리는 표현이 언어 문법으로 들어가 있고, 특정 문구는 언어 안에서 고유한 의미를 갖도록 정의돼 있다. 스크립트의 상당 부분은 문법과 무관한 이야기로 채워진 노이즈이며, 리터럴은 스크립트 어디에나 놓인 뒤 줄 수를 세어 참조하는 방식이다.
이 프로젝트의 출발점은 LLM이 코드를 잘 쓰는 이유가 언어에 대한 이해 때문인지, 학습 데이터나 컨텍스트에 있던 코드 조각을 되살리는 능력 때문인지 가려보겠다는 질문이었다. 그래서 모델이 한 번도 본 적 없는 언어를 대상으로 삼았고, 여기에 글자 세기처럼 모델이 취약하다고 알려진 지점과 프롬프트를 잘 따르려는 성향까지 공략 대상으로 넣었다.
벤치마크 결과는 흥미롭다. 최고 성적 모델의 점수는 66.8이었고, 그 자리는 Opus 5.5가 아닌 Claude Opus 5가 차지했다. 두 버전의 차이는 우연으로 보이지 않을 정도로 명세 해석 능력에서 갈렸다는 평가다. 반대로 Fable 5.1과 Gemini 4 Argon은 지나치게 예민한 안전 가드레일 때문에 성적이 낮았다. 오픈 웨이트 모델 중에서는 MiMo-V2.6-Pro가 가장 좋은 성적을 냈다.
과제 자체는 아직 단순한 편이다. hello world 구현하기, 두 수 중 큰 값을 출력하는 스크립트의 결과 맞히기, 섭씨를 화씨로 바꾸는 스크립트를 반대 방향으로 고치기 같은 것들이다. 새로 만든 언어를 상대로 이 정도를 해낸다는 점은 인상적이지만, 그것이 곧 언어를 이해했다는 신호는 아니라고 만든 이는 선을 긋는다.
실무 관점에서 이 실험은 두 가지를 시사한다. 첫째, 코드 생성 모델의 성능 상당 부분이 학습 데이터에 있던 패턴 회상에 기대고 있을 수 있다는 점이다. 사내 DSL이나 사내에서만 쓰는 설정 언어처럼 학습 데이터에 없는 대상에 에이전트를 붙일 때 예상보다 성적이 떨어질 수 있다. 둘째, 안전 필터가 평가 자체를 왜곡할 수 있다는 점이다. 공격적인 표현이 섞인 과제에서 모델이 답을 회피하면, 그것이 이해 부족인지 정책 준수인지 구분해서 봐야 한다.
한계도 분명하다. 현재 과제 세트는 난이도가 낮은 편이고, 더 어려운 언어를 만들면 어떤 결과가 나올지에 대해서는 아직 답이 없다. 만든 이는 곧 나올 모델들이 이 과제를 모두 통과하면 더 복잡한 과제 세트를 새로 만들 계획이라고 밝혔다. 그럼에도 이 단순한 과제에서의 성적이 다른 모델 벤치마크와 상관관계를 보인다는 점은 의미 있는 신호로 받아들여지고 있다.