콘텐츠로 이동

다섯 에이전트

관심종목 필터를 통과한 각 뉴스 아이템은 5개 에이전트에게 동시에 전달됩니다. 에이전트들은 병렬로 실행되며(현재 구성에서 아이템당 엔드투엔드 약 20~40초), 출력은 집계되어 대시보드에 표시되는 최종 시그널이 됩니다.

에이전트 아이콘 집중 영역
SignalScope 🌐 1차 뉴스 파싱 — 무슨 일이 있었는지, 누가 관련됐는지, 티커 수준의 사실. 필요 시 Tavily 웹 검색으로 교차 검증.
MacroMind 💰 거시경제 프레이밍 — 금리 결정, CPI 발표, FX 충격, 지정학 이벤트와 연결되는가? "관련성 없음"도 유효한 답.
SectorScan 🏭 섹터·공급망 전파 — 누가 또 수혜/피해를 보는가? TSM → ASML → AMAT 체인, 업스트림 vs 다운스트림.
SentimentPulse 💬 리테일 심리 — Reddit, StockTwits, YouTube. 언급량 급증이나 가격과 잡음의 괴리를 감지.
PolicyRadar ⚖ 규제·정책 — 수출 통제, 제재, 당국 조치, 중앙은행 성명.

각 에이전트의 출력

5개 모두 동일한 구조화된 출력을 생성합니다:

{
  "agent_id": "sectorscan",
  "signal_type": "routine_news",
  "urgency": "ALERT",
  "impact_score": 0.72,
  "confidence_score": 0.84,
  "tickers_linked": [
    {"ticker": "NVDA", "impact_score": 0.80, "link_type": "direct"},
    {"ticker": "TSM",  "impact_score": 0.60, "link_type": "sector"}
  ],
  "summary_en": "...",
  "summary_zh": "...",
  "reasoning": "..."
}

signal_type 어휘는 일부러 좁게 정의돼 있습니다(routine_news / earnings / policy_change / supply_chain / macro_event / ...). 에이전트의 레인이 해당 아이템과 무관하더라도 조용히 빠지지 않고 구조적으로 응답해야 합니다 — impact_score를 낮게 주는 식으로. 이렇게 해야 집계 수식이 깔끔하게 유지됩니다.

집계

엔진은 다섯 출력을 다음과 같이 결합합니다:

  • top_signalsignals에 저장되는 단일 행. 최고 impact 에이전트의 요약을 헤드라인으로 삼고, 성공한 모든 에이전트에 걸친 가중 평균 impact를 담습니다. reasoning은 모든 에이전트의 reasoning을 이어붙인 결과입니다(대시보드 카드가 모든 에이전트의 관점을 접을 수 있는 블록으로 보여줄 수 있도록).
  • tickers_linked — 모든 에이전트 결과의 합집합, 중복 제거, 티커별 평균.
  • agents_breakdown — 각 에이전트의 개별 점수, 지연시간, 에러(있다면)를 시그널 행에 저장해 대시보드의 접을 수 있는 패널에서 세부 분석을 볼 수 있게 합니다.

왜 다섯인가

경험적으로, 금융 뉴스 한 건의 "중요성"을 하나의 거대 프롬프트로 판단하려 들면 빠르게 드리프트합니다 — 서로 다른 레인(규제 vs 심리 vs 공급망)이 서로 다른 축에서 답하기 때문입니다. 관심사를 분리하면 UI에 훨씬 풍부한 재료(agent-breakdown 패널)를 줄 수 있고, Reflexion이 비판할 독립적 시그널도 생기며, 한 에이전트의 장애나 환각이 집계 결과를 크게 흔들지 못하게 됩니다.

참고

  • 점수 체계 — 긴급도 티어가 impact_score로부터 어떻게 도출되는지
  • Claw chat (RAG) — 에이전트들의 요약이 어떻게 질의 가능한 지식 기반이 되는지