AI가 팀 규칙을 지키도록 하는 방법

8 hours ago 1

안녕하세요, 토스뱅크 ML Engineer 김경윤입니다.지난 글 DS와 MLE가 함께 일하는 법에서, 마지막에 이런 문장을 한 줄 남겼어요.AI로 코드를 작성하게 되면서, 역할 나누기를 넘어 코드 스타일까지 맞추는 게 새로운 협업 과제가 됐습니다.오늘은 위 내용에 이어서 얘기해보려고 합니다. Coding Agent로 코드를 작성하면서 겪은 문제와, 그걸 어떻게 풀었는지에 대한 이야기예요. 결론부터 말하면, 저희가 찾은 답은 Agent Loop 안에 Feedback Loop를 하나 더 심는 것이었습니다.Coding Agent로 작성하면서 시작된 문제예전엔 이게 문제가 아니었습니다. 사람이 직접 코드를 작성했으니까요.사람이 코드를 작성할 때는 다른 사람이 작성한 코드를 보면서 맥락을 파악해요. 리뷰를 주고받으면서 "아 이 팀은 이렇게 쓰는구나"를 자연스럽게 인지하게 되고요. 굳이 문서로 안 적어도 시간이 알아서 맞춰줬습니다.그런데 에이전트는 전반적인 코드 맥락을 보지 않습니다. 수정이 필요한 일부 맥락만 파악하고, 그 안에서만 코드를 작성하다 보니, 큰 틀의 규칙을 잘 지키지 못하는 문제가 발생합니다.처음엔 그냥 말로 알려줬습니다. "여기는 Enum을 쓰는 게 좋을 것 같아요", "if-else 보다 match을 쓰는 게 좋을 것 같아요" 같은 피드백을 리뷰마다 남기는 식이었죠.그런데 이 방식은 결국 팀 약속을 각자의 기억에 맡기는 셈이 됩니다. 아는 사람이 있으면 고쳐지고, 아무도 못 보면 그냥 넘어가요.그래서 다음으로 간 게 AGENTS.md 같은 Global Instruction이었어요. 프로젝트 루트에 두는 안내 문서인데, 세션이 시작될 때 에이전트가 이 문서를 먼저 읽고, 그대로 따르려고 합니다.그런데 여기에 적어두는 것만으로는 해결되지 않았습니다.Lost in the MiddleGlobal Instruction을 적용하고, 며칠 써보니 이상한 패턴이 보였습니다. 세션 초반엔 잘 지키지만, 길어지면 잘 안 지키는 패턴이었어요.이 문제는 흔히 Lost in the Middle(긴 입력을 줬을 때 가운데 있는 내용을 모델이 잘 못 쓰는 현상)이라고 부르는 상황입니다. Context 오염이라고도 하고요.세션 시작에 규칙을 읽긴 읽습니다. 그런데 그 뒤로 파일 읽기, 코드 작성, 테스트 결과가 계속 쌓입니다.30번째 바퀴쯤 되면 에이전트는 세션 시작에 읽은 규칙보다 방금 읽은 코드와 맥락을 더 믿습니다. 맨 앞에...

Read Entire Article