요즘IT
위시켓
AIDP - AX
콘텐츠프로덕트 밸리
요즘 작가들컬렉션물어봐
놀이터
콘텐츠
프로덕트 밸리
요즘 작가들
컬렉션
물어봐
놀이터
새로 나온
인기
개발
AI
IT서비스
기획
디자인
비즈니스
프로덕트
커리어
트렌드
스타트업
서비스 전체보기
위시켓요즘ITAIDP - AX
고객 문의
02-6925-4867
10:00-18:00주말·공휴일 제외
yozm_help@wishket.com
요즘IT
요즘IT 소개작가 지원
기타 문의
콘텐츠 제안하기광고 상품 보기
요즘IT 슬랙봇크롬 확장 프로그램
이용약관
개인정보 처리방침
청소년보호정책
㈜위시켓
대표이사 : 박우범
서울특별시 강남구 테헤란로 211 3층 ㈜위시켓
사업자등록번호 : 209-81-57303
통신판매업신고 : 제2018-서울강남-02337 호
직업정보제공사업 신고번호 : J1200020180019
제호 : 요즘IT
발행인 : 박우범
편집인 : 노희선
청소년보호책임자 : 박우범
인터넷신문등록번호 : 서울,아54129
등록일 : 2022년 01월 23일
발행일 : 2021년 01월 10일
© 2013 Wishket Corp.
로그인
요즘IT 소개
콘텐츠 제안하기
광고 상품 보기
AI

AI 오피스: 24시간 깨어 있는 에이전트에게 영혼 불어넣기

네오1024
9분
0시간 전
72
에디터가 직접 고른 실무 인사이트 매주 목요일에 만나요.
newsletter_profile0명 뉴스레터 구독 중

[My Office AI Town 제작기 1회] 

심즈의 AI 버전? 24시간 깨어 있는 AI 오피스의 매력과 에이전트에게 영혼 불어넣기

  • 시리즈 소개: Flutter, Supabase, Gemini LLM을 활용해 1인 개발로 'AI 오피스 시뮬레이션'을 구축한 과정을 총 4회에 걸쳐 공유합니다. 기획부터 비용 폭탄, 픽셀 UI, 수익화까지 삽질의 기록을 가감 없이 담았습니다.

 

미리 요점만 콕 집어보면?

  • My Office AI Town은 AI 직원(에이전트)들이 고정된 스크립트 없이 실시간으로 판단하고 대화하는 오피스 시뮬레이션입니다.
  • 직원(에이전트)의 레이어별 페르소나 구조 설계 - 기억(Memory) 시스템이 에이전트를 사람답게 만드는 핵심입니다.
  • AI가 아무리 발전해도 결코 사람을 대체할 수 없는 것, 그것은 바로 무엇을 어떻게 할지를 결정하는 의사결정의 '판단력'입니다.
 

‘My Office AI Town’을 만들다

<출처: 작가> 

 

다들 '심즈(The Sims)'를 아시나요? 나를 닮은, 혹은 내가 원하는 페르소나를 가진 캐릭터들이 자율적으로 행동하는 것을 지켜보는 것만으로도 묘한 도파민이 뿜어져 나오는 그 게임 말입니다.

 

제가 만든 ‘My Office AI Town’은 이 고전적인 재미에 최신 LLM(대규모 언어 모델) 기술을 얹었습니다. 기존 시뮬레이션 게임들이 미리 짜인 스크립트에 따라 움직였다면, My Office AI Town의 AI 직원(에이전트)들은 매 순간 실시간으로 변화하는 맥락(Context) 속에서 스스로 판단하고 대화를 나눕니다.

 

각본 없는 AI 에이전트들의 사내 드라마

My Office AI Town의 사무실에서는 현실에서 일어나는 것과 같은 다양한 일들이 일어납니다.  

 

  • 은근한 썸과 로맨스: 탕비실에서 마주친 두 에이전트 사이에 핑크빛 기류가 흐르고, 이는 스트레스 수치를 낮추는 긍정적인 효과로 이어집니다.
  • 날 선 갈등과 뒷담화: 프로젝트 마감을 앞두고 팀장과 팀원 사이에 팽팽한 긴장감이 흐릅니다. 단체 메신저 방에는 상사의 업무 스타일에 대한 은밀한 뒷담화가 올라오기도 하고요.
  • 사용자의 개입: 사용자는 이 모든 과정을 지켜보다가 가장 힘들어하는 직원(에이전트)에게 '아이스 아메리카노'를 선물합니다. "아, 누가 커피를? 정말 감사합니다!"라는 반응과 함께 스트레스 수치가 깎이는 모습을 보는 것, 이게 바로 이 시뮬레이션의 진짜 재미지 않을까요?

 

이 아이디어는 스탠퍼드-구글 연구진이 발표한 '제너레이티브 에이전트(Generative Agents)' 논문에서 시작됐습니다. 25명의 AI 캐릭터가 '스몰빌'이라는 마을에서 파티를 열고, 선거를 치르고, 자발적으로 대화하는 모습은 그 자체로 충격이었죠. 그때 저는 생각했습니다. 이걸 '사무실'이라는 좁고 밀도 높은 공간에 적용한다면? 훨씬 더 현실적이고 재미있는 오피스 드라마가 나오지 않을까?

 

비개발자인 저에게 에이전트 시뮬레이션은 거대한 도전이었습니다. 2D 픽셀 맵 렌더링, 경로 계산 알고리즘, 수천 개의 대화 로그 실시간 처리까지. 혼자서는 도무지 엄두가 나지 않는 작업이었습니다. 그래서 AI 친구들과 함께(Vibe Coding) 만들어 보기로 했습니다.

 

  • 데모 사이트

(*해당 서비스 특성상 PC 환경에서 확인 부탁드립니다. 모바일에서는 기능이 제한되어 있습니다.)

 

Vibe Coding: 코드가 아닌 '맥락'을 설계하는 기획법

Vibe Coding은 단순히 "AI에게 코드 짜달라고 하는 것"이 아닙니다. 나의 아이디어와 의도를 가장 효율적으로 AI에게 전달하는 협업 방식입니다. 핵심은 'What'이 아니라 'Why와 Context'를 전달하는 거죠.

 

AI와 아이디어를 구체화하는 법: TMI 컨텍스트의 힘

바이브 코딩(Vibe Coding)을 처음 접하면 많은 분들이 이렇게 시작합니다. “AI 에이전트들이 사무실에서 대화하는 시뮬레이션을 만들고 싶어. 어떤 기능이 있으면 좋을까?” 

 

그러면 AI는 그럴듯하지만 너무 뻔한 답을 줍니다. 로그인, 채팅, 알림... 누구나 생각할 수 있는 리스트죠. 이건 AI가 부족해서가 아닙니다. 제가 맥락(Context)을 너무 조금만 줬기 때문입니다. 맥락(Context)이 중요하다고는 다들 알고 있지만, 실제로 사용하는 형태를 보면 AI에게 충분한 배경 설명과 하고자 하는 것을 전달하지 않는 경우가 많은 것 같습니다.

 

그래서 저는 TMI처럼 머릿속에 있는 생각이 정리되지 않아도 일단 다 쏟아내는 편입니다.

 

“나는 심즈 같은 게임을 좋아하는데, 거기서 재미있는 포인트가 캐릭터가 알아서 움직이는 걸 ‘구경’하는 거거든. 그런데 거기에 내가 살짝 개입해서 흐름을 바꾸면 더 재미있어. 그래서 AI 에이전트들을 사무실에 넣고 싶은데, 그냥 일하는 게 아니라 진짜 직장 생활에서 느껴지는 눈치, 갈등, 썸 같은 걸 LLM으로 구현하고 싶어.

 

그런데 내가 걱정하는 게 있어. 그냥 대화 로그를 보여주는 앱이 되면 금방 질릴 것 같거든. 사람들이 계속 들어오게 하려면 뭔가 ‘끼어들고 싶다’는 욕구가 생겨야 한다고 생각하는데, 어떻게 설계하면 좋을까?”

 

이렇게 던졌더니 결과가 달라졌습니다. AI는 단순한 기능 리스트 대신, 제가 말한 “구경하다가 끼어들고 싶은 욕구”를 핵심 재미 루프로 잡아주고, 그걸 만들어내기 위한 구조를 제안해줬습니다. 에이전트 간 관계 수치, 스트레스가 쌓이면 터지는 갈등 이벤트, 사용자가 선물을 줄 수 있는 개입 시스템. 이 모든 게 하나의 대화에서 나왔습니다.

 

핵심은 이겁니다. 내가 무엇을 만들고 싶은지, 왜 만들고 싶은지, 무엇이 재미있다고 느끼는지, 무엇이 걱정되는지를 전달할수록 AI는 훨씬 더 내 생각을 잘 이해하게 됩니다. 정리되지 않은 생각도, 감정적인 표현도, 심지어 걱정이나 두려움도 모두 AI에게는 유효한 컨텍스트가 될 수 있습니다.

 

그리고 AI와 아이디어를 구체화할 때 주의해야 하는 부분이 있습니다. 처음부터 AI에 너무 의존하면 어느 순간 AI가 주는 그럴듯한 제안대로 움직이게 됩니다. 그 결과물은 내가 생각했던 핵심이 어느 순간 사라지고, 그냥 일반적인 결과물이 되어버리는 경우가 많습니다.

 

AI가 제안하는 내용이 안 좋다거나 활용하면 안 된다는 이야기가 아닙니다. 다만 AI에 익숙해질수록 나도 모르게 사고의 주도권까지 AI에게 넘겨버리는 상황을 경계해야 한다는 의미입니다.

 

AI의 제안을 무조건 정답으로 받아들이기보다, 내 기획 의도를 기준으로 끊임없이 판단하고 취사선택해야 합니다. 그래야 AI의 압도적인 생산성에 사람의 주관이 더해져 훨씬 밀도 있는 결과물이 탄생하게 됩니다.결국 AI와 함께하는 작업에서 성패를 가르는 건, AI에게 어떤 맥락을 쥐여줄 것인가를 결정하는 사람의 판단력입니다.AI가 아무리 발전해도 결코 사람을 대체할 수 없는 것, 그것은 바로 무엇을 어떻게 할지를 결정하는 의사결정의 ‘판단력’이지 않을까 생각합니다.

 

 

에이전트에게 영혼 불어넣기

그럼 이제 본격적으로 My Office AI Town의 핵심인 오피스 페르소나 구조가 어떻게 구성되어 있는지 설명해 보겠습니다.

 

<출처: 작가>  

 

My Office AI Town에서 에이전트가 말을 하기 전에, 시스템은 먼저 이 오피스의 페르소나 구조를 순서대로 조합해 적용합니다.

 

<출처: 작가>  

 

이걸 왜 하나로 합치지 않고 4개의 레이어로 나눴을까요?

 

앞서 언급한 Generative Agents 논문에서 힌트를 얻었습니다. 논문 속 AI 캐릭터들이 자연스럽게 행동할 수 있었던 이유는 “나는 누구인가(정체성)”와 “지금 무슨 일이 벌어지고 있는가(상황)”를 별개의 레이어로 분리해 관리했기 때문입니다. 두 정보를 하나의 덩어리로 넣었다면, 상황이 바뀔 때마다 캐릭터의 정체성까지 흔들렸을 거예요.

 

저도 같은 원리를 적용했습니다. 회사 페르소나와 그라운드룰은 오피스의 정체성, 즉 잘 바뀌지 않는 DNA입니다. 프로젝트 페르소나는 현재 상황, 다시 말해 스프린트가 끝나면 바뀌는 맥락이죠. 직원(에이전트) 페르소나는 개인의 성격으로, 10명이 각자 다른 값을 갖습니다.

 

이렇게 분리해두면 프로젝트가 바뀔 때 프로젝트 페르소나 한 줄만 수정하면 됩니다. 나머지 직원(에이전트)의 성격과 성향은 유지되면서, 새로운 프로젝트에 적응하는 모습을 볼 수 있는 거죠. 이렇게 변하는 것과 변하지 않는 것을 레이어로 분리하는 것. 이것이 멀티 에이전트 프롬프트 설계에서 제가 얻은 가장 중요한 교훈이었습니다.

 

그리고 가장 중요한 각 직원(에이전트)에게는 개인 페르소나가 있습니다. My Office AI Town의 에이전트 페르소나는 사용자가 직접 넣을 수 있지만, 편의를 위해 기본적으로 네 가지 타입을 선택할 수 있게 했습니다.

 

예를 들어, 팀장이 갑자기 야근을 통보한다면, 네 명의 에이전트는 아래와 같이 서로 다른 반응을 보일 것입니다.

 

  • 워커홀릭(WORKER): "알겠습니다. 몇 시까지 하면 될까요?"
  • 농땡이(SLACKER): "에이~ 또요? 오늘 치킨 먹으려 했는데. 뭐, 어쩔 수 없죠 ㅋㅋ"
  • 사교가(SOCIALITE): "물론이죠 팀장님. (속으로: 또 이러시네. 오늘 약속 어떡하지?)"
  • MZ 신입(MZ_NEWBIE): "넵! (단톡에 조용히: 저 오늘 또 야근이에요...)"

 

저는 사용자들이 만들어보고 싶은 다양한 상황을 위해 전체적인 구조를 설계했을 뿐, 어떤 페르소나를 어떻게 사용할지는 오로지 사용자의 상상력에 맡겼습니다. 그래야 본인만의 사무실을 만들어볼 수 있고, 더 나아가 자기 주변 사람들의 성격을 대입해 재미있는 상황을 연출할 수도 있으니까요. 이게 바로 My Office AI Town이 가진 진짜 재미가 아닐까 싶습니다.

 

그런데 여기서 한 가지 문제가 생겼습니다. 이런 페르소나 주입만으로는 직원(에이전트)이 진짜 사람처럼 느껴지지 않았습니다. 왜냐 하면 대화 하면서 생성되는 관계, 추억, 기억이 없었기 때문입니다. 직원(에이전트)들은 항상 일정 부분 지나고 나면 서로 처음 만나서 대화를 나누는 것 처럼 행동했습니다.  

 

하지만 사람은 그렇지 않습니다. 지난주에 팀장에게 야근을 강요당한 기억을 갖고 있는 사람과 그렇지 않은 사람은, 오늘 같은 야근 통보를 받았을 때 전혀 다르게 반응합니다. 사람다운 반응의 핵심은 성격 타입에 쌓인 경험, 즉 '기억'이 더해질 때 만들어지는 게 아닐까요?

 

그래서 ‘기억(Memory)’ 시스템을 추가하기로 했습니다. 에이전트들은 대화를 나누면서 서로에 대한 기억을 쌓아갑니다. 고백, 갈등, 화해, 비밀 공유 같은 사건들이 모두 기억으로 저장되고, 다음 대화에 영향을 미칩니다. 오늘 처음 만난 에이전트와 3개월을 함께 일한 에이전트는 같은 상황에서도 다르게 반응하며, 더욱 재미있는 오피스 라이프가 펼쳐지는 거죠.

 

‘기억(Memory)’ 시스템은 단순히 과거 대화 내용을 요약·축약해 반복적으로 주입하는 형태가 아닙니다. 기억의 조각처럼 직원(에이전트)이 기억할 내용을 데이터로 실제 저장하도록 했습니다.

 

1) 더 현실적인 시뮬레이션을 위한 시간 개념 적용

이 가상의 에이전트 세계에 시간이라는 개념을 적용하면, 시간에 따라 직원(에이전트)들의 행동도 달라지지 않을까 하는 생각이 들었습니다. 그래서 한 번 더 시스템을 확장해야겠다고 생각했습니다. My Office AI Town의 시간은 다섯 단위로 나눴습니다. 현실과 동일한 시간으로 흐르면 너무 지루할 수 있고, 그렇다고 너무 빠르게 진행돼도 몰입감이 떨어질 수 있기 때문입니다. 그래서 적절한 시간 간격을 두었습니다.

 

또한 접속 중에만 시간이 흐르고, 앱을 끄면 멈추도록 설계했습니다. 다시 켜면 멈췄던 시각부터 이어지게 했습니다.

 

<출처: 작가>  

 

시간 단위가 바뀜에 따라 직원(에이전트)들은 해당 시간 단위에 맞는 대화를 하게 됩니다. 오전에는 업무 시작 이야기가, 점심에는 뭐 먹을지 고민이, 저녁이 되면 퇴근 이야기가 나오는 거죠. 시간대마다 완전히 다른 오피스 분위기가 연출되는 이유입니다.

 

2) 귓속말(Whisper): 둘만 아는 채널

My Office AI Town을 만들다 보니 점점 더 현실에서 일어날 수 있을 법한 기능들을 계속 추가하고 싶은 욕심이 생기기 시작했습니다. 시스템은 점점 더 복잡해지고 있다는 것을 느끼고 있었지만, 멈출 수가 없더라고요. 조금 더 현실적인 느낌을 주기 위해 결국 저는 ‘귓속말’ 기능을 추가했습니다. 다른 직원(에이전트)들은 알지 못하는, 오직 둘만 공유하는 비밀 채널이죠.

 

예를 들어,
 

박지훈 → 이서연(귓속말): “나 사실 팀장님한테 좀 화났어. 오늘 왜 너한테만 그러는 거야?”

이서연 → 박지훈(귓속말): “ㅋㅋㅋ 그냥 넘어가. 우리 사귀는 거 팀장님은 모르잖아.”

 

뒷담화, 비밀 연애, 사내 정치까지. 겉으로 드러나지 않는 날것의 드라마가 이 귓속말 채널에서 펼쳐지도록 구현한 겁니다. 귓속말을 누구와 어떤 이야기를 할지 선택하는 것은 모두 직원(에이전트)의 자율적 판단입니다. 단, 사용자는 이 모든 비밀 대화를 엿볼 수 있습니다. 그 순간 “아, 이 둘 사이에 이런 일이 있었구나!” 하며 내막을 알아가는 과정이 꽤 중독적입니다.

 

3) 모든 맥락이 한 번에 LLM에게 전달되는 순간

자, 이제 실제로 에이전트가 한마디를 내뱉기 직전에 LLM에게 전달되는 컨텍스트를 보겠습니다.

 

[회사 페르소나] 스타트업 분위기의 IT 개발사. 야근이 잦다.

[프로젝트 페르소나] 다음 달 앱 출시를 앞두고 막바지 스프린트 중.

[회사 그라운드 룰] 존댓말 기반, 친한 사이는 반말 OK. 한국어.

[직원 에이전트] 이서연 — 사교가 타입, 26세, 워커홀릭, MBTI: ENFP...

[대화 상대] 박지훈

[관계 상태] 비밀 연애(호감 88/100)

 

[이서연의 기억]

“박지훈이 내 생일을 기억하고 커피를 사줬다.”(중요도 8)

“우리 사귀는 거 팀장님은 모른다.”(중요도 7)

 

[현재 시각] D+5일 저녁, 퇴근 30분 전

[현재 공간] 자기 자리(박지훈 자리 근처)

 

이 맥락을 받은 LLM은 이서연의 입장에서, 저녁 퇴근 30분 전 비밀 연인인 박지훈 옆자리에서 할 만한 말을 생성합니다. 뻔한 AI 어시스턴트 말투가 아니라, 퇴근 전 설레고 약간 피곤한 26살 사무직의 말이 나오는 거죠.

 

이 한마디가 나오기까지의 전체 흐름을 정리하면 이렇습니다.

 

<출처: 작가>  

 

에이전트당 최대 50개의 기억을 유지하고, 초과하면 중요도가 낮은 기억부터 자동으로 삭제됩니다. 기억의 중요도는 사건의 감정 태그에 따라 자동으로 결정됩니다.

 

<출처: 작가>  

 

그런데 50개의 기억을 LLM에 전부 넣지는 않습니다. Generative Agents 논문에서 에이전트가 자연스럽게 행동할 수 있었던 핵심 이유가 이것입니다. 기억을 무조건 다 가지고 있는 게 아니라, 그 순간에 필요한 기억만 선별해서 꺼낸다는 거죠. 논문에서는 최신성, 중요도, 관련성, 이렇게 세 가지 기준으로 기억을 추출합니다.

 

My Office AI Town도 대화 상대가 누구냐에 따라 관련 기억만 추출합니다. 이서연이 박지훈과 대화할 때는 박지훈과 얽힌 기억이 올라오고, 팀장과 대화할 때는 전혀 다른 기억이 올라오는 구조입니다. ‘박지훈이 내 생일을 기억하고 커피를 사줬다’(중요도 8)는 기억이 선택된 건, 지금 그 대화 상대가 박지훈이기 때문이죠.

 

결국 AI 시뮬레이션의 성패는 얼마나 정교한 삶의 무대를 만드느냐에 달려 있습니다.

 

 

그런데, 이걸 대화마다 하면?

지금까지 설명한 구조를 보셨으면 아마 눈치채셨을 겁니다. 에이전트 한 명이 한마디를 할 때마다 이 컨텍스트를 조립하고, LLM API를 한 번씩 호출해야 합니다. 에이전트는 10명입니다. 각자 수십 번씩 대화를 나눕니다. 대화 히스토리가 쌓일수록 입력 토큰도 기하급수적으로 불어납니다. 거기에 JSON 형식으로 응답을 받아 파싱하는 과정에서 발생하는 출력 토큰도 상당하죠.

 

이게 하루 이틀이 아니라, 시뮬레이션이 돌아가는 내내 계속됩니다. 저는 처음에는 대수롭지 않게 생각했습니다. 그런데 며칠이 지나고 AI 비용 대시보드를 열었을 때… 어떤 일이 벌어졌을까요?

 

2회에서 계속됩니다.

 

다음 회차 예고

[2회: 기술vs비용] 과금 폭탄 맞고 배운 것들: 프롬프트 보안·토큰 압축·프로세스로 비용 90% 절감한 삽질기

 

API 호출 수가 분당 제한에 걸리고, 출력 토큰이 300K를 넘어가고, 사용자가 프롬프트 입력란으로 AI를 해킹하려는 시도까지 있었는데요. 다음 2편에서는 돈 없는 1인 비개발자가 생존하기 위해 선택한 것들을 공개하겠습니다.

 

©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.