실패를 흡수하는 시스템을 만드는 법
프롬프트를 길게 쓰면 해결될 줄 알았다.
조건을 더 붙이면 안정될 줄 알았다.
형식을 강제하면 사고가 줄어들 줄 알았다.
실패하면 문장을 고쳤다.
또 실패하면 더 자세히 썼다.
그래도 안 되면 모델을 바꿨다.
그러면서 속으로 중얼거렸다.
“아직 AI가 덜 똑똑하네.”
완전히 틀렸다.
AI가 멍청한 게 아니었다.
내가 설계를 안 하고 있었다.
나는 운전대를 계속 갈고 있었고,
브레이크는 점검하지 않았다.
이건 단순히
왜 어제는 되던 게 오늘은 안 되는지에 대한 얘기다.
그래서 나는 비교를 했다.
그냥 궁금해서가 아니다. 억울해서였다.
왜 나는 계속 헐떡이고, 왜 저 작은 프로그램은 멀쩡히 도는가.
나는 기능을 붙였고, 구조를 키웠고, 레이어를 쌓았다.
그런데도 자꾸 삐끗했다.
그래서 내가 만들던 것과 PicoClaw를 나란히 놓고 뜯어봤다.
같은 일을 하는 두 시스템을 옆에 세워두고 보니 비로소 보였다.
나는 겉을 키우고 있었고, 얘는 속을 다지고 있었다.
시스템이 자꾸 헐떡였다.
어디선가 한 번 삐끗하면, 그 여파가 끝까지 갔다.
그래서 나는 기능을 더 붙였다.
라우팅을 개선하고,
스케줄러를 바꾸고,
정책을 덧대고,
에이전트를 추가했다.
겉모습은 점점 그럴듯해졌다.
그런데 자꾸 퍼졌다.
본넷을 열어봤다.
그 무겁고 화려한 구조 밑에
허술한 엔진이 달려 있었다.
나는 50cc 스쿠터 엔진으로
수상보트를 끌고 가려 하고 있었다.
운전대만 F1용으로 갈아 끼우면서.
Picoclaw를 열어봤다.
생각보다 초라했다.
화려한 기능도 없고,
복잡한 계층도 없었다.
대신, 단순했다.
LLM을 호출한다.
실패하면 반응한다.
성공하면 다음으로 간다.
그게 전부였다.
처음엔 허전했다.
“이게 다야?” 싶었다.
근데 한참 보고 나서야 보였다.
이건 AI를 더 똑똑하게 만들려는 구조가 아니라,
AI가 실패해도 버티는 구조였다.
나는 성공을 전제로 설계했고,
얘는 실패를 전제로 설계했다.
차이는 거기 있었다.
AI가 실패하면 나는 이렇게 했다.
“다시 해봐.”
안 되면 한 번 더.
그래도 안 되면 또 한 번.
나는 그걸 끈기라고 생각했다.
사실은 기도였다.
작은 그 프로그램은 기도하지 않았다.
먼저 물어봤다.
이게 말이 꼬인 건가?
시간이 부족한 건가?
아니면 모델이 맛이 간 건가?
종류를 나눴다.
그리고 종류에 따라 다르게 움직였다.
포맷이 틀리면 그 자리에서 멈췄다.
시간이 오래 걸리면 다른 모델로 넘겼다.
이상해진 모델은 잠시 쉬게 만들었다.
나는 감정적으로 매달렸고,
얘는 구조적으로 처리했다.
재시도는 희망이었다.
분류는 설계였다.
나는 프롬프트에 이렇게 썼다.
“시스템 파일은 건드리지 마.”
“이 경로 밖으로 나가지 마.”
말로 통제할 수 있다고 믿었다.
하지만 AI는 말에 감동하지 않는다.
그럴듯하게 고개를 끄덕일 뿐이다.
그 프로그램은 다르게 했다.
아예 나갈 수 없게 만들었다.
허용된 것만 실행되게 만들었다.
위험한 패턴은 처음부터 막았다.
나는 부탁했다.
얘는 벽을 세웠다.
통제는 문장이 아니었다.
환경이었다.
“이 모델이 제일 좋지.”
나는 특정 모델을 고정해두고,
그놈이 잘해주길 기대했다.
실패하면 로그를 보고,
또 그놈에게 맡겼다.
그 프로그램은 이름을 믿지 않았다.
별칭으로 불렀다.
안 되면 다른 모델로 넘어갔다.
잠깐 쉬게도 했다.
나는 모델을 신앙처럼 대했고,
얘는 부품처럼 다뤘다.
모델은 정답이 아니었다.
교체 가능한 선택지였다.
이게 제일 늦게 깨달은 부분이다.
나는 파일을 덮어썼다.
큐는 계속 쌓였다.
이미 끝난 작업이 재기동하면 다시 튀어나왔다.
“왜 또 돌아가냐”
그때마다 당황했다.
그 프로그램은 상태를 다르게 다뤘다.
한 번에 쓰지 않았다.
안전하게 바꾸고,
깨지면 아예 바뀌지 않게 했다.
쌓이면 정리했다.
나는 상태를 데이터처럼 다뤘고,
얘는 상태를 생존처럼 다뤘다.
AI가 아무리 똑똑해도
기억이 깨지면 끝이다.
나는 AI의 똑똑함을 문제로 봤다.
더 좋은 모델, 더 긴 프롬프트, 더 많은 컨텍스트.
근데 문제는 지능이 아니었다.
실패했을 때
시스템이 어떻게 반응하느냐였다.
성공을 전제로 설계하면
조금만 흔들려도 무너진다.
실패를 전제로 설계하면
흔들려도 버틴다.
프롬프트는 운전대다.
모델은 엔진이다.
하지만 시스템을 살리는 건
브레이크와 차체의 강성이다.
나는 그동안 운전대만 갈고 있었다.
이제는 다르게 간다.
AI를 더 잘 말하게 만드는 대신,
AI가 실패해도 무너지지 않는 구조를 만든다.