LLM 기반 AI 에이전트를 실제로 만들어보면,
어느 순간부터 항상 비슷한 벽에 부딪히게 됩니다.
- 분명히 모델은 똑똑해졌는데
- 실행은 계속 불안정하고
- 왜 그렇게 동작했는지는 설명할 수 없고
- 같은 입력에서도 결과가 달라집니다
그래서 보통은 이렇게 결론을 내립니다.
“모델이 아직 부족하구나. 더 큰 모델을 써보자.”
하지만 실제로 여러 시행착오를 거치며 느낀 건,
문제의 핵심은 모델의 지능이 아니라
에이전트가 동작하는 ‘세계(World)’가 설계되지 않았다는 점이었습니다.
문제의 본질: 세계가 모델 머릿속에만 있다
많은 에이전트 아키텍처에서
상태, 규칙, 행동 가능성 같은 것들이
모두 암묵적으로 모델의 추론 안에 들어가 있습니다.
즉,
- 무엇이 가능한지
- 왜 어떤 행동이 실패했는지
- 상태가 언제 바뀌었는지
이 모든 걸 모델이 “기억하고 추론해주길” 기대합니다.
이 구조에서는
아무리 모델이 좋아져도
디버깅, 재현성, 설명 가능성을 확보하기 어렵습니다.
관점 전환: World-Centric Architecture
그래서 이 글에서는 관점을 뒤집어,
모델 중심(Intelligence-Centric) 이 아니라
세계 중심(World-Centric) 으로 에이전트를 설계하는 방식을 제안합니다.
핵심 아이디어는 단순합니다.
- 세계는 모델 밖에 명시적으로 존재해야 하고
- 상태는 Snapshot으로 고정되며
- 상태 변경은 Patch/Apply라는 단 하나의 경로로만 일어나고
- “이 행동이 가능한가?”는 구조적으로 계산되어야 합니다
그리고 가장 중요한 원칙은 이 문장입니다.
지능은 실행하지 않고, 제안만 해야 한다
모델은 “무엇을 해보고 싶은지”를 제안할 수는 있지만,
실제로 상태를 바꾸는 권한은 갖지 않습니다.
왜 이게 중요한가?
이 구조에서는 흥미로운 일이 벌어집니다.
- 불가능한 행동은 아예 실행 단계에 도달하지 못하고
- 실패는 “모델이 멍청해서”가 아니라 구조적 이유로 설명되며
- 심지어 행동 선택이 랜덤이어도 시스템은 깨지지 않습니다
왜냐하면
정합성(correctness)은 모델의 추론이 아니라
세계의 규칙과 상태 모델이 보장하기 때문입니다.
이건 연구용 데모보다
“운영 가능한 시스템”에 가까운 접근이라고 생각합니다.
이 글은 무엇이 아닌가
- 새로운 에이전트 프레임워크 튜토리얼 ❌
- 모델 성능 비교 글 ❌
- 프롬프트 엔지니어링 이야기 ❌
대신,
“우리는 왜 AI 에이전트를 이렇게 불안정하게 만들고 있는가?”
라는 질문을 던지고 싶었습니다.
이 접근이
기존의 상태 머신, 워크플로우 엔진, DSL, 혹은 PL 관점에서
어떻게 보이는지도 궁금합니다.
“결국 이건 무엇으로 환원되는가?”
라는 관점에서의 의견이나 비판도 환영합니다.