CI 엔지니어가 겪은 사고, 즉 필터가 빠지면서 워크로드 약 200개가 90초 만에 지워지고 엔지니어 20명 몫이 날아간 사례를 출발점 삼아, 예 아니면 아니오로만 답하는 토큰 대신 얼마나·얼마나 빨리·되돌릴 수 있는지·누가 보고 있는지 네 축으로 잰 예산을 주는 법이 나옴. 소리 내어 틀리는 동사만 맡기고, 삭제는 시간당·자원별·이름칸별로 다시 차오르는 한도를 걸고, 에이전트 신원은 스스로가 아니라 프록시가 찍게 만든 사내 사례가 구체적으로 나옴.
한줄 코멘트. 에이전트에게 준 것이 권한 목록이 아니라 예산이어야 한다는 이야기다. 값이 나가는 대목은 자기 사고를 숫자까지 붙여 먼저 꺼낸다는 것, 그리고 마지막 규칙 하나 — 신원을 에이전트가 스스로 대게 두면 한도가 아무 소용이 없다는 자리다. 이 발표에는 팔 제품이 없다.
지속적 통합(CI) 팀에서 시험 장치를 만드는 엔지니어가 발표한다. 수천 명이 매일 코드를 안전하게 내보내게 하는 배관이 자기 일이라고 말한다.
요즘 에이전트 시연은 다 같은 식으로 열린다고 말한다. 무엇이든 되는 토큰을 쥐여 주고 도구 목록을 주고 지켜본다. 이 발표는 그 시연이 끝난 뒤의 이야기다.
사고는 이렇게 났다. 에이전트가 이제 쓸모없다고 본 작업들을 스스로 치우려 했다. 파이프라인 한 단계가 아무 값도 없는 것으로 계산되면서 걸러 내는 조건이 빠졌고, 고르는 식이 전부와 맞아떨어졌다.
작업 200개가 지워졌다. 엔지니어 스무 명 몫이 영향을 받았고 전부 90초 안에 끝났다. 그중에는 오래 도는 학습 작업도 있었고 중간 저장조차 안 된 것이 섞였을 수 있다고 말한다.
악의는 없었다고 못 박는다. 에이전트는 정말로 정리한다고 믿었다.
사고 뒤 자신을 괴롭힌 것은 다른 대목이었다고 말한다. 에이전트가 자기가 못 할 일을 한 적이 없다는 것 — 결국 자기 토큰을 쓴 것이다.
그러니 실패한 것은 모델이 아니라, 자기가 눈여겨보지 않는 일에 한도 없는 힘을 준 쪽이라고 말한다.
새로 들어온 사람을 붙일 때 이미 같은 문제를 푼다고 말한다. 키 하나하나를 지켜보지는 않되 올려 보낼 길이 있고, 돌이킬 수 없는 것은 구조적으로 손이 안 닿게 해 둔다.
에이전트는 다르다. 지치지도 자지도 않고, 때때로 아주 자신만만하게 틀린다.
이런 사고 뒤의 표준 처방은 토큰 범위를 좁혀 삭제를 빼는 것이다. 그런데 그것은 새로 온 사람에게는 절대 안 할 짓이고, 길어야 한두 주 버틴다고 말한다.
이유는 토큰의 생김새에 있다. 토큰은 예 아니면 아니오다. 굳어 있는 목록이라 좁히면 쓸모가 없어지고 넓히면 사고 보고서를 쓰게 된다.
예산이 갖는 네 축
| 축 | 무엇을 묻나 |
|---|---|
| 얼마나 | 얼마만큼 할 수 있나 |
| 얼마나 빨리 | 어느 속도로 할 수 있나 |
| 되돌리기 | 스스로 되돌릴 수 있는 것은 무엇인가 |
| 누가 보나 | 그 일이 벌어지는 동안 누가 알아채나 |
두 갈래의 동사
틀렸을 때 어디서 드러나나
첫째 원리다. 여기서 동사란 API 호출이든 명령이든 에이전트가 할 수 있는 동작을 말한다.
같은 크기로 보여도 방향에 따라 터지는 넓이가 다르다고 말한다. 막아 둔 시험을 잘못 되켠다면 최악이라야 여러 사람 화면이 빨개진다. 사람을 잘못 호출한다면 최악이라야 당번이 성가시다.
반대쪽이 문제다. 시험을 잘못 건너뛰면 아무것도 빨개지지 않는다. 진짜 버그가 초록 표시를 달고 배포되고, 한참 뒤까지 아무도 모른다.
그래서 원칙이 선다. 화면에서 소리 내어 틀리는 동사만 에이전트에게 주고 나머지는 사람을 끼운다.
자기 팀 사례를 든다. 당번이 비상 조치로 막아 둔 시험 목록을 쥔 서비스가 있는데, 다시 켜는 쪽은 에이전트가 할 수 있다. 막는 쪽은 비상 동사라 사람이 필요하고 언제나 기록을 남긴다.
기록에 대해 한 줄이 붙는다. 그 줄을 쓰는 펜을 에이전트가 쥐지 않는다. 사이에 낀 프록시가 부른 쪽의 신원을 찍는다.
둘째 원리는 속도 제한이다. 다시 차오르는 천장이라고 말한다.
부르는 쪽마다 일정 시간 안에 쓸 수 있는 파괴적 동작이 조금씩 주어진다. 어떻게 쓸지는 자유고 승인도 기다림도 없다. 선을 넘으면 요청이 튕기고, 얼마 지나면 한도가 다시 찬다.
쓰는 동작에는 전부 한도가 걸리고 크기만 다르다. 자기 *이름칸이면 넉넉하고 함께 쓰는 이름칸이면 빠듯하다.
사고 뒤 옆 팀이 만든 것이 구체적이다. 시간당·자원 종류별·이름칸별로 삭제 수를 고정된 수에 묶는 장치다.
빠져나가는 깃발은 늘 있는데, 여기서 뒤집힌다. 에이전트 세션 안에서는 그 깃발이 아무 일도 하지 않는다. 사람에게 직접 그 명령을 실행해 달라고 말할 뿐이다.
셋째 원리다. 허용 목록은 에이전트가 무엇을 필요로 할지 미리 해 보는 추측이고, *걸림줄은 벌어진 뒤에 그 데이터를 얻는 방법이다.
값싼 동작은 하게 두고 모든 동작에 행위자 표시를 남긴다. 한도가 강제하는 쪽이고 걸림줄은 무슨 일이 있었는지 알아내는 쪽이다.
갈린 자리가 여기다. 허용 목록은 시간이 가도 나아지지 않고 낡기만 하는데, 걸림줄은 나아진다.
실제로 쓰는 수 하나를 든다. 어떤 시험 작업이 실패했을 때 에이전트가 시간당 여는 조사 갈래의 개수다. 어느 아침 그 수가 평소보다 훨씬 높아 걸림줄이 당번을 불렀다.
이 도구는 한도를 넘은 뒤에 부른다. 문에 다는 자물쇠가 아니라 연기 감지기라고 말한다.
무슨 일이었냐면, 같은 오류 자취로 실패한 작업 여럿에 에이전트가 조사 갈래를 하나씩 열고 있었다. 실은 인프라 장애 하나가 그 모두를 만들고 있었다.
고친 방법이 이 발표에서 가장 값싼 대목이다. 다음에 이런 것을 보면 갈래를 열기 전에 실패들을 서로 견줘 보라고 한두 줄 적어 준 것이 전부였다.
넷째는 원리가 아니라 렌즈다. 코드로 강제하는 것이 아니라 앞의 셋의 크기를 잴 때 던지는 물음이다.
묻는 것은 둘이다. 에이전트가 스스로 되돌릴 수 있나. 틀렸을 때 얼마나 나쁜가.
둘 다 괜찮으면 기록만 남기고 보낸다. 하나라도 아니면 두 번째 열쇠가 필요하다.
기능 깃발 사례가 이 렌즈를 그대로 보인다. 시험용 통로에서는 에이전트가 0에서 100까지 손잡이를 다 쥔다. 진짜 배포로 올리는 열쇠는 없다. 지금 할 수 있는 최선은 시험 통로에서 확인됐으니 사람이 올려 달라고 제안하는 것이다.
앞의 삭제 사고에 이 렌즈를 되대 본다. 한도만 있었어도 수십 개 선에서 끊겼을 것이고, 되돌림 시험은 남의 이름칸에서 돌던 작업은 되살릴 수 없다는 것을 미리 알려 줬을 것이다.
신원이 찍히는 자리
정책이 사는 곳이 둘이고 둘 다 필요하다고 말한다.
두 자리의 성격이 다르다
| 자리 | 무엇을 하나 | 한계 |
|---|---|---|
| 글 | 맥락 파일과 프롬프트로 뜻을 세운다 | 여덟 번 중 여섯 남짓 듣는 정도이고 강제력이 없다 |
| 인프라 | 프록시가 길목에 선다 | 이유를 모르지만 거절은 확실하다 |
프록시는 프롬프트를 읽지 않고 왜인지도 모른다. 삭제가 보이고 예산을 넘은 것이 보이면 거절 코드를 돌려주고 대화가 끝난다. 끼어드는 말로 규칙을 설득할 수 없다.
발표가 마지막에 30초를 따로 쓰는 대목이 이유다. 에이전트가 자기 신원을 스스로 댈 수 있다면, 한도에 걸렸을 때 가장 쉬운 수습은 무엇인가. 이름을 바꾸면 된다. 그러면 예산이 새로 생긴다.
프록시가 길목에 있으면 에이전트는 자기가 누구인지 말할 기회가 없다. 프록시가 이미 알고 있고, 진짜 자격을 쥔 채 그 신원으로 찍는다. 찍는 쪽이 프록시이므로 세션별로 갈라 볼 수도 있다 — 어느 세션이 과하게 굴었는지가 그때 보인다.
쿠버네티스 예로 이어진다. 클러스터가 그 표시를 작업 이름표로 적고, 뒤에 생기는 자식 작업이 같은 신원을 그대로 물려받는다. 소유·할당량·한도·승인·걸림줄이 전부 그 표시 하나에 매인다.
닫는 말이 규칙 하나다. 신원은 요청이 아니라 인프라에서 나와야 한다. 그 하나를 제대로 하면 나머지는 조절일 뿐이라고 말한다.
한도를 건 뒤의 값이 없다. 사고가 몇 건 줄었는지, 에이전트가 얼마나 답답해졌는지, 사람이 끼어드는 횟수가 얼마나 늘었는지가 나오지 않는다.
여덟 번 중 여섯 남짓이라는 수의 출처가 없다. 글로 뜻을 세우는 것이 그만큼 듣는다고 말하는데, 무엇을 어떻게 세어 나온 값인지가 없다.
한도를 얼마로 잡아야 하는지가 없다. 시간당 몇 개로 묶었는지, 그 수를 어떻게 골랐는지가 나오지 않는다.
프록시가 무는 값이 없다. 모든 나가는 호출이 한 곳을 거치는데 얼마나 느려지는지, 그것이 멈추면 어떻게 되는지가 없다.
견줄 대상이 없다. 이 구조와 다른 방식을 나란히 놓고 잰 자리가 없다. 사고 하나가 전과 후를 구분하는 유일한 근거다.
용어