사용자가 중간에 목표를 바꾸면 이전 단계는 어떻게 폐기 판정하는가

← 전체 목차 · 이전: Agent 아키텍처: 실행 Agent에게는 거부권이 있어야 한다 · 다음: Agent 월권 경계 — 안전 샌드박스는 무엇을 가두는가

흔한 오답은 이것이다: "완료된 단계를 새 목표와 하나씩 의미 유사도로 채점하고, 임계값 미만이면 폐기 표시한다."

이 방식은 파라미터 변경 시나리오에서 완전히 무너진다. 사용자가 일별 매출 리포트를 주별로 바꿨다고 하자. 일 단위로 집계된 12장의 중간 테이블은 의미상으로는 새 목표와 완전히 똑같아서 전부 만점 통과하지만, 수치 층위에서는 이미 전부 틀렸다.

핵심은 Agent의 상태 관리 안에서 "단계의 의미 관련도"와 "데이터 산출물의 유효성"을 완전히 다른 두 차원으로 취급했는가이다.

정답은 이렇다. Agent는 **단계 의존의 유향 비순환 그래프(DAG)**를 유지하고, 각 단계는 계획 단계에서 "입력 파라미터"와 "산출 데이터 입도" 두 개의 구조화 태그를 선언한다. 목표가 바뀌면 재채점이 아니라 변경을 DAG 위의 파라미터 변경 이벤트로 매핑해 루트 노드부터 너비 우선 순회하며, 산출 입도가 새 파라미터와 불일치하는 노드와 그 모든 하류를 정확히 폐기 표시한다.

혼동되기 쉬운 두 차원

차원묻는 질문판단 근거
단계의 의미 관련도이 단계가 새 목표와 관련 있는가?자연어 의미 매칭
데이터 산출물의 유효성이 단계가 산출한 데이터가 수치상 아직 쓸 수 있는가?산출 데이터 입도가 새 파라미터와 일치하는가

의미 관련도가 높다고 데이터가 유효한 것은 아니다.

의미 비교가 무너지는 지점

사용자가 "일별 매출 리포트를 주별로 바꿔줘"라고 한다. Agent는 이미 12단계를 완료했다 — 일별 주문 금액 집계, 일별 객단가 계산, 일별 카테고리 반품률, 일별 재구매율 등.

Agent가 각 중간 테이블에 의미 매칭만 한다면 스스로에게 이렇게 묻는다: "이 테이블은 매출액에 관한 것인가? 집계 데이터인가? 사용자의 새 목표와 관련 있는가?" 결과는 12장 전부 만점 통과다. 의미적으로 "일별 주문 금액 집계" 테이블과 "주별 주문 금액 집계" 테이블은 거의 똑같기 때문이다.

그러나 입도가 일에서 주로 바뀌면 수치 층위에서 전부 틀린다.

∑(7일치 일별 매출액)  ≠  MAX(주별 매출액)
AVG(일별 객단가)       ≠  주별 객단가

Agent가 12장을 "보존 가능"으로 판정하면 주별 리포트의 모든 숫자가 틀린다.

1층 · 단계마다 구조화 태그 두 개를 달고 DAG를 세운다

사용자가 최초로 목표를 제시할 때 Agent는 계획 단계에서 각 단계마다 두 개의 구조화 태그를 선언한다.

태그예시 내용
입력 파라미터시간 차원=일 / 통계 지표=주문 금액 / 날짜 범위=2026년 7월
데이터 산출 입도중간 테이블=일별 매출 집계 / 시간 필드 입도=일

이 두 태그는 사람이 읽는 주석이 아니라 기계가 읽는 메타데이터이며 DAG 각 노드의 속성이 된다.

DAG의 간선은 데이터 의존을 나타낸다. 단계 B의 입력이 단계 A의 출력에서 온다면 A가 폐기되면 B도 폐기된다.

2층 · 파라미터 변경 영향 전파 알고리즘

사용자가 "주별로 바꿔줘"라고 하면 Agent는 의미 채점을 다시 하지 않고 변경을 DAG 위의 파라미터 변경 이벤트 시간 차원: 일 → 주로 매핑한다.

0. 이벤트화: 목표 변경 → 파라미터 변경 이벤트 (시간 차원 일→주)
1. DAG 루트 노드에서 BFS 순회
2. 필터: 산출 데이터의 「시간 입도 = 일」인 모든 노드 → 폐기 표시
3. 이 폐기 노드들의 직접 하류를 계속 순회:
   상류 데이터가 이미 폐기됨 → 하류는 자기 시간 입도가 맞더라도
   입력 데이터가 이미 더러움 → 함께 폐기 표시
4. 정확한 폐기 노드 집합 획득

이 사례에서 폐기 집합 = 일별 중간 테이블 12개 노드 + 이 중간 테이블에 의존하는 집계 단계 3개 노드. 그리고 시간 차원과 무관한 보조 단계 3개(데이터 소스 연결성 검증, 필드 타입 매핑)는 재사용 가능으로 표시된다.

의미 채점으로는 이런 노드 단위 정밀도에 도달할 수 없다.

3층 · 부분 재사용과 증분 재구축

"전부 폐기하고 처음부터 다시 돌린다"는 논리적으로는 틀리지 않지만 연산 자원을 낭비한다. 폐기 표시와 동시에 한 번 더 지능적 판단을 해야 한다 — 어떤 폐기 노드의 원본 입력 데이터가 아직 남아 있어 재집계로 복구 가능한가.

12장의 일별 집계 테이블은 입도가 틀렸지만, Agent가 두 가지 핵심 자산각 테이블을 생성한 원본 SQL하위 상세 데이터 — 를 보존해 두었다면 주문 원본 테이블부터 전 사슬을 다시 돌릴 필요가 없다.

경로방법대가
전 사슬 재실행주문 원본 테이블부터 다시 시작1시간
증분 재구축GROUP BY의 시간 입도만 바꿔 재집계5분

일에서 주로 바꾸는 것은 본질적으로 GROUP BY의 시간 입도를 바꾸는 일이다. 이 판단을 할 수 있는지가 초급 Agent와 프로덕션급 Agent를 가르는 지점이다.

4단계 처리 절차

1단계  계획 단계에서 각 단계마다 「입력 파라미터」와 「산출 입도」 태그를 선언하고
       단계 간 데이터 의존 DAG를 구축한다.
2단계  목표 변경 시 이를 DAG 위의 파라미터 변경 이벤트로 매핑한다.
       모델이 자유재량으로 재채점하게 두지 않는다.
3단계  DAG 루트에서 BFS 순회하며, 산출 입도가 새 파라미터와 불일치하는
       노드와 그 하류 노드를 폐기 표시한다.
4단계  폐기 노드를 지능적으로 분류한다:
       · 재집계로 복구 가능  → 증분 재구축
       · 처음부터 돌려야 함  → 계획 큐로 반환해 재스케줄

파라미터를 한 번에 세 개 바꾼 경우

파라미터 변경을 구조화 표현한다. DAG 각 노드의 파라미터 벡터와 새 목표의 파라미터 벡터를 차원별 Diff한다.

적중 상황처리
시간 차원, 집계 함수, 데이터 소스 세 차원 모두 적중고우선순위 폐기
한 차원만 적중저우선순위 폐기

폐기 우선순위가 다르므로 Agent가 배치를 나눠 재구축할 수 있고, 한꺼번에 전부 폐기하지 않아도 된다.

나쁜 경로: 전역 재계획

"사용자가 목표를 바꿀 때마다 Agent가 처음부터 다시 계획한다"는 나쁜 경로다. 재계획은 완료된 모든 중간 결과를 버리는 것이고, 앞의 작업이 전부 헛수고가 된다.

올바른 방법은 차등 재계획이다. 재사용 불가능한 부분만 폐기하고 기존 중간 결과의 재사용 가치를 최대화한다.

핵심 통찰

  1. 의미 관련 ≠ 데이터 유효 — "일별 주문 금액 집계" 테이블과 "주별 주문 금액 집계" 테이블은 의미 공간에서 거의 겹치지만 수치상 하나는 쓸 수 있고 하나는 못 쓴다. 의미 유사도로 데이터 실효를 판정하는 모든 메커니즘은 입도·윈도우·집계 함수 같은 파라미터 변경에서 체계적으로 누락 판정한다.
  2. 폐기 판정은 그래프 위의 전파 문제이지 채점 문제가 아니다 — 채점은 노드별로 독립적이고 확률적이지만, 전파는 의존 간선을 따라 결정론적으로 전개된다. "노드 단위 정밀도"를 원한다면 의존 관계를 명시적 DAG로 만들어야 하며, 모델이 매번 이해에 기대어 추측하게 두면 안 된다.
  3. Agent가 계획 단계에서 기계가 읽는 메타데이터를 남기게 하라 — "입력 파라미터"와 "산출 데이터 입도" 두 태그가 이 메커니즘 전체의 기초 공사다. 이것이 없으면 이후의 Diff, 전파, 증분 재구축이 전부 성립하지 않는다. 계획 단계에서 메타데이터 두 줄을 더 쓰고 변경 단계에서 결정론을 얻는 거래다.
  4. 더러운 데이터는 의존 간선을 따라 전염된다 — 하류 노드는 자기 파라미터가 완전히 맞더라도 입력이 폐기된 노드에서 왔다면 산출물도 더럽다. 따라서 전파는 하류 폐포 전체를 돌아야 하고 "직접 불일치" 층만 폐기해서는 안 된다.
  5. 폐기가 곧 재실행은 아니다 — 폐기 판정 뒤에 두 번째 판단이 있다. 원본 입력(원본 SQL + 하위 상세)이 아직 있는가. 있으면 재집계, 없어야 전 사슬 재실행이다. 이 두 번째 판단을 할 수 있는지가 초급과 프로덕션급의 경계선이다.
  6. 변경은 이벤트화·구조화되어야지 자연어로 남아 있으면 안 된다 — "주별로 바꿔줘"를 시간 차원: 일→주라는 파라미터 변경 이벤트로 번역해야 차원별 Diff가 가능하고, 우선순위를 매길 수 있고, 배치 재구축이 가능하다. 모델에게 "자유재량으로 재채점"을 맡기는 것은 통제 가능성을 포기하는 것이다.
  7. 재계획의 대가는 매몰된 중간 결과다 — 전역 재계획은 가장 안전해 보이지만 실제로는 완료된 모든 작업을 한 번에 영으로 만든다. 차등 재계획만이 과거 투입을 짐이 아니라 자산으로 바꾼다.

엔지니어링 실전 Tips

  • 두 태그는 계획 단계에서 확정할 것: 입력 파라미터데이터 산출 입도는 노드 속성이어야지 사후에 SQL에서 역추론하는 것이면 안 된다. 역추론은 늦기도 하고 신뢰할 수도 없다.
  • "핵심 자산"을 지킬 것: 모든 중간 테이블은 자신을 생성한 원본 SQL과 자신이 의존한 하위 상세 데이터를 남겨야 한다. 이 둘이 있으면 일→주 변경은 GROUP BY 한 번 수정이고, 없으면 주문 원본 테이블부터 전 사슬 재실행이다.
  • 비용 차이를 계산해 볼 것: 전 사슬 1시간 vs 재집계 5분. 증분 재구축의 이득은 "조금 절약"이 아니라 자릿수 하나다.
  • 전파는 하류까지 닫아야 한다: 직접 불일치 노드만 표시하면 "자기 입도는 맞지만 입력이 이미 더러운" 집계 노드를 놓친다. 이 사례의 집계 단계 3개가 바로 그 유형이다.
  • LLM이 자유재량으로 폐기를 판정하게 두지 말 것: 변경 처리는 결정론적 그래프 알고리즘으로 가고, 모델은 자연어 목표를 파라미터 변경 이벤트로 파싱하는 역할만 맡는다.
  • 보조 단계를 식별해낼 것: 연결성 검증, 필드 타입 매핑처럼 업무 차원과 무관한 단계는 본래 재사용 가능하다. 식별해내는 것만으로 순이익이다.
  • 다중 파라미터 변경은 다중 판단이 아니라 벡터 Diff로: 노드 파라미터와 새 목표를 모두 파라미터 벡터로 표현하면 한 번의 차원별 Diff로 "폐기 여부"와 "폐기 우선순위"를 동시에 얻는다.