GAS 스크립트를 사용하다가 개선사항이 있어서 제미나이에 요청하면 개선된 코드를 짜서 준다. 그런데 가끔 그 새 코드에서 에러가 나고, 원인을 찾아 고쳐달라고 해도 해결이 안 되는 경우가 있다. 이럴 때 제일 간단한 방법은 "그럼 아까 수정 전 버전으로 돌려줘"라고 하는 건데, 이게 원하는 대로 안 된다. 이번 글은 이 문제와, 그 때문에 실제로 코드를 잃어버린 경험을 정리한 글이다.
방금 전에 자기가 준 코드인데도, 정확히 되돌려주지 않는다
새 코드에서 에러가 나서 "직전 버전으로 돌아가자"고 하면, 제미나이는 그 이전 버전을 다시 써주긴 한다. 그런데 그게 진짜 이전에 줬던 그 코드 그대로인지는 확신할 수 없다. 스킨 부분에서 미묘하게 다른 부분이 있거나, 이전 버전에는 없던 부분이 섞여 있거나 하는 경우가 있었다. 대화 내용을 거슬러 올라가서 "그 정확한 시점의 코드"를 있는 그대로 재현해주는 게 아니라, 맥락을 참고해서 그럴듯하게 다시 만들어주는 느낌에 가까웠다.
이걸 모르고 무작정 덮어쓰다가 잘 돌아가던 소스를 잃어버렸다
이 특성을 제대로 모르고 있을 때, 새 코드를 받으면 바로 기존 파일에 덮어쓰는 식으로 작업했다. 새 코드에 문제가 생겨서 "이전 걸로 돌려줘"라고 했는데 돌아온 코드가 원래 잘 돌아가던 버전과 미묘하게 달랐고, 이미 원본은 덮어써서 사라진 뒤였다.
결국 잘 작동하던 상태로 완전히 돌아가지 못하고, 그 미묘하게 달라진 코드를 다시 하나씩 고쳐가며 원래 상태에 가깝게 맞춰야 했다.
왜 이런 일이 생기는지 생각해봤다
코드를 주고받는 대화가 버전 관리 시스템처럼 각 시점의 코드를 정확히 저장해두는 구조가 아니라는 게 근본 원인인 것 같았다. 대화는 흐름이고, "이전 버전"이라는 요청도 결국 그 흐름 속에서 다시 생성해내는 답변일 뿐이었다. 사람이라면 "아까 그거 그대로 다시 보여줘"라고 하면 파일을 그대로 복사해서 주면 되는데, AI는 매번 답을 새로 만들어내는 쪽에 가까워서 완전히 똑같은 재현을 보장하지 않는 것 같았다.
결국 새 코드를 받을 때마다 직접 백업해두는 습관으로 바꿨다
이후로는 제미나이에게 이전 버전을 되돌려달라고 요청하는 걸 신뢰하지 않기로 했다. 대신 새 코드를 받아서 적용하기 전에, 지금 잘 돌아가고 있는 버전을 먼저 별도 파일로 저장해두는 습관을 들였다. 덮어쓰기 전에 원본을 따로 챙겨두면, 새 코드가 문제를 일으켜도 AI에게 되돌려달라고 부탁할 필요 없이 저장해둔 파일로 바로 복구할 수 있었다.
버전 번호를 남겨달라고 해도, 다음번엔 또 빠진다
이 문제를 알고 나서, 코드를 줄 때마다 파일 맨 위에 버전 번호나 날짜를 주석으로 남겨달라고 따로 지시해봤다. 그렇게 하면 지금 이 코드가 몇 번째 버전인지 최소한 구분은 할 수 있을 거라고 생각했다. 그런데 이 지시도 그때 뿐이었다. 한 번 말해두면 몇 차례는 지켜지다가, 어느 순간부터 슬그머니 버전 번호가 빠진 코드가 나왔다. 결국 버전 표시를 매번 다시 요청해야 했는데, 대화가 길어지고 에러 수정이 반복될수록 그것마저 챙기는 걸 잊어버리는 경우가 많았다.
에러가 몇 시간씩 이어지면, 마지막 성공 버전을 찾는 것부터 일이 된다
한두 번 에러가 나고 바로 고쳐지는 정도는 괜찮았다. 문제는 수정이 길어질 때였다. 어떤 경우엔 2~3시간 동안 계속 에러만 나고 해결이 안 되는 상황이 이어졌다. 지난 글에서 다뤘던 API 모델 관련 문제가 특히 그랬다 — 모델을 특정해서 에러가 나던 그 작업에서, 고치는 시도가 길어지다 보니 어느 게 마지막으로 제대로 돌아갔던 버전인지조차 헷갈리기 시작했다. 특히 여러가지를 동시에 수정하는 경우에는 각 버전마다 해결된 내용이 달라서 이를 반영한 소스를 만드는 것도 쉽지 않을 때가 있었다.
이럴 때는 백업을 해뒀어도 소용이 반쯤 없어진다.백업 파일은 여러 개 쌓여 있는데, 그 중 어느 게 정말 문제없이 돌아갔던 마지막 버전인지 하나하나 다시 실행해서 확인해야 했다. 에러를 고치는 것보다 마지막 성공 지점을 찾아내는 데 더 많은 시간을 쓴 적도 있었다.
여전히 못 푼 것
- 왜 어떤 경우엔 이전 버전과 거의 똑같이 재현되고 어떤 경우엔 미묘하게 달라지는지, 그 차이를 만드는 조건은 파악하지 못했다.
- 백업하는 습관 자체는 자리 잡았지만, 매번 새 코드를 받을 때마다 수동으로 저장해야 하는 번거로움은 그대로 남아 있다. 자동으로 버전을 남기는 장치는 아직 만들지 않았다.
- 이미 잃어버렸던 원래 버전 코드는 결국 완전히 똑같이 복구하지 못했다. 비슷하게 맞췄을 뿐, 원본 그대로인지는 끝까지 확신하지 못했다.
- 버전 번호를 남겨달라는 지시가 왜 계속 유지되지 않고 슬그머니 빠지는지 원인은 알아내지 못했다. 매번 다시 챙기는 수밖에 없었다.
- 에러 수정이 길어지는 상황에서 마지막 성공 버전을 빠르게 찾아내는 방법(예를 들어 각 버전을 실행해보지 않고도 구분할 수 있는 표시 체계)은 아직 만들지 못했다.
정리
AI가 방금 준 코드조차 정확히 그대로 다시 돌려주지 못할 수 있다는 걸 겪어보기 전까지는 몰랐다. 버전 번호를 남겨달라는 지시조차 계속 지켜지지 않고, 에러 수정이 길어지면 마지막 성공 버전을 찾는 것 자체가 또 하나의 일이 됐다. 코드를 다루는 이상 버전 관리는 AI에게 맡길 게 아니라 내가 직접, 그것도 꽤 부지런히 챙겨야 하는 일이라는 걸 이번에 제대로 배웠다.
'도구비교' 카테고리의 다른 글
| AI가 기억을 다루는 방식이 이상했던 세 가지 경우 (0) | 2026.09.21 |
|---|---|
| AI가 뭐길래? AI시대 생존을 위한 첫걸음 (0) | 2026.09.02 |