2 minute read

🇺🇸 Read this post in English

매일 자동으로 뉴스레터를 만드는 에이전트를 며칠 돌리다 보면 이상한 패턴이 보입니다. 오늘 심층 토픽(Today’s Topic)이 어제 다뤘던 것과 같은 약, 같은 기업입니다. 3일 전 기사가 오늘 날짜 뉴스레터에 버젓이 들어와 있습니다.

에이전트가 게으른 게 아닙니다. 관성이 있는 겁니다.

왜 이런 일이 생기나

에이전트는 매 실행마다 맥락을 새로 쌓습니다. “어제 이미 다뤘으니 오늘은 다른 걸 써야지”라는 감각이 없습니다. 지시하지 않으면 오늘 검색에서 가장 눈에 띄는 것을 고릅니다. 그게 어제 다룬 것과 같은 주제여도 모릅니다.

신선도 문제도 비슷합니다. 웹 검색 결과에는 며칠 전 기사가 섞여 나옵니다. 에이전트가 날짜를 확인하지 않으면 그냥 씁니다.

econ-radar에서 이걸 직접 겪었습니다. 자동 생성된 뉴스레터의 Today’s Topic이 tebipenem(항생제)이었는데, 직전 뉴스레터에서 이미 심층 다룬 약이었습니다. 자동으로 발행됐으니 나간 다음에야 알았습니다.

해결: 수집 단계에서 태그로 분류

핵심은 분석·편집 단계가 아니라 수집 단계에서 먼저 걸러야 한다는 것입니다. 수집 에이전트(news-scout)가 각 항목에 태그를 붙이면, 이후 에이전트들은 태그를 보고 처리합니다.

태그 시스템

[배경]  — 기사 게재일이 오늘 기준 48시간 이상 지난 항목
[중복]  — 직전 뉴스레터에서 이미 독립 항목으로 다뤘고, 새 전개가 없는 항목
[후속]  — 같은 사건이지만 승인 결과·후속 수치 등 새 전개가 있는 항목
(태그 없음) — 신선하고 새로운 항목

수집 자체는 막지 않습니다. 배경 지식으로 맥락에 쓸 수 있으니 버리지 않고 분리합니다.

편집 에이전트의 규칙

newsletter-editor 프롬프트에 규칙 하나를 추가했습니다.

[배경]·[중복] 항목은 Today’s Top 5, Today’s Topic, Deep Dive에 독립 항목으로 올리지 않는다. 오늘 신선한 항목을 설명하는 배경 문장 1~2줄로 녹이는 것만 허용한다. [후속] 항목은 “후속” 맥락을 명시하고 짧게 다룬다.

이 규칙 덕분에 신선한 항목이 없는 섹션은 “오늘은 해당 섹션 신호 없음”으로 명시하게 됩니다. 억지로 채우는 것보다 낫습니다.

Today’s Topic 중복 방지

심층 토픽은 별도 규칙이 필요합니다. 독자가 가장 먼저 읽는 섹션이라 같은 소재가 반복되면 타격이 큽니다.

Today’s Topic 선정 전, vault/daily/에서 직전 3일 파일의 Today’s Topic 제목을 확인한다. 같은 약·기업·사건이면 다른 주제를 고른다.

에이전트 프롬프트에 이 규칙을 추가하는 것만으로 충분합니다. 단, vault에 일별 발행물이 git으로 누적돼 있어야 합니다. 과거 발행물이 클라우드 에이전트가 체크아웃하는 레포에 있어야 읽을 수 있습니다.

econ-radar에서는 vault 전체를 git으로 추적하게 바꾼 게 이런 연속성을 가능하게 했습니다.

48시간 기준의 근거

처음엔 14일을 썼습니다. 2주 이내면 최신이라고 봤습니다. 틀렸습니다.

경제·바이오 뉴스는 하루가 다르게 바뀝니다. 2일이 지난 기사는 후속이 이미 나왔을 가능성이 높습니다. 48시간으로 좁히니 “왜 이게 오늘 뉴스야?”라는 반응이 사라졌습니다.

기준은 도메인마다 다릅니다. 주간 논문 다이제스트라면 7일, 월간 트렌드라면 30일이 맞을 수 있습니다. 숫자보다 “이 도메인에서 독자가 신선하다고 느끼는 시간 단위가 얼마인가”를 먼저 정의하는 게 중요합니다.

정리하면

에이전트 관성 문제는 두 가지 원칙으로 잡을 수 있습니다.

품질 규칙은 수집 단계에 넣는다. 편집에서 걸러도 되지만, 수집에서 태그를 붙이면 그 이후 단계는 자연스럽게 따라옵니다. 편집 에이전트 프롬프트가 길어지고 규칙이 충돌할 가능성도 줄어듭니다.

과거 발행물을 에이전트가 읽을 수 있는 곳에 둔다. “어제 뭘 썼나”를 확인하려면 어제 파일이 있어야 합니다. vault를 git으로 추적하고 레포에 포함시키는 이유입니다.

Updated: