본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 20. 07:02

당신의 AI 에이전트가 고장 난 것이 아닙니다. 회사의 진실(Truth)이 문제인 것입니다.

요약

AI 에이전트의 오류는 모델 성능의 문제가 아니라, 기업 내 분산된 데이터 간의 불일치로 인한 '인식론적 붕괴'에서 비롯됩니다. 에이전트가 올바른 판단을 내리려면 개별 시스템의 권위를 넘어 데이터 간의 마찰을 감지할 수 있는 설계가 필요합니다.

핵심 포인트

  • 에이전트 오류의 근본 원인은 모델 성능이 아닌 데이터 불일치에 있음
  • ERP, 은행, 슬랙 등 각 시스템이 가진 정보의 파편화 문제
  • 인식론적 붕괴(Epistemic Collapse): 신뢰할 수 있는 단일 진실 공급원이 없는 상태
  • 에이전트 설계 시 데이터 간의 마찰과 맥락을 감지하는 능력이 중요함

AI 에이전트에게는 단 하나의 임무가 있었습니다. 승인된 공급업체의 송장(Invoice)을 결제하여 재무 팀이 수동으로 업무를 처리하는 일을 멈추게 하는 것이었습니다.

어느 화요일 아침, 에이전트는 화물 공급업체의 송장 #4471(Ksh48,000)을 가져왔습니다. 이 송장은 회사의 ERP 내에 **Approved(승인됨)**라고 찍혀 있었고, 유효한 구매 주문(Purchase Order)과 깔끔하게 매칭되었습니다. 에이전트는 확인하라고 지시받은 항목들을 점검했습니다. 모든 항목이 통과되었습니다. 에이전트는 송장을 결제했습니다.

하지만 그 송장은 이미 결제된 상태였습니다. 지난 목요일에 말이죠. 재무 팀의 팀원에 의해서 말입니다.

그날 아침 회사의 시스템들이 믿고 있었던 정보는 다음과 같았으며, 그중 어느 것도 틀리지 않았습니다.

  • ERP는 다음과 같이 말했습니다: 승인됨. 미결제 상태. 은행 활동 내역을 가져오는 조정(Reconciliation) 작업이 밤사이에 실행되어야 했으나, 어젯밤에 아무런 알림 없이 실패했습니다. 따라서 ERP가 바라보는 세상의 모습은 단순히 4일 전의 낡은 정보였습니다.
  • **은행 피드(Bank feed)**는 다음과 같이 말했습니다: 결제 완료. 지난 목요일. 이것은 맞았습니다. 아무도 ERP에 이 사실을 알려주지 않았습니다.
  • Slack 스레드에는 다음과 같은 내용이 있었습니다: "이 공급업체에 대한 모든 결제를 보류하세요. 지난 분기에 이중 청구를 했으니, 제가 그쪽 AP(Accounts Payable) 팀과 해결 중입니다." 매입 채무(Accounts-payable) 팀장이 3일 전에 올린 글이었습니다. 그녀의 머릿속에서는 해결되었지만, 다른 어디에서도 해결되지 않은 상태였습니다.
  • 공급업체의 자체 이메일에는 다음과 같이 적혀 있었습니다: "결제 잘 받았습니다, 감사합니다!" 물론 목요일에 이루어진 결제를 의미하는 것이었습니다. 에이전트의 이메일 읽기 기능이 그날 아침 이 메일을 확인했지만, 이메일의 우선순위가 ERP보다 낮았고 두 정보가 서로 충돌했기 때문에 일단 제쳐두었습니다.

모든 시스템은 내부적으로 일관성이 있었습니다. 모든 시스템은 _무언가_에 대해서는 권위를 가지고 있었습니다. 하지만 실제로 가장 중요한 유일한 질문, 즉 **"송장 #4471이 결제되었는가?"**에 답할 수 있는 시스템은 그 어디에도 없었습니다.

사람 직원이라면 거의 확실하게 이를 잡아냈을 것입니다. 직원이 모델보다 더 똑똑해서가 아닙니다. 직원은 '마찰(friction)'을 느꼈을 것이기 때문입니다. 수표를 발행했던 것을 어렴풋이 기억해 냈을 수도 있고, 그날 아침 슬랙(Slack) 메시지를 지나치며 망설였을 수도 있습니다. 혹은 48,000달러를 송금하기 전에 누군가에게 확인 메시지를 보내는 반사적인 행동을 했을 것입니다. 조용히 서로 불일치하는 시스템들을 조정하는 일은 운영 담당자들이 실제로 하루 종일 하는 일의 대부분이며, 너무나 당연한 일이라 아무도 이를 '업무'라는 항목으로 분류하지 않습니다. 그것은 그저 판단(judgment)일 뿐입니다.

에이전트에게는 느낄 수 있는 마찰이 없었습니다. 에이전트는 가장 우선순위가 높은 시스템을 읽고, '승인됨, 미결제' 상태를 확인한 뒤, 기계적인 속도로 아무런 멈춤 없이, 제2의 출처 확인도 없이, 무언가 잘못되었다는 본능도 없이 행동했습니다.

에이전트는 고장 난 것이 아니었습니다. 에이전트는 에이전트에게 줄 단 하나의 신뢰할 수 있는 답변이 없는 회사를 상대로, 설계된 대로 정확하게 작동했을 뿐입니다.

이것은 거의 아무도 제대로 명명하지 못하는 실패입니다. 저는 이것을 **인식론적 붕괴 (epistemic collapse)**라고 부릅니다.

우리는 에이전트가 결코 고장 난 부분이 아님에도 불구하고, 더 나은 모델, 더 나은 프롬프트 (prompt), 더 나은 검색 (retrieval), 더 엄격한 가드레일 (guardrails)을 통해 에이전트를 개선하려고 계속 시도합니다. 고장 난 부분은 그 아래에 있습니다. 기업들은 흩어진 데이터를 하나의 신뢰할 수 있는 답변으로 변환하는 계층을 가지고 있지 않습니다. 기업들은 ERP, 슬랙 (Slack) 워크스페이스, 은행 피드, 편지함, 스프레드시트를 가지고 있으며, 이들은 각각 진실의 파편을 보유하고 있지만 서로 일치하지도 않고, 같은 시간을 공유하지도 않습니다. 이 모든 난장판을 하루 종일, 영원히, 조용히 조정해 주는 얇은 인간의 판단이라는 막에 의해 간신히 유지되고 있을 뿐입니다.

이제 그 막에 이름을 붙여야 합니다. 왜냐하면 우리는 이제 처음으로 그것을 구축하려고 시도하고 있기 때문입니다.

3. 실제로 결여된 것

이를 **인식론적 인프라 (epistemic infrastructure)**라고 부릅시다. 즉, 데이터를 진실로 바꾸는 계층입니다.

이 용어를 정확하게 정의할 가치가 있습니다. 왜냐하면 이 두 단어는 마치 같은 것처럼 사용되곤 하지만, 그 사이의 간극이 바로 에이전트가 빠졌던 지점이기 때문입니다.

데이터 (Data)는 시스템이 저장하는 것입니다. 진실 (Truth)은 실제로 일어난 사실입니다. 대부분의 기업은 첫 번째(데이터)에는 잠겨 있지만, 두 번째(진실)를 신뢰성 있게 생성해낼 수 있는 것은 아무것도 소유하지 못하고 있습니다. ERP에는 데이터가 있었습니다. 은행에는 데이터가 있었습니다. Slack에는 데이터가 있었습니다. 하지만 그 누구도 이 모든 것을 가져와서, 그 답에 48,000 케냐 실링(ksh48,000)을 걸 수 있을 만큼 충분한 확신을 가지고 _송장이 결제되었다_라는 결론으로 도출해낼 수 있는 장소를 가지고 있지 않았습니다.

여러분이 소유한 모든 비즈니스 시스템은 동일한 조용한 실수를 저지릅니다. 즉, 서로 진정으로 다른 세 가지 요소를 하나의 덮어쓰기 가능한 필드(field)로 뭉뚱그려 버리는 것입니다.

  • 관찰 (Observation) - 누군가가 X라고 주장함. "ERP에는 송장이 승인되었으나 미결제 상태로 표시되어 있습니다."
  • 진실 (Truth) - X가 실제로 그러함. "송장이 실제로 미결제 상태입니다."
  • 이력 (History) - X가 어느 시점에 사실이 되었으며, 이전에는 다른 상태였음. "수요일까지는 미결제. 목요일부터는 결제 완료."

status: unpaid라고 읽히는 데이터베이스 행(row)은 이 세 가지를 모두 하나로 뭉개버립니다. 이 행은 누가 그렇게 말했는지, 그것이 언제 사실이 되었는지, 이전에는 무엇이었는지, 또는 _이에 반대되는 정보가 있었는지_를 알려줄 수 없습니다. 필드가 기록되는 순간, 이러한 모든 구분은 사라집니다. 이 행은 "야간 작업(overnight job)이 아직 실행되지 않았으므로, 이것은 한 소스에서 온 4일 전의 관찰 결과이며 은행 피드(bank feed)의 내용과는 일치하지 않습니다"라고 말하지 않습니다. 그저 사실이라는 완전하고 평면적인 확신을 담아 unpaid라고 말할 뿐입니다.

이제 회사의 모든 시스템이 각자의 방식대로 관찰, 진실, 이력을 붕괴시키며 그 결과가 배가된다고 가정해 보십시오. 각 시스템은 자신의 파편에 대해서만 확신할 뿐, 다른 시스템의 존재는 인지하지 못합니다. 이렇게 되면 당신은 구조적으로 그 화요일 아침의 상황을 만들어낸 셈입니다. 시스템들은 오작동하고 있었던 것이 아닙니다. 그들은 단지 설계된 대로의 유일한 일, 즉 데이터를 저장하고 그것을 진실인 것처럼 제시하는 일을 수행하고 있었을 뿐입니다.

인식론적 인프라 (Epistemic infrastructure)는 그러한 행위를 거부하는, 누락된 계층입니다. 필드(field)를 덮어쓰는 대신, 관찰 내용을 기록하고 누가 관찰했는지, 어디서 관찰했는지, 언제 진실이라고 주장되었는지, 그리고 _무엇을 대체했는지_를 유지합니다. 출처가 서로 다를 때 하나의 정답을 강요하는 대신, 침묵 속에서 승자를 선택하는 것이 아니라 그 불일치 자체를 일급 시민(first-class) 사실로 나타냅니다. 그리고 회사가 단일하고 일관된 상태를 가지고 있는 척하는 대신, 다음과 같은 정직한 사실을 말해줄 수 있습니다. "ERP와 은행의 #4471에 대한 정보가 서로 다릅니다. ERP 데이터는 오래되었으며, 3일 전 Slack에서 지급 보류(hold)가 내려졌으니 아직 결제하지 마세요."

이 마지막 문장이 바로 제품의 전부입니다. 이는 회사의 그 어떤 시스템도 만들어낼 수 없는 문장이자, 유능한 인간이라면 노력 없이도 만들어내는 문장입니다.

4. 왜 AI 에이전트가 고장 난 주체인가

모든 것을 재구성하는 대목은 바로 이것입니다: 이 문제는 새로운 것이 아닙니다. 기업은 언제나 서로 맞지 않는 시계(clocks)를 가진, 서로 충돌하는 시스템들의 더미였습니다. 이야기 속의 모순은 그 회사에 수년 동안 자리 잡고 있었습니다. 단 한 가지 이유 때문에 폭발하지 않았을 뿐입니다.

인간이 바로 인식론적 인프라 (epistemic infrastructure)였습니다.

인간은 밤샘 동기화(overnight sync)가 불안정하다는 것, 은행 데이터는 이틀 정도 뒤처진다는 것, Slack의 보류(hold) 명령이 ERP의 초록색 체크표시보다 우선한다는 것, 그리고 특정 업체에 대금을 지급하기 전에 AP(매입채무) 팀장에게 확인해야 한다는 것을 알고 있는 계층이었습니다. 우리는 회사의 실제적이고 조정된 진실을 머릿속에 담아두고 즉석에서 이를 보완(patch)해 왔습니다. 그리고 우리는 이를 결코 기록하지 않았습니다. 왜냐하면 이러한 조정 과정 자체가 하나의 _시스템_이라는 생각은 누구에게도 들지 않았기 때문입니다. 그저 사람들이 자기 일을 잘하고 있는 것처럼 보였을 뿐입니다.

AI 에이전트는 그러한 본능 없이 회사를 운영하는 첫 번째 노동자입니다. 에이전트는 데이터를 액면 그대로 받아들입니다. 왜냐하면 데이터가 노출하는 전부가 액면가뿐이기 때문입니다. 모든 필드는 출처(provenance), 데이터의 노후도(staleness), 그리고 반대 의견(dissenters)이 모두 제거된 채, 진실이라는 완전한 확신을 입고 도착합니다. 그러고 나서 에이전트는 그 어떤 사무원도 할 수 없는 규모와 속도로 그 데이터에 따라 행동합니다.

따라서 에이전트가 새로운 실패를 야기하는 것이 아닙니다. 에이전트는 기존의 실패를 드러내는 스트레스 테스트 (stress test) 역할을 할 뿐입니다. 인간을 제거하는 순간, 그들이 조용히 제공해 오던 계층이 사라지며, 회사는 자신들에게 진실 계층 (truth layer) 이라는 것이 전혀 없었다는 사실을 깨닫게 됩니다. 그저 사람들이 그 역할을 대신하고 있었을 뿐입니다.

이것이 일반적인 해결책들이 문제에 닿지 못하는 이유이기도 합니다:

  • **더 나은 프롬프트 (Better prompts)**는 에이전트가 주어진 입력값에 대해 더 신중하게 추론하도록 만듭니다. 하지만 이야기 속의 모든 입력값은 국소적으로는 정확했습니다. '승인됨, 미결제'라는 데이터에 대해 아무리 신중하게 추론하더라도, 해당 데이터가 4일이나 지났으며 다른 곳의 정보와 모순된다는 사실을 되살릴 수는 없습니다. 현장에서 보유하지 않은 정보를 프롬프트만으로 얻어낼 수는 없습니다.
  • **더 나은 검색 증강 생성 (RAG, Retrieval-Augmented Generation)**은 에이전트에게 회사의 데이터를 더 많이 가져다줍니다. 하지만 관찰 (observation), 진실 (truth), 그리고 이력 (history)을 각각 붕괴시키고 있는 시스템들로부터 더 많은 데이터를 가져오는 것은, 단지 모순된 정보들을 더 빠르고 더 확신에 차서 가져올 뿐입니다. RAG는 ERP 기록, 은행 기록, 그리고 Slack의 보류 상태를 모두 동일하게 권위 있는 네 개의 스니펫 (snippet)으로 기쁘게 제시할 것이며, 그중 무엇이 현재의 현실을 반영하는지는 말해주지 않을 것입니다. 검색 (Retrieval)은 문서를 찾는 것이지, 진실을 해결하는 것이 아닙니다.
  • **가드레일 (Guardrails)**은 당신이 이미 예상했던 실패들을 잡아냅니다. "승인 없이 5만 달러 이상을 지급하지 마시오"라는 규칙은, 이번 사례처럼 4만 8천 달러였고 실제로 승인된 경우라면 작동하지 않았을 것입니다. 가드레일은 단지 알려진 함정들의 목록일 뿐입니다. 불일치하는 진실의 본질은 당신이 열거하지 않은 형태로 실패한다는 데 있습니다.

이 방법들은 각각 에이전트를 수정해야 할 대상으로 취급합니다. 그 중 어느 것도 그 아래에 있는 계층을 구축하지 않습니다. 무엇이 진실인지에 대한 일관된 개념이 없는 세상에서 완벽한 모델이 결점 없이 추론한다 하더라도, 그 모델은 여전히 송장 (invoice)을 두 번이나 정확하고, 확신에 차서, 제시간에 지급하게 될 것입니다.

이 글의 나머지 부분은 그 누락된 계층에 관한 것입니다. 그것이 실제로 무엇을 저장하는지, 왜 "관찰을 저장하되, 진실을 절대 덮어쓰지 마라"가 핵심적인 규칙인지, 그리고 인간이 지금까지 조용히 수행해 온 그 역할을 구축하기 위해 무엇이 필요한지에 대해 다룹니다.

결론

송장 #4471에 두 번 결제한 그 에이전트는 어디에나 존재하게 될 것입니다. 정확히 그 버그는 아닐지라도, 그 형태는 말이죠. 조달(procurement), 지원(support), 재무(finance), 운영(ops) 분야에 에이전트를 도입하기 위해 경주하는 모든 기업은 각자의 언어로 동일한 사실을 발견하게 될 것입니다. 즉, 에이전트는 제대로 작동하지만, 회사는 에이전트에게 진실(truth)을 말해줄 수 없다는 사실입니다.

우리는 앞으로 몇 년 동안 모델(models)을 탓하며 시간을 보낼 것입니다. 더 나은 모델을 사고, 더 주의 깊게 프롬프트(prompt)를 작성하고, 더 많은 가드레일(guardrails)을 둘러싸겠지만, 실패는 점점 더 드물고, 기이하며, 비용이 많이 드는 방식으로 발생한다는 것을 느끼게 될 것입니다. 그리고 우리는 그 시간 내내 잘못된 계층(layer)을 최적화하고 있을 것입니다. 모델은 결코 변수가 아니었습니다. 기질(substrate)이 변수였습니다.

AI가 이 문제를 만든 것이 아닙니다. AI는 단지 그 문제를 숨기고 있던 사람들을 제거했을 뿐입니다. 당신의 회사는 항상 모순 위에서 운영되어 왔습니다. 다만 새로운 작업자(new workers)들이 당신의 시스템이 하는 말을 곧이곧대로 믿기 때문에 이제야 그것을 알아차리는 것뿐입니다. 해결책은 더 나은 에이전트가 아닙니다. 그 아래에 있는 계층, 즉 시스템이 말하는 것과 진실인 것, 그리고 과거에 그러했던 것 사이의 차이를 아는 계층입니다. 그 계층이 존재하기 전까지, 당신이 배포하는 모든 에이전트는 단 하나의 오래된 필드(stale field)만으로도 잘못된 일을 완벽하게 수행하게 될 것입니다.

저자: Mwai Victor

내가 스스로에게 한 약속 중 하나는 AI 시대에도 우리를 인간답게 만드는 일, 즉 문제를 정면으로 마주하고 직접 해결하는 일을 계속하겠다는 것입니다. 이 글들은 내가 문제를 피하지 않고 헤쳐 나갔다는 증거입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0