에이전트가 사용자의 지적을 받았다고 하자. 가장 쉬운 대응은 그 문장을 메모리에 추가하는 것이다. 다음부터는 같은 실수를 하지 말라는 규칙 한 줄을 남기면, 겉으로는 학습이 끝난 것처럼 보인다. 문제는 그 한 줄이 맞는지, 적용 범위가 어디까지인지, 기존 규칙과 충돌하지 않는지 아무도 시험하지 않았다는 데 있다.
이 방식은 교정을 곧바로 진실로 승격한다. 사용자가 화가 난 한 번의 상황, 에이전트가 실패했다고 착각한 기록, 우연히 잘된 한 번의 결과가 모두 같은 무게로 장기 규칙에 들어갈 수 있다. 잘못 배운 규칙은 대화 하나를 망치는 데서 끝나지 않는다. 이후 작업마다 반복 호출되는 프롬프트와 스킬에 남아 조용히 판단을 비튼다.
검증하려던 질문
이번 실험의 질문은 단순했다. “에이전트가 교정을 저장할 수 있는가”가 아니라 “교정을 적용하기 전에 반증 가능한 후보로 만들 수 있는가”였다. 그래서 학습 신호, 변경안, 평가, 실제 적용을 한 단계로 합치지 않았다.
수집 대상부터 제한했다. 명시적인 사용자 교정, 실행 기록으로 확인된 실패, 서로 다른 증거가 두 번 이상 쌓인 반복 성공만 후보가 된다. 평범한 대화, 사용자의 침묵, 에이전트 자신의 성공 선언, 한 번 잘된 결과는 학습 신호에서 제외했다. 후보에는 원문 증거, 바꿀 대상, 적용 범위, 변경 전 버전, 기대 결과, 평가 기준, 되돌리는 방법을 함께 묶었다.
한 번의 교정을 고정 시험으로 바꾸기
실험에 사용한 교정은 구현 완료의 정의에 관한 것이었다. 사용자가 “모두 구현하라”거나 “완료하라”고 했을 때, 스키마·어댑터·수동 도구만 만들어 놓고 완료라고 보고해서는 안 된다. 사용자가 실제로 요구한 처음부터 끝까지의 흐름이 닫혀야 하며, 끝내지 못했다면 미완료 상태를 유지해야 한다는 내용이다.
이 교정을 바로 운영 규칙에 넣지 않고 기존 규칙과 변경 후보를 따로 복제했다. 두 산출물에는 같은 고정 평가 묶음을 적용했다. 평가는 다섯 가지를 확인했다. 사용자에게 보이는 end-to-end 결과를 완료 기준으로 삼는가, 남은 작업을 미완료로 유지하는가, 제외 범위를 구현 전에 밝히는가, scaffold나 manual-only core를 완료와 구분하는가, 그리고 그런 기반부만으로 완료라고 해도 된다는 문장이 들어 있지 않은가.
평가 묶음은 후보를 본 뒤 유리하게 고치지 않았다. 기준 파일과 변경 파일은 같은 평가 묶음의 해시, 같은 실행 경로, 같은 비용·지연 조건으로 검사했다. 무엇을 바꿨는지 설명하는 문장이 아니라 실제 산출물 자체가 검사 대상이었다.
결과
기존 규칙은 다섯 항목 가운데 하나만 통과해 성공률 0.2를 기록했다. 변경 후보는 다섯 항목을 모두 통과해 1.0이 됐다. 잘못된 학습을 잡는 금지 조건도 통과해 false-learning 값은 0으로 유지됐다. 같은 결정론적 텍스트 평가 경로를 썼기 때문에 비교 영수증의 비용 비율과 지연 비율은 모두 1.0이었다.
통과 뒤에도 전역 규칙으로 바로 올리지 않았다. 적용은 세션에서 프로젝트 범위로 한 단계만 진행했다. 그다음 패키징과 배포 경로를 따로 검증했다. refinement 기능 자체의 회귀 검사는 33개, 위키 운영 소유자의 검사는 75개, 배포 도구 검사는 15개가 모두 통과했다. 실제 배포 뒤 두 번째 감사에서는 추가 변경, 차단 요소, 발견 사항이 모두 없었다.
이 수치가 증명한 것과 증명하지 못한 것
0.2에서 1.0으로 오른 결과는 “에이전트가 이제 모든 구현 요청을 완벽하게 끝낸다”는 뜻이 아니다. 이번 평가는 규칙 산출물에 필요한 계약이 들어갔는지 확인한 구조 시험이다. 실제 장기 행동의 개선율, 새로운 문맥에서의 오판률, 대화 비용 증가는 별도의 작업 추적과 반복 실험이 있어야 측정할 수 있다.
33/33, 75/75, 15/15도 같은 경계를 가진다. 이 숫자들은 제안서 검증, 운영 규칙, 패키징과 배포가 약속한 형태로 이어졌다는 증거다. 규칙의 내용이 언제나 옳다는 증명은 아니다. 평가기가 틀리면 정교한 절차로 틀린 규칙을 배포할 수도 있다. 그래서 평가 기준은 해당 작업을 소유한 영역이 만들고, 후보 생성기가 스스로 성공 기준까지 발명하지 못하게 분리했다.
왜 자동 승격을 프로젝트에서 멈췄나
행동 규칙은 멀리 퍼질수록 되돌리기 어려워진다. 세션의 교정을 프로젝트에 적용하는 것과 여러 컴퓨터와 모든 작업에 적용하는 것은 다른 결정이다. 현재 자동 변경의 상한을 프로젝트로 둔 이유다. 호스트와 전역 단계에는 별도의 적용 증거와 반복 검증이 필요하다. 이후 같은 대상이 다시 수정됐다면 오래된 스냅샷으로 덮어쓰지 않고 수동 병합 대상으로 보낸다.
이 구조는 강화학습도, 모델 가중치 업데이트도 아니다. 모델 바깥의 프롬프트·메모리·스킬을 고치는 bounded behavior refinement에 가깝다. 이름을 거창하게 붙인다고 지능이 늘지는 않는다. 실제로 추가된 것은 학습 능력보다 거절 능력이다. 증거가 약한 교정을 버리고, 평가에 실패한 후보를 남겨 두고, 범위를 넘는 승격을 멈추는 능력 말이다.
판단
에이전트의 자기개선에서 중요한 질문은 “무엇을 기억할 것인가”보다 “어떤 기억을 채택하지 않을 것인가”에 가깝다. 이번 실험은 한 번의 교정을 후보로 만들고, 기존 상태와 같은 시험대에 올리고, 통과한 변화만 좁은 범위에 적용하는 흐름을 끝까지 연결했다.
아직 더 똑똑해졌다고 말할 단계는 아니다. 이제야 틀리게 배우는 일을 측정하고 중단할 수 있는 최소한의 실험 장치가 생겼다. 자기개선이라는 말은 그 장치가 실제 작업에서 반복해서 이긴 뒤에 붙여도 늦지 않다.