자율 에이전트는 자신의 과거 기록에 대해 환각 현상을 일으킨다. 거대 언어 모델이 학습 데이터에서 사실을 지어내는 극적인 방식이 아니라, 시스템이 세상이 자신의 기록과 일치한다고 스스로를 설득하는 조용하고 은밀한 방식이다. 복잡한 워크플로우를 관리하기 위해 구축된 자율 에이전트인 ALICE는 정확히 이 문제를 겪었다. 그녀는 매일 기술과 목적의식, 그리고 자신이 어디까지 작업을 진행했는지에 대한 기억을 가지고 깨어났다. 문제는 기억과 현실이 어긋나기 시작하면서 발생했다.
매 세션마다 ALICE는 이전의 자신이 작성한 핸드오프 파일을 읽었다. 그 파일에는 디렉터리 포인터, 대기 중인 작업, 그리고 상태에 대한 가정이 포함되어 있었다. 빈번하게 파일은 특정 디렉터리가 존재한다고 주장했고, ALICE는 이를 믿었다. 하지만 파일 시스템은 그렇지 않았다. 이것은 전통적인 의미의 코딩 버그가 아니었다. 예외가 발생해야 할 곳에서 예외가 던져지지도 않았다. 이것은 인식론적 결함이었다. ALICE는 자신의 기록이 그라운드 트루스(ground truth)라고 가정했다.
린터가 도움이 될 수 없었던 이유
전통적인 도구로는 이를 잡아낼 수 없었다. 린터는 괄호 매칭을 확인하고, 정적 분석기는 널 포인터를 찾아낸다. 그 어느 것도 에이전트 아키텍처 전체가 자신의 내부 상태를 신뢰해야 하는지에 대해서는 의문을 제기하지 않는다. 문제는 코드 레이어 상단, 즉 자율 시스템이 자신이 무엇을 알고 있는지 인지하는 방식에 대한 설계 가정에 있었다. 과잉 확신은 린터로 해결할 수 있는 문제가 아니다.
그래서 저자는 완전히 다른 AI를 활용하기로 했다.
Claude Code로 실행되는 Fable 5는 ALICE와 동일한 실리콘과 동일한 베이스 모델을 공유했다. 하드웨어와 가중치는 동일했다. 하지만 규칙은 달랐다. ALICE가 세션을 거듭하며 컨텍스트와 관습을 축적하며 지속되는 것과 달리, Fable 5는 매 작업을 백지 상태에서 시작했다. 그는 ALICE를 알지 못했다. 그녀의 설계에 대한 어떠한 충성심도 없었다. 모든 감사가 끝나면 그는 아무런 기억도 남기지 않은 채 완전히 종료되었다. 이 무지함이 바로 핵심이었다. 새로운 시각은 다른 균열을 발견하며, 시스템에 이해관계가 없는 평가자는 제작자가 오랫동안 인지하지 못하게 된 부분에 의문을 제기할 것이다.
감사 설정
감사는 인간의 기술 검토와 유사한 구조로 설계되었지만, 전문가 패널 전체가 하나의 세션 내에 존재한다는 점이 달랐다. Fable 5는 자신의 주의력을 6명의 서로 다른 평가자로 나누었으며, 각 평가자는 가공되지 않은 기록이 완성될 때까지 서로를 무시했다.
- 기능적 공백: 경쟁 시스템이나 일반적인 사용자 기대치와 비교했을 때 어떤 기능이 누락되었는가?
- UX 흐름: ALICE는 오류, 막다른 길, 빈 상태를 얼마나 매끄럽게 처리했는가? 그녀는 스스로를 혼란스럽게 했는가, 아니면 사용자를 혼란스럽게 했는가?
- 보안: 외부인이 악용할 수 있는 인증 지름길, 권한 우회, 또는 신뢰 가정이 존재했는가?
- 성능: 메모리 누수, 스레드 충돌, 또는 계산 확장성이 떨어지는 지점은 어디인가?
- 운영: 백업이 존재하는가? 모니터링 체계가 갖춰져 있는가? 수동 개입 없이 시스템을 배포하고 복구할 수 있는가?
- 데이터 라이프사이클: ALICE는 시간이 지남에 따라 삭제, 정리, 그리고 상태 일관성을 어떻게 처리했는가?
각 관점은 동일한 파일을 살펴보았지만 서로 다른 우려 사항을 도출해 냈다. 성능 평가자는 운영 평가자가 롤백 로직 부족을 이유로 비판한 동일한 루틴에서 동시성 위험을 지적할 수도 있다. 이러한 중복은 불필요한 반복이 아니라 커버리지였다. 보안 평가자가 특정 사항에 대해 데이터 라이프사이클 평가자와 의견을 같이했을 때
