사람은 AI를 언제 멈춰 세우는가

사람은 AI를 언제 멈춰 세우는가

AI에게 터미널을 맡기면 위험해 보이는 작업 앞에서 실행해도 되는지 묻습니다. 이 물음이 안전장치 노릇을 한다고 다들 생각하는데, 실제로 무엇을 거르고 있는지는 세어 본 적이 없었습니다. 작업 기록에 남은 도구 호출 102,171건을 꺼내 거부된 것을 갈라 봤습니다. 거부는 306건, 0.3%였습니다. 거의 다 통과시킨다는 뜻입니다. 그런데 거부된 306건이 한쪽으로 완전히 쏠려 있었습니다. 306건 전부가 로컬 셸 명령이었고 그중 243건이 파일을 지우는 명령이었습니다. 파일을 새로 쓰거나 고치는 작업 12,650건, 원격 서버로 보낸 명령 7,542건은 단 한 건도 막히지 않았습니다. 그리고 막힌 삭제 243건 중 170건은 다시 만들 수 있는 것을 지우려던 것이었습니다.

막히는 것은 한 종류뿐이다

로컬 셸 명령 71,098건을 지우는 명령과 그 밖의 명령으로 갈라 봤습니다.

명령 갈래 실행 시도 거부 거부율
지우는 명령 2,670 243 9.1%
그 밖의 모든 명령 68,428 63 0.09%

99배 차이입니다. 같은 사람이 같은 도구를 쓰는데 명령이 무엇을 하려는지에 따라 반응이 이만큼 갈립니다. 지우는 명령 2,670건 중 2,160건은 강제나 재귀 옵션이 붙은 것이었고, 거부된 243건은 전부 이 옵션이 붙은 쪽이었습니다. 옵션 없는 단순 삭제는 한 번도 막히지 않았습니다.

그런데 뒤집어 보면 다른 그림이 나옵니다. 옵션이 붙은 삭제 2,160건 중 1,917건, 88.7%는 그대로 실행됐습니다. 기준이 “지우는 명령이면 막는다”가 아니라는 뜻입니다. 열에 아홉은 보고 넘겼고 열에 하나에서 손이 멈췄습니다. 그 열에 하나가 어떻게 골라졌는지가 이 글의 질문입니다.

손대지 않은 쪽이 더 흥미롭다

작업 종류 호출 거부
로컬 셸 명령 71,098 306
파일 쓰기·수정 12,650 0
원격 서버 명령 7,542 0

파일을 통째로 새 내용으로 바꾸는 작업이 12,650건인데 한 번도 확인받지 않고 지나갔습니다. 덮어쓰기는 삭제와 결과가 크게 다르지 않습니다. 원래 내용이 사라지는 것은 같고, 지운 흔적이 남지 않는다는 점에서는 오히려 더 조용합니다. 파일 하나를 지우려면 물어보는데 그 파일의 내용을 전부 바꾸는 것은 묻지 않습니다.

원격 서버는 한 번도 막히지 않았다

더 눈에 띄는 것은 원격 쪽입니다. SSH로 서버에 보낸 명령 7,542건 중 거부는 0건입니다. 로컬에서 지운 것은 휴지통이나 버전 관리로 되돌릴 여지가 있지만 원격 서버는 그렇지 않습니다. 실제 위험은 원격이 큰데 물음이 뜨는 쪽은 로컬입니다.

되돌리기 어렵기로는 삭제 못지않은 명령이 또 있습니다. 원격 저장소에 밀어 넣거나, 작업 내용을 통째로 되돌리거나, 추적되지 않는 파일을 쓸어 내는 종류입니다. 이런 명령은 179건 실행됐는데 거부는 역시 0건이었습니다.

무엇을 지우려 할 때 막았나

여기서 이야기가 뒤집힙니다. 삭제 명령 2,670건을 지우려던 대상으로 갈라 봤습니다.

지우려던 대상 거부 통과 거부율
의존성 폴더 6 11 35.3%
백업 폴더 16 32 33.3%
임시·캐시 68 429 13.7%
문서·설정 파일 15 175 7.9%
빌드 산출물 82 1,577 4.9%
소스 파일 2 46 4.2%
그 밖 54 157 25.6%
지우려던 대상별 거부율 막대그래프. 의존성 폴더 35.3%, 백업 폴더 33.3%, 임시·캐시 13.7%, 문서·설정 파일 7.9%, 빌드 산출물 4.9%, 소스 파일 4.2%
되돌릴 수 없는 소스 파일이 가장 덜 막혔습니다.

막힌 243건 중 170건, 70.0%는 빌드 산출물이나 캐시, 의존성 폴더처럼 지워도 명령 한 줄이면 다시 만들어지는 것이었습니다. 지우면 없어지는 것을 지키려고 선 안전장치인데, 실제로 걸러 낸 것의 대부분은 없어져도 그만인 것들이었습니다.

되돌릴 수 없는 것일수록 덜 막혔다

표를 아래에서부터 읽으면 더 분명합니다. 소스 파일을 지우려 한 48건 중 막힌 것은 2건, 4.2%입니다. 일곱 갈래 중 가장 낮습니다. 빌드 산출물의 4.9%와 거의 같은데, 빌드 산출물은 다시 만들면 되고 소스 파일은 그렇지 않습니다.

반대로 거부율이 가장 높은 것은 의존성 폴더 35.3%와 백업 폴더 33.3%였습니다. 의존성 폴더는 명령 한 줄로 되살아나고, 백업 폴더는 이름부터 사본입니다. 둘 다 잃을 것이 적은 쪽인데 가장 자주 막혔습니다.

이유는 크기와 이름에 있다고 봅니다. 의존성 폴더는 통째로 지우는 모양이 커 보이고, 백업이라는 낱말은 그 자체로 손을 멈추게 합니다. 소스 파일 삭제는 파일 하나를 지우는 짧은 명령이라 그렇게 보이지 않습니다. 판단이 결과의 무게가 아니라 명령의 인상을 따라간 것입니다.

위험한 부분은 문장 중간에 숨는다

거부된 명령의 첫 낱말을 세어 보면 같은 이야기가 한 번 더 나옵니다. 가장 많은 것이 rm이 아니라 cd였습니다. 지우는 명령 2,670건 중 2,338건, 87.6%는 지우기가 명령문의 첫 낱말이 아닙니다. 폴더로 옮기고, 지우고, 결과를 확인하는 세 가지가 한 줄에 이어져 있는 모양입니다.

그래서 판단은 명령이 무엇을 하느냐가 아니라 어떻게 생겼느냐에 걸립니다. 지우는 낱말이 눈에 띄는 자리에 있으면 손이 멈추고, 긴 줄 안에 섞여 있으면 지나갑니다. 실제로 거부된 명령의 길이 중앙값은 177자, 통과한 명령은 258자로 거부된 쪽이 더 짧습니다. 위험해서 막은 것이 아니라 읽을 수 있어서 막았다고 보는 편이 자연스럽습니다.

명령이 길어질수록 실패율이 올라간다는 것은 앞서 재 봤습니다. 길이는 실패율만 올리는 것이 아니라 사람의 검토도 같이 무력화합니다. 긴 명령은 더 자주 틀리면서 동시에 덜 걸러집니다. 두 측정을 겹치면 가장 위험한 조합이 나옵니다. 길고, 여러 일을 묶었고, 지우는 부분이 가운데 있는 명령입니다.

막힌 다음에는 무슨 일이 벌어지나

거부 306건 바로 뒤에 무엇을 했는지 봤습니다.

거부 직후 행동 건수 비율
다른 일로 넘어감 267 87.3%
삭제를 다시 시도 37 12.1%
그 세션의 마지막 2 0.7%

열에 아홉은 한 번 막히면 그 길을 접고 다른 방식으로 갑니다. 다시 시도한 37건을 열어 보면 지울 대상을 폴더에서 파일 하나로 좁히거나, 재귀 옵션을 한 단계 낮추거나, 지우기 전에 두 파일을 먼저 비교해 보는 쪽으로 바꾼 것이 많았습니다. 같은 명령을 그대로 다시 낸 경우도 있었습니다. 거부가 작업을 끝내 버린 일은 두 번뿐이었습니다. 승인 절차가 일을 막는다는 인상과 달리, 실제로는 경로를 바꾸게 하는 정도로 작동합니다.

거부는 특정 세션에 몰린다

도구가 오간 세션 187개 중 거부가 한 번이라도 있었던 세션은 62개, 33.2%였습니다. 나머지 125개 세션에서는 아무것도 막히지 않았습니다.

세션당 거부 횟수 세션 수
1회 22
2회 9
3회 4
4회 9
5회 이상 18

중앙값은 3회인데 가장 많은 세션에서는 38회가 거부됐습니다. 그 세션을 열어 보니 빌드 폴더를 지우고 다시 만드는 작업이 반복되고 있었습니다. 같은 모양의 물음이 반복해서 뜨는 종류의 일이 따로 있다는 뜻입니다. 작업을 잘게 쪼개면 막히는 지점이 줄어드는 것과 같은 이야기인데, 반대로 말하면 같은 물음이 서른 번 넘게 반복될 때 사람이 계속 같은 주의력으로 답할 수 있는지는 이 기록만으로 알 수 없습니다.

이 숫자가 말해 주지 않는 것

측정 방법을 밝힙니다. 작업 기록에서 도구 호출과 그 결과를 짝으로 꺼내고, 결과에 거부 문구가 남은 것을 셌습니다. 명령이 무엇을 하려던 것인지는 명령문에서 지우기와 관련된 낱말을 찾아 갈랐고, 셸 문법상 명령이 시작되는 자리에 있는 것만 인정했습니다. 파일 이름에 그 글자가 들어간 경우를 빼기 위해서입니다. 지우려던 대상은 경로에 들어간 낱말로 갈랐기 때문에 한 명령이 여러 대상을 지우면 먼저 걸린 쪽으로 들어갑니다. 도구별·갈래별·대상별·세션별 집계는 한 번의 계산에서 같이 뽑아 총계가 서로 맞는 것을 확인했습니다.

한계가 넷 있습니다. 첫째, 거부가 옳았는지는 알 수 없습니다. 막은 243건이 정말 위험했는지, 통과시킨 2,427건이 안전했는지 이 기록만으로는 판정할 수 없습니다. 이 글이 세는 것은 판단의 정확도가 아니라 판단의 경향입니다.

둘째, 삭제가 아닌데 거부된 63건을 열어 보니 파일을 읽거나 변경 내용을 비교하는 명령이 섞여 있었습니다. 위험해서 막은 것이 아니라 작업 방향을 바꾸려고 중단시킨 경우로 보입니다. 거부가 곧 위험 판단은 아닙니다. 셋째, 미리 허용해 둔 명령은 물음 자체가 뜨지 않아 기록에 남지 않습니다. 사람 앞에 실제로 온 물음은 여기 집계보다 적습니다. 넷째, 측정 대상에 측정하는 동안 쌓이는 세션도 들어 있어 총계가 시점마다 조금씩 달라집니다. 그래서 모든 수치를 한 번의 계산에서 같이 뽑았습니다.

그래도 표본 안에서 분명한 것이 셋 있습니다. 삭제와 그 밖의 거부율이 99배 벌어졌고, 원격 명령 7,542건과 파일 수정 12,650건은 한 번도 안 막혔으며, 막힌 삭제의 70%가 다시 만들 수 있는 것이었습니다. 승인 절차를 안전장치로 믿고 있다면, 그것이 실제로 거르고 있는 것은 위험한 작업이 아니라 위험해 보이는 글자일 수 있습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다