Skip to content

feat: Gemini Grounding 검색 + 캐시/Scout/UX 개선#99

Merged
rover0811 merged 8 commits intomainfrom
feat/gemini-grounding-and-ux
Mar 20, 2026
Merged

feat: Gemini Grounding 검색 + 캐시/Scout/UX 개선#99
rover0811 merged 8 commits intomainfrom
feat/gemini-grounding-and-ux

Conversation

@rover0811
Copy link
Copy Markdown
Member

@rover0811 rover0811 commented Mar 20, 2026

Summary

DuckDuckGo Search를 Gemini Grounding API로 교체하고, 캐시/Scout/Extension UX를 전면 개선한 PR입니다.

Changes

Research — Gemini Grounding (#89, #96)

  • GeminiGroundingAdapter 신규 구현 (ResearchPort 준수)
  • AI Overview 수준의 검색 + 합성 + 출처 URL을 단일 API 호출로 획득
  • ResearchSettings 설정 추가 (RESEARCH_MODEL_NAME 환경변수)
  • DDGS 코드/의존성 완전 제거
  • Summary truncation(500자) 제거 — Gemini 합성 답변 그대로 전달
  • TDD 테스트 4개

Cache (#90, #94)

  • Scout fast-path에서 cache_store 노드 미실행 문제 수정 (route_after_scoutcache_store 경유)
  • cache_store 조건 수정 (orand) + CachedScenario 필드 optional 변경
  • Extension에 Cache / Fresh 토글 버튼 추가
  • RunMessageData.use_cacheAgentState.use_cache → cache_lookup/store에서 체크

Node Duration (#91)

  • astream이 노드 완료 후 yield하는 문제 해결
  • 서버에서 prev_node_end 추적하여 NodeStart/NodeEnd에 실제 시각 설정
  • Extension에서 서버 timestamp 사용 (Date.now()parseServerTimestamp)

Scout (#95, #97)

  • Research 출처 URL을 Scout에 적극적으로 전달 (5→8개, summary 포함)
  • 명시된 사이트(코레일→korail.com) 직접 이동 규칙 추가
  • 공식 도메인 최우선, 블로그/나무위키는 최후 수단
  • 비교 작업 시 균등 방문 규칙

Extension UX (#92, #93)

  • NODE_INFO에 cache_lookup/cache_store/report 라벨 + 아이콘 추가
  • Cache hit / Cache miss 상태 표시
  • Research 결과를 Markdown으로 렌더링 (react-markdown + remark-gfm, 표 지원)

Test Results

make check: 154 passed, 2 deselected
make ext-build: OK

Closes

#89, #90, #91, #92, #93, #94, #95, #96, #97

Gemini Grounding API를 사용하여 한국어 검색 품질 대폭 개선.
AI Overview 수준의 검색 + 합성 + 출처 URL을 단일 API 호출로 획득.

Closes #89, Closes #96
3개 와이어링 포인트 교체 (server.py, main.py, graph_studio.py).
ddgs 의존성 제거, google-genai 명시적 추가.

Closes #89
route_after_scout: done=True → cache_store 경유 후 report.
cache_store: route_map or plan 중 하나만 있어도 저장.
CachedScenario: route_map/plan optional로 변경.

Closes #90
astream이 노드 완료 후 yield하므로 서버에서 prev_node_end를 추적하여
NodeStart/NodeEnd에 실제 시각 설정. 클라이언트는 서버 timestamp 사용.

Closes #91
NODE_INFO에 cache_lookup/cache_store/report 추가.
cache_lookup detail에 Cache hit ⚡ / Cache miss 표시.
ActivityBlock에 react-markdown + remark-gfm 적용.

Closes #92, Closes #93
💾 Cache / 🔄 Fresh 토글로 캐시 사용 여부 제어.
RunMessageData.use_cache → AgentState.use_cache → cache_lookup/store에서 체크.

Closes #94
출처 URL 8개로 확대, 사전 조사 요약 전달.
명시된 사이트(코레일→korail.com) 직접 이동, 검색엔진 경유 금지.
공식 도메인 최우선, 블로그/나무위키는 최후 수단.
비교 작업 시 균등 방문 규칙 추가.

Closes #95, Closes #97
LLM 어댑터/서비스에서 Gemini provider 호환 수정.
테스트에 AgentState.use_cache 기본값 추가.
@rover0811 rover0811 merged commit cc3091a into main Mar 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant