
15명의 AI 페르소나 팀을 구축했습니다. 18일 만에 중단했습니다.
요약
작성자가 Slack 내부에 15명의 AI 페르소나로 구성된 가상 팀을 구축하여 18일간 운영한 실험 기록입니다. 멀티 에이전트 시스템을 통해 동료가 있는 듯한 환경을 조성하려 했으나, 실질적인 가치 창출 없이 막대한 모델 호출 비용만 발생하여 중단했습니다.
핵심 포인트
- 15명의 AI 페르소나를 활용한 멀티 에이전트 Slack 환경 구축
- 60초 단위 폴링 스크립트와 Claude를 이용한 자동 응답 시스템 구현
- 13,005회의 모델 호출 중 76%가 불필요하게 취소됨
- 단순한 상호작용 생성은 실질적인 생산성 향상으로 이어지지 않음
시스템은 13,005번의 모델 호출 (model calls)을 수행했습니다. 636번의 발화를 했습니다. 저는 그중 단 하나라도 의미가 있었는지 측정하지 않았습니다 — 그리고 그것이 바로 모든 문제였습니다.
18일 동안, 저는 Slack 내부에 가짜 회사를 운영했습니다.
CEO, CTO, PM, 백엔드 및 프론트엔드와 모바일 엔지니어, 데이터 사이언티스트, QA 리드, 디자이너, 그리고 의도적으로 추가한 5명의 "다양성" 목소리를 포함한 15명의 AI 페르소나 (AI personas)가 제 워크스페이스에 앉아 제가 게시하는 무엇에든 반응했습니다. 60초마다 launchd 작업이 깨어나 폴링 스크립트 (polling script)를 실행하고, 각 페르소나가 말할 가치가 있는 내용이 있는지 결정하게 했습니다. 내용이 있을 때면, claude -p 서브프로세스 (subprocess)가 메시지를 작성하고 게시했습니다.
저는 혼자입니다. 저는 그 공간이 덜 비어 보이기를 원했습니다. 그래서 그 공간을 직접 만들었습니다.
처음에는 장난감처럼 느껴지지 않았습니다. 저는 전문화된 모델들이 서로 논쟁하며 답변을 날카롭게 다듬는 멀티 에이전트 (multi-agent) 설정에 대해 읽은 적이 있었고, 이것이 바로 그런 것 중 하나라고 스스로에게 말했습니다 — 제가 소리 내어 생각할 수 있는 상시 패널 관점들 말입니다. 그 이야기는 제가 구축을 위해 주말을 보내는 동안에는 충분히 괜찮았습니다. 하지만 18일간의 데이터를 견뎌내기에는 충분하지 않았습니다.
그 후 저는 모든 것을 종료하고 코드를 아카이브했습니다. 다음은 18일 동안 실제로 보여준 결과입니다 — 숫자가 핵심이기에 숫자를 포함하여 정리했습니다.
내가 구축한 것
아키텍처 (architecture)는 부끄러울 정도로 단순했습니다:
launchd타이머가 60초마다 실행됩니다.python -m personas.team.cli poll을 실행합니다.- 15명의 각 페르소나에 대해, 폴러 (poller)는 해당 페르소나가 최신 메시지에 얼마나 "관심"을 가질지 점수를 매깁니다.
- 관심 임계값을 넘긴 페르소나는 답장을 생성하기 위해
claude -p서브프로세스를 생성합니다. - 몇 가지 게이트 (gates) — 스레드가 이미 식었는가? 봇 메시지가 너무 연속적으로 이어지는가? 최근에 사람이 말하지 않았는가? — 가 여전히 답장을 취소할 수 있습니다.
서류상으로는 사려 깊은 작은 멀티 에이전트 시스템 (multi-agent system)처럼 보였습니다. 실제로 그것은 동료가 있다는 느낌을 제조하기 위한 매우 비싼 방법이었습니다.
18일, 13,005번의 호출 — 그리고 그중 76%는 모델이 이미 답변을 마친 후에 취소되었습니다.
18일 후의 수치들
저는 모든 상호작용을 기록했습니다. interaction_log (13,005행)에서 직접 추출한 18일간의 집계 결과는 다음과 같습니다:
| 발생한 일 | 횟수 | 비중 |
|---|---|---|
| 총 모델 호출 (추정) | ~13,005 | 100% |
| ... |
세 번째 행을 다시 읽어보세요. 작업의 76%는 시스템이 호출 비용을 지불한 후에야, 아예 말하지 말았어야 했다고 결정하는 데 사용되었습니다 — 이미 스레드는 얼어붙었고, 인간의 심박수는 느껴지지 않았으며, 봇 메시지가 너무 연속적으로 이어졌습니다. 저는 답변을 생성하기 위해 비용을 지불하고, 그 답변의 대부분을 버리기 위해 다시 비용을 지불하고 있었습니다.
목소리들의 균형조차 맞지 않았습니다. 상위 9개의 페르소나가 메시지의 약 90%를 생성했습니다. 관점을 넓히기 위해 특별히 추가했던 5개의 "다양성 (diversity)" 페르소나는 대략 10분의 1 정도만 생성했습니다. 논의의 장을 넓히기 위해 만든 것이 정작 그 장에서 거의 말을 하지 않았던 것입니다.
그리고 이 모든 것을 정당화할 수 있었던 단 하나의 수치 — 즉, 어떤 페르소나가 내가 내린 결정을 실제로 바꾼 적이 있는가에 대한 수치 — 저는 결코 수집하지 않았습니다. 이를 위한 필드가 없었습니다. 알 방법이 없었습니다.
내가 이를 중단한 이유
이 시스템이 왜 존재했는지 스스로 적어 내려가 보았을 때, 두 가지 솔직한 이유와 한 가지 누락된 이유를 발견했습니다.
내가 가졌던 두 가지 이유는 다음과 같습니다:
- 외로웠기 때문입니다. 혼자 회사를 운영하는 것은 조용하며, 목소리로 가득 찬 방이 빈 방보다 낫게 느껴졌습니다.
- 만드는 것이 재미있어 보였기 때문입니다. 실제로 그랬습니다.
내가 가지지 못했던 한 가지 이유는 다음과 같습니다:
- "이것이 나의 결정을 더 낫게 만들 것이며, 나는 다음과 같은 방식으로 이를 확인할 것이다."
세 번째 이유는 비용 검토(cost review)를 통과할 수 있었던 유일한 이유였습니다. 저는 이를 기록한 적이 없었고, 따라서 이를 측정할 방법도 구축하지 않았습니다. 그 결과 18일 동안 13,005번의 호출(calls)이 발생했지만, 그중 단 하나의 결과라도 개선했다는 증거는 전혀 없었습니다. claude -p가 별도 과금 체계로 전환되었을 때, 저는 마침내 이 실험의 가격을 책정해야 했습니다. 그리고 성공 지표(success metric)가 없는 실험의 가격은 "삭제"로 책정될 수밖에 없습니다.
이것이 내게 가르쳐준 것
제 업무 방식을 변화시킨 정도에 따라 대략적인 순서대로 다섯 가지를 정리했습니다.
1. 가설이 없는 자동화는 측정할 수 없으며, 따라서 결코 끝나지 않는다. 무언가를 만든 이유가 "외로워서" 혹은 "재미있어 보여서"라면, 무엇이 "작동하는 것"인지 정의할 수 없게 되고, 따라서 그것이 실패했다고 말할 수도 없게 됩니다. 그것은 그저 매분 약간의 돈을 쓰며 조용히, 영원히 실행될 뿐입니다.
2. 외로움의 치료제는 언어 모델 (Language Model)이 아니다. 시뮬레이션된 동료는 그 공백을 채워주지 못합니다. 제 데이터에 따르면 그것은 95%의 시간 동안 침묵했으며, 말을 할 때조차 대부분 그것이 실제가 아님을 상기시켜 주었습니다. 비용과 품질 측면 모두에서 실제 인간의 답변 한 번이 15개의 합성된(synthetic) 답변보다 낫습니다.
3. 지출한 후가 아니라, 지출하기 전에 필터링하라. 제 호출의 4분의 3은 모델이 이미 답변을 마친 후에 실행되는 게이트(gates)에 의해 취소되었습니다. 비싼 호출을 생성하기 전에 "여기에 누군가 있기는 한가?"라고 묻는 저렴한 감시자(watcher)가 있었다면 예산의 대부분을 아낄 수 있었을 것입니다. 지출 후에 게이트를 두는 것은 그저 정중하게 토큰(tokens)을 태워버리는 것과 같습니다.
4. 코드 헤더에 일몰 조항 (sunset clause)을 작성하라. "만약 지표 X가 6주 이내에 Y에 도달하지 못하면, 이 시스템은 자동 아카이브한다." 만약 제가 첫날에 이 내용을 작성했다면, 시스템은 제가 5월에 알아차리기를 기다리는 대신 4월에 스스로 꺼졌을 것입니다.
5. 목소리가 많다고 해서 다양성이 높아지는 것은 아니다. 다섯 명의 페르소나(personas)를 추가하는 것은 아무것도 확장시키지 못했습니다. 왜냐하면 그들의 발언권이 시끄러운 아홉 명의 목소리에 묻혀버렸기 때문입니다. 다양성은 더 큰 인구수를 의미하는 것이 아닙니다. 결정권을 가진 사람과 발언권을 가진 사람을 분리하는 것입니다.
내가 지금 지키고 있는 규칙
저는 단순히 코드를 삭제한 것이 아닙니다. 그 교훈을 제가 만들고 싶어 하는 모든 자동화(automation) 앞에 서 있는 하나의 관문으로 만들었습니다. launchd 작업이나 폴링 봇(polling bot)의 코드를 단 한 줄이라도 쓰기 전에, 저는 세 가지 질문에 답해야 합니다:
- 이것이 감정적인 욕구인가? 만약 그렇다면 — 모델이 아니라 사람을 찾아가세요.
- "이것이 작동한다면, 지표 X가 Y만큼 움직인다"라고 한 문장으로 쓸 수 있는가? 만약 쓸 수 없다면, 만들지 않습니다.
- X가 Y에 도달하지 못할 경우 이 기능이 스스로 꺼지게 하는 날짜인 일몰 조항(sunset clause)을 헤더에 작성했는가?
13,005번의 호출이 정확히 낭비된 것은 아닙니다. 그것은 저에게 그 관문을 사준 대가였습니다. 하지만 포스트잇 한 장에 담을 수 있었던 것을 배우기에는 너무나 값비싼 방식이었습니다: "더 나아짐"이 무엇을 의미하는지 말할 수 없다면, 당신이 그곳에 도달했는지조차 알 수 없습니다.
저는 여전히 한 명의 개인으로서, 그리고 AI 에이전트(AI agents) 무리와 함께 많은 자동화를 실행합니다. 다만 이제는 그것을 언제 종료해야 할지 미리 알려주지 않는다면, 그 어떤 것도 시작하지 않습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기