에이전트 시리즈 네 번째는 저희 제품 이야기예요. "뚝딱"은 "지난달 미수금 거래처 목록 뽑아서 담당자한테 메일 보내 줘" 같은 말을 받으면 ERP 조회, 표 만들기, 메일 발송까지 처리하는 업무 자동화 에이전트예요. 오늘은 그 구조 중 제일 중요한 계획-승인-실행 얘기예요.
왜 바로 실행하지 않냐면요
처음 프로토타입은 말하면 바로 실행했어요. 데모에서는 멋있었어요. 그런데 실제 업무에 붙이려고 하니 담당자분들이 다 같은 걸 물으셨어요. "메일을 보내기 전에 누구한테 보내는지 볼 수 있어요?" 당연한 질문이에요. 되돌릴 수 없는 일(메일 발송, 결재 상신, 데이터 수정)을 AI가 혼자 하는 걸 아무도 원하지 않아요.
그래서 구조를 바꿨어요. 에이전트는 먼저 계획을 세우고, 사람이 승인하면 실행해요.
1단계: 계획
사용자 지시를 받으면 에이전트는 실행하지 않고 단계 목록을 만들어요.
요청: 지난달 미수금 거래처 목록 뽑아서 담당자한테 메일 보내 줘
계획:
1. [조회] ERP에서 2026-03 기준 미수금 > 0 인 거래처 조회
2. [가공] 거래처명·금액·담당자 열로 표 작성
3. [조회] 각 거래처의 영업 담당자 메일 주소 조회 (그룹웨어)
4. [발송] 담당자별로 해당 거래처 목록 메일 발송 ⚠ 되돌릴 수 없음
각 단계에는 종류 태그가 있어요. 조회·가공은 안전하고, 발송·수정·삭제는 되돌릴 수 없어요. 되돌릴 수 없는 단계는 눈에 띄게 표시돼요.
계획은 모델이 만드는데, 도구 목록과 각 도구의 "되돌릴 수 있는지" 메타데이터를 같이 줘요. 모델이 태그를 틀리게 붙이면 안 되니까, 태그는 모델 출력이 아니라 도구 정의에서 가져와요.
2단계: 승인
계획을 사용자에게 보여 주고 승인을 받아요. 그런데 매번 전부 승인하라고 하면 아무도 안 써요. 그래서 승인 규칙이 있어요.
- 조회·가공만 있는 계획은 자동 승인이에요. 읽기만 하니까요.
- 되돌릴 수 없는 단계가 있으면 그 단계 직전에 멈추고 승인을 받아요. 그때까지의 결과(예: 만들어진 표, 수신자 목록)를 같이 보여 줘요.
- 사용자가 "이런 패턴은 항상 승인" 으로 저장할 수 있어요. 단, 수신자나 금액 같은 핵심 값이 저장 당시와 다르면 다시 물어요.
중요한 건 승인 시점에 실제 값을 보여 주는 거예요. "메일을 보낼게요"가 아니라 "김OO 외 4명에게 이 내용의 메일을 보낼게요"예요. 계획 단계에선 모르던 값이 실행 중에 채워지니까, 되돌릴 수 없는 단계 직전에 다시 멈추는 거예요.
3단계: 실행
승인된 계획을 순서대로 실행해요. 여기서 지킨 원칙들이에요.
- 계획에 없는 도구는 못 불러요. 실행 중에 모델이 "아, 이것도 해야겠다" 하고 새 도구를 부르려 하면 막고, 계획을 다시 세우는 단계로 돌아가요.
- 각 단계의 입력·출력을 다 기록해요. 4월 7일에 쓴 트레이싱이에요. 나중에 "왜 이 거래처가 빠졌지?" 하면 조회 단계의 실제 쿼리와 결과를 볼 수 있어요.
- 실패하면 멈춰요. 3단계에서 메일 주소 조회가 실패하면 4단계를 하지 않고 사용자에게 돌아가요. 일부만 보내는 게 제일 나빠요.
사내 시스템 커넥터
ERP, 그룹웨어, 메신저를 도구로 연결하는데, 각 도구에는 이런 정의가 있어요.
name: erp.receivables.query
reversible: true # 조회
params: { period: "YYYY-MM", min_amount: number }
rate_limit: 10/min
name: mail.send
reversible: false # 되돌릴 수 없음
params: { to: [email], subject: string, body: string }
requires_approval: always
reversible 과 requires_approval 이 핵심이에요. 모델은 이 메타데이터를 바꿀 수 없어요.
감사 로그
모든 실행은 누가 지시했고, 어떤 계획이 만들어졌고, 누가 언제 승인했고, 뭐가 실행됐는지 남아요. 승인 없이 실행된 되돌릴 수 없는 작업은 구조상 있을 수 없고, 있으면 그건 버그예요. 감사 로그는 수정 불가 저장소에 쌓여요.
트레이드오프
이 구조는 분명 느려요. 한 번에 끝날 일을 두 번에 걸쳐 해요. 저희는 그걸 받아들였어요. 업무 자동화에서 중요한 건 속도보다 "이게 뭘 할지 알고 있다"는 느낌이거든요. 그 느낌이 생기면 사용자가 점점 더 많은 패턴을 자동 승인으로 넘겨서 결국 빨라져요.
다음 주는 Market 쪽 제품 이야기로 넘어가요. 공시·뉴스를 수집하는 파이프라인에서 중복 제거와 출처 추적을 어떻게 하는지요.