> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myrmagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 웹 검색 및 가져오기

> 내장된 web_search 및 web_fetch — 다중 엔진 검색, 3계층 가져오기 및 에이전트 컨텍스트에서 정크를 제거하는 콘텐츠 필터링.

# 웹 검색 및 가져오기

Myrm에는 **web\_search** 및 **web\_fetch**가 내장 도구로 포함되어 있습니다. 그들은 함께 작동합니다. 검색은 소스를 찾고, 읽은 페이지를 가져옵니다. 둘 다 콘텐츠가 LLM에 도달하기 **전에** 필터링합니다.

## 중요한 이유

대부분의 에이전트는 원시 검색 조각이나 전체 HTML을 모델에 전달합니다. 이는 토큰을 낭비하고 답변 품질을 저하시킵니다. Myrm은 로컬 필터 파이프라인을 실행합니다.

```
Query → multi-engine search → BM25/Reranker → relevant snippets
URL   → 3-tier fetch → DOM prune → (optional) BM25+vector+Reranker → clean text
```

**결과:** 웹 사용량이 많은 작업의 경우 토큰이 ~~40~~50% 적고, 로컬 작업은 월 \$0입니다.

:::note Honest comparison
Hermes, OpenClaw, OpenCode 및 Claude Code에는 모두 기본 웹 검색/가져오기 도구가 있습니다. Myrm의 장점은 **완전한 로컬 필터 파이프라인**입니다. 단순히 도구를 갖춘 것이 아니라 콘텐츠가 LLM에 도달하기 전에 정리합니다.

**Hermes + wigolo MCP 사용자**: 커뮤니티에서는 종종 다중 엔진 검색, 가져오기 및 연구를 위해 `npx wigolo`을 추가합니다. Myrm **이 내장 기능을 제공** — 추가 노드 사이드카가 없습니다. 방문 페이지는 무료 재쿼리를 위해 **corpus=web**에 있습니다. **Cron PollTrigger**를 통해 페이지를 살펴보세요. [경쟁사 비교](/ko/getting-started/competitor-comparison)를 참조하세요.
:::

## 웹 검색

### 엔진

**7개 공급자** 지원(설정 → 검색에서 구성):

| Provider              | Best for                                        |
| --------------------- | ----------------------------------------------- |
| SearxNG (self-hosted) | Privacy, 70+ aggregated engines including Baidu |
| Tavily                | General research                                |
| Exa                   | Semantic/neural search                          |
| Perplexity            | Q\&A style                                      |
| Google PSE            | Custom site search                              |
| DataForSEO            | SEO/data tasks                                  |
| Firecrawl             | Search-as-a-service fallback                    |

### 엑스(트위터) 실시간 검색

Myrm은 xAI의 응답을 통해 전용 **X/Twitter 실시간 검색**을 제공합니다. API — 인라인 인용을 통해 게시물, 스레드 및 인기 토론을 검색합니다.

**두 가지 인증 경로:**

| Method          | Setup                                                  | Best for                                           |
| --------------- | ------------------------------------------------------ | -------------------------------------------------- |
| API Key         | Paste xAI API key in Settings → Models & Providers     | Developers with paid xAI API                       |
| SuperGrok OAuth | One-click device-code login in Settings → Integrations | SuperGrok / X Premium+ subscribers (no extra cost) |

**기능:** 날짜 범위 필터, 포함/제외 처리(최대 10개), 일치하는 게시물의 이미지/동영상 이해, 소스 URL이 있는 인라인 인용, 저하된 결과 감지(필터가 소스 데이터를 생성하지 않을 때 경고).

OAuth 토큰은 저장 시 AES-256-GCM으로 암호화되고 만료 전에 자동으로 새로 고쳐지며 5개의 xAI 서비스(X Search, Image Gen, Video Gen, TTS, STT)에서 재사용됩니다. 한 번의 로그인으로 전체 xAI 멀티모달 스택이 잠금 해제됩니다.

### 의도 감지(0 LLM 비용)

Myrm은 **7가지 인텐트 유형**을 자동 감지하고 엔진 매개변수를 조정합니다.

* 코드, 뉴스, 학술, 금융, 보안, 사회, 일반

\*"최신 AI 보안 CVE"\*라고 말하세요. 모드 선택기가 필요하지 않습니다.

### 5계층 지능형 라우팅

단일 검색 경로를 사용하는 경쟁업체와 달리 Myrm은(는) 별도의 Planner LLM 호출 없이 5개 계층의 라우팅 인텔리전스를 사용합니다.

| Layer | Mechanism                 | Benefit                                                                                                                         |
| ----- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| 1     | LLM natural selection     | Agent decides which tools to call per step                                                                                      |
| 2     | Tool description guidance | Each tool states when it should be invoked                                                                                      |
| 3     | Intent optimizer          | Zero-cost keyword routing to engine categories                                                                                  |
| 4     | Capability discovery      | `discover_capability_tool` progressive loading for MCP skills (all builtin tools Turn1 eager; no mid-thread bind\_tools mutate) |
| 5     | RSG post-verification     | Evaluates quality and guides follow-up searches                                                                                 |

### 웹 가져오기 및 브라우저(스마트 라우팅)

**web\_fetch** 및 **browser** 도구가 모두 활성화된 경우 Myrm은(는) 시스템 프롬프트에 연결하지 않고 에이전트를 안내합니다.

| Task                                   | Preferred tool  | Why                                                   |
| -------------------------------------- | --------------- | ----------------------------------------------------- |
| Read article / docs / blog (no clicks) | **web\_fetch**  | Faster, cheaper; JS rendering handled internally      |
| Login, forms, clicks, infinite scroll  | **browser**     | Full interaction + session reuse via Extension Bridge |
| Find URLs first                        | **web\_search** | Discovery before fetch or browse                      |

**작동 방식:** 도구 설명 + 동적 힌트(페어링된 도구를 사용할 수 있는 경우에만 삽입됨) + 대칭 루프 가드 제안 + 별도의 브라우저 풀 격리(CRAWL 대 AGENT). Hermes은 브라우저→web\_extract만 힌트합니다. OpenClaw에는 교차 도구 힌트가 없습니다.

이는 추가 대기 시간이 없고, 즉각적인 캐시 중단이 없으며, 정적 사전 계획보다 더 유연하다는 것을 의미합니다.

### 검색 모드

| Mode                | When           | Pipeline                                               |
| ------------------- | -------------- | ------------------------------------------------------ |
| **Basic** (default) | Most queries   | BM25 + RRF multi-query fusion → smart truncation       |
| **Precision**       | Long documents | Chunk → BM25 top-50 → Reranker top-20 → merge adjacent |

정밀 모드는 의미론적 재순위 지정(점수 임계값 **0.6**)을 사용합니다. 관련성이 낮은 청크는 삭제됩니다.

### 도메인 다양성 정렬

다중 쿼리 결과는 단일 도메인이 지배하는 것을 방지하기 위해 자동으로 재정렬됩니다. 동일한 도메인의 각 후속 결과는 지수 감쇠 인자(기본값 **0.8**)에 의해 페널티를 받습니다.

* `example.com`의 첫 번째 결과 — 전체 점수
* `example.com`의 두 번째 결과 — 점수 × 0.8
* `example.com`의 세 번째 결과 — 점수 × 0.64

이렇게 하면 에이전트가 한 웹사이트의 여러 페이지가 아닌 다양한 소스를 볼 수 있습니다. 구성이 필요하지 않습니다. `combine_search_results_unified`에서 기본적으로 활성화됩니다.

### 구조화된 히트 필드

풍부한 메타데이터(예: Volcengine Doubao)를 노출하는 제공업체의 검색 결과는 전체 파이프라인을 통해 **구조화된 필드**를 전달합니다.

| Field                   | Example                                | Benefit                                                 |
| ----------------------- | -------------------------------------- | ------------------------------------------------------- |
| `site_name`             | "GitHub", "Wikipedia", "StackOverflow" | LLM sees source identity, not just a URL                |
| `authority_description` | "官方", "媒体", "个人"                       | Authority signal for answer prioritization              |
| `date`                  | "2026-07-30"                           | Recency-aware reasoning; outdated sources deprioritized |

이러한 필드는 `combine_search_results_unified` 메타데이터 보존 파이프라인에 의해 보장되는 중복 제거, 도메인 다양성 정렬 및 다중 쿼리 융합을 유지합니다. 경쟁사(Hermes, OpenClaw, DeerFlow)는 공급자 메타데이터를 삭제하거나 이를 조각 문자열로 평면화합니다.

### 인용 호버 UI

채팅 내 인용 표시(예: `【1】`)는 풍부한 소스 세부정보가 포함된 호버 카드를 표시합니다.

| Info                   | Effect                                                                     |
| ---------------------- | -------------------------------------------------------------------------- |
| **Site name**          | Shows "GitHub", "Wikipedia" instead of raw URLs                            |
| **Authority badge**    | Color-coded label ("Official", "Media") for quick trust assessment         |
| **Relative freshness** | "3 days ago", "2 weeks ago" — internationalized, instant recency awareness |

터치 친화적입니다(iPad/모바일에서는 탭하세요). 5개 언어(zh/en/ja/ko/de)를 지원합니다.

경쟁사인 DeerFlow는 URL + 스니펫만 표시합니다. 나머지 6명의 경쟁업체에는 인용 호버 UI가 전혀 없습니다.

### 에이전트 명시적 검색 매개변수

에이전트는 `web_search_tool`의 `time_range`을 통해 시간별로 검색 결과를 명시적으로 제한할 수 있습니다.

| Parameter    | Values                                                      | Effect                                         |
| ------------ | ----------------------------------------------------------- | ---------------------------------------------- |
| `time_range` | `day`, `week`, `month`, `year`, or `YYYY-MM-DD..YYYY-MM-DD` | Restricts results to the specified time window |

공식 소스 또는 신뢰할 수 있는 소스의 경우 별도의 도구 매개변수 대신 쿼리에 `site:` 연산자(예: `site:gov.cn`, `site:github.com`)를 추가하세요.

**3계층 매개변수 우선순위 융합:**

1. **에이전트 명시적**(가장 높음) — 에이전트가 직접 전달하는 매개변수
2. **의도 자동 감지** — 비용이 들지 않는 키워드 기반 추론(뉴스 → 1일, 금융 → 1주)
3. **구성 기본값**(최저) — 공급자 수준 `extra_params`

**매개변수 정규화**(`_normalize_explicit_params`)는 의미 매개변수를 공급자별 형식으로 변환합니다.

| Semantic                              | Volcengine            | SearxNG             | Tavily            |
| ------------------------------------- | --------------------- | ------------------- | ----------------- |
| `time_range="week"`                   | `TimeRange="OneWeek"` | `time_range="week"` | `days=7`          |
| `time_range="2026-01-01..2026-07-30"` | Direct passthrough    | Graceful fallback   | Graceful fallback |

**전략 D(매개변수 에스컬레이션):** 검색 충분성 가드가 불충분한 결과를 보고하면 에이전트는 조정된 쿼리 또는 더 좁은 `time_range`을 사용하여 자동으로 재시도합니다. RSG 코드를 변경할 필요가 없습니다.

**턴별 검색 예산:** `ToolTurnBudgetGuard`은 `web_search_tool`을 사용자 메시지당 20개 호출로 제한합니다(하네스 `SECURITY_SYSTEM.md` §6.3). 이는 FrequencyGuard의 60년대 슬라이딩 윈도우 제한을 보완합니다.

### 시각적 참조(전용 이미지 검색 도구 없음)

참조 이미지가 필요한 경우 에이전트는 **web\_search → web\_fetch / browser**를 사용하여 페이지에서 이미지 URL을 얻은 다음 생성을 위해 **image\_tool**을 사용합니다. OpenClaw / Hermes과 동일한 패턴입니다. 별도의 DuckDuckGo 이미지 검색 종속성이 없습니다.

### 회복력

* **엔진 대체** — 1차 실패 → 자동 전환
* **15분 결과 캐시** — 반복 쿼리에는 비용이 들지 않습니다.
* **30초 상태 프로브** — 사용할 수 없는 엔진을 조기에 감지합니다.

## 웹 가져오기

### 3계층 아키텍처

| Tier       | Speed   | Use case                   |
| ---------- | ------- | -------------------------- |
| L1 HTTP    | \~100ms | Static pages, APIs         |
| L2 Browser | \~1–3s  | JavaScript-rendered pages  |
| L3 Stealth | \~3–5s  | Cloudflare, anti-bot sites |

**AdaptiveRouter**는 도메인당 비용을 학습하고 최적의 계층을 자동으로 선택합니다.

### L4 원격 폴백 옵션(기본값은 꺼짐)

L1\~L3이 모두 실패하면 원격 리더 대체를 **선택**할 수 있습니다(설정 → 검색 → **웹 가져오기 원격 에스컬레이션**).

| Provider     | Role                                                                                         |
| ------------ | -------------------------------------------------------------------------------------------- |
| Jina Reader  | First remote attempt (optional API key; free tier when available)                            |
| Firecrawl v2 | Second attempt — **Keyless (1,000 req/mo free)** or bring your own API key for higher quotas |

**Firecrawl v2 주요 특징:**

* **제로 구성 시작** — API 키 없이 작동합니다. Firecrawl의 무료 등급은 매월 1,000개의 요청을 제공합니다.
* **사용자 정의 API 기본** — 기업 개인 정보 보호 또는 더 높은 처리량을 위해 자체 호스팅 Firecrawl 인스턴스를 지정합니다.
* **원클릭 확인** — 설정 UI는 구성된 엔드포인트(자체 호스팅 포함)에 대한 연결을 테스트합니다.

**디자인 보장(항상 클라우드에 APIs를 발생시키는 경쟁업체와 비교):**

* **기본값은 꺼짐** — 추가 Turn1 도구 없음, 프롬프트 캐시는 변경되지 않음
* **세션당 한도**(1–50) — 원격 청구 폭주 방지
* 원격 통화 전 **SSRF 가드**
* **대량 크롤링이 내장되어 있지 않음** — 로컬에서 검색+가져오기+브라우저를 사용하거나 사이트 전체 색인 생성을 위해 Firecrawl MCP을 사용합니다.
* **플레인 거부 스위치** — 엔터프라이즈 하드 블록용 `MYRM_WEB_FETCH_ESCALATION=denied`

OpenClaw/Hermes은 하드 페이지를 위해 Firecrawl에 의존하는 경우가 많으며 항상 API 키가 필요합니다. Myrm은 **로컬 우선**을 유지하고, 기본적으로 키가 없는 무료 계층을 지원하며, 클라우드를 명시적이고 제한적인 최후의 수단으로 취급합니다.

### 개인정보 보호

**명시적 옵트인 디자인:** 설정에서 공급자를 수동으로 구성하고 활성화하는 경우에만 검색이 활성화됩니다. 뒤에서 무료 엔진(예: DuckDuckGo)에 쿼리를 자동으로 보내는 일부 대안과 달리 Myrm은(는) 명시적인 구성 없이는 네트워크 호출을 절대 수행하지 않습니다. API 키가 구성되지 않음 = 전혀 검색되지 않습니다.

**투명한 폴백:** 기본 제공업체에 장애가 발생하여 구성된 백업으로 폴백하는 경우 채팅을 통해 실시간 알림을 받게 되며 자동으로 전환되지는 않습니다.

프록시가 구성되면 L2/L3는 자동으로 \*\*DoH(HTTPS를 통한 DNS)\*\*를 활성화합니다. DNS 쿼리는 암호화되므로 ISP와 네트워크 관리자는 귀하가 방문하는 사이트를 볼 수 없습니다. 구성이 없고 성능 오버헤드가 없습니다.

### 광고/추적기 도메인 차단

L2 및 L3은 네트워크 수준에서 **3,500개 이상의 알려진 광고 및 추적 도메인**을 자동으로 차단합니다(Peter Lowe가 선별한 목록). 광고 스크립트가 로드되지 않습니다. 페이지가 더 빠르게 렌더링되고 DOM이 깔끔하게 유지되며 토큰 소비가 줄어듭니다. 제로 구성, 표준 모드에서 기본적으로 활성화됩니다.

### fetch\_and\_extract(스마트 추출)

reranker + embedding이 구성되면 `web_fetch`은 **fetch\_and\_extract**를 지원합니다.

1. 3계층 크롤링(HTTP → 브라우저 → 스텔스)
2. 청크 페이지 콘텐츠
3. **BM25 + 벡터 하이브리드 검색**(Qdrant 임베딩)
4. 순위 재지정 → 상위 관련 구절만

이는 클라우드 LLM 요약(예: Hermes `web_extract` + Gemini)을 **zero-LLM 로컬 필터링**으로 대체합니다.

### 콘텐츠 정리

텍스트가 에이전트 컨텍스트에 들어가기 전:

1. **DOM 정리** — 탐색, 광고, 바닥글, 사이드바 제거
2. **HTML → 마크다운** — 구조화, LLM 친화적
3. **스마트 잘림** — `was_truncated` 플래그가 있는 `max_chars`
4. **바이너리 라우팅** — PDF가 별도로 구문 분석됩니다(깨진 HTML 없음).
5. **YouTube 빠른 경로** — YouTube URL을 자동 감지하고 API을 통해 직접 타임스탬프가 있는 자막을 추출합니다. 스크립트를 사용할 수 없는 경우 HTML 가져오기 프로그램으로 대체됩니다.
6. **Bilibili 빠른 경로** — Bilibili 비디오 URL을 자동 감지하고 공개 API(보기 + 플레이어)을 통해 타임스탬프가 있는 자막을 추출합니다. SessionVault 쿠키로 AI 생성 자막을 지원합니다. 사용할 수 없는 경우 브라우저 크롤링으로 돌아갑니다.

### 캐싱

* 요청 통합(동시 동일 URL = 1회 가져오기)
* 재검증하는 동안 오래된 것
* ETag / 마지막 수정 조건부 요청
* URL에서 제거된 35개 이상의 추적 매개변수

## 심층 연구: 5단계 수명 주기

Myrm의 Deep Research는 단발성 "검색 및 요약"이 아닌 구조화된 **CLARIFY → PLAN → EXPLORE → RESEARCH → REPORT** 파이프라인을 실행합니다.

| Phase        | What happens                                                                                                           | Why it matters                                                                                                  |
| ------------ | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **CLARIFY**  | Structured form asks the user to confirm intent                                                                        | 100% accurate understanding vs AI guessing                                                                      |
| **PLAN**     | Generates ≤6-step research plan, **pauses for user review** (approve / edit / skip)                                    | Ensures systematic coverage; user controls direction before spending tokens                                     |
| **EXPLORE**  | Auto-queries your Wiki knowledge base via FTS5 full-text search (zero LLM cost)                                        | Skips redundant web searches for topics you already have notes on; sub-agents focus on **new** information only |
| **RESEARCH** | Parallel sub-agents search + self-reflect via `think` tool; local context injected into orchestrator prompt            | Faster with quality checkpoints at each cycle; known information excluded from search tasks                     |
| **REPORT**   | Multi-page structured report with inline citations【1】【2】, Information Integrity Rules, and Limitations/Gaps disclosure | Verifiable, honest about unknowns, zero extra LLM calls                                                         |

### 연구 스튜디오(3열 작업대)

`/research` 경로는 심층 연구 워크플로에 최적화된 전용 3열 레이아웃을 제공합니다.

| Column                  | Purpose           | Key features                                                       |
| ----------------------- | ----------------- | ------------------------------------------------------------------ |
| **Left: Resource Pool** | Curate inputs     | Wiki concept search, file upload with progress, checkbox selection |
| **Center: Chat**        | Converse with AI  | Full ChatWindow with all Agent capabilities                        |
| **Right: Output**       | Preview artifacts | ArtifactRenderer + PortalTabs + download + save to Wiki            |

* **PC**: 드래그 가능한 구분선이 있는 3개의 열이 나란히 있음(왼쪽 240~~480px, 오른쪽 280~~600px)
* **모바일**: 탭 전환으로 자동 저하됩니다(768px 중단점).
* **컨텍스트 동기화**: 풀의 리소스를 확인하면 `mentionReferences`을 통해 자동으로 채팅 컨텍스트에 삽입됩니다. 선택을 취소하면 다른 @ 참조에 영향을 주지 않고 제거됩니다.
* **출력 작업**: 한 번의 클릭으로 아티팩트를 다운로드하거나 Wiki에 저장합니다(활성 에이전트로 범위 지정).

### 중간 연구 통제

* **계획 확인 게이트** — 실행이 시작되기 전에 연구 계획을 검토, 편집 또는 승인합니다.
* **HITL 콜백** — 방향을 조정하기 위해 모든 주기 후에 일시 중지
* **예산 가드** — `max_budget_usd` + 임계값 경고
* **취소 + 유지** — 언제든지 중지, 부분 결과 보존
* **ReplanMiddleware** — 드리프트를 자동 감지하고 자체 수정

### 대 MiroFlow(GAIA/BrowseComp 벤치마크 리더)

|                      |                      Myrm                     |                    MiroFlow                   |
| -------------------- | :-------------------------------------------: | :-------------------------------------------: |
| Task understanding   |          ✅ User confirms via CLARIFY          |      ⚠️ AI guesses "traps" (\$0.5–2/call)     |
| Research planning    |               ✅ Structured plan               |                     ❌ None                    |
| Self-reflection      |                 ✅ `think` tool                |                     ❌ None                    |
| Mid-research control |            ✅ HITL + cancel + budget           |                     ❌ None                    |
| Parallel sub-agents  |             ✅ Semaphore-controlled            |             ❌ Single serial agent             |
| Source dedup         |                ✅ SourceTracker                |                     ❌ None                    |
| Extra cost           |                      \$0                      |            \$0.5–2 per o3 hint call           |
| Report output        | ✅ Multi-page report + inline citations + gaps | ⚠️ `\boxed{42}` short answer (benchmark-only) |
| Report integrity     |    ✅ Strict source-based, unverified marked   |                     ❌ None                    |

## 경쟁사 대비

|                      |                   Myrm                   |              Hermes             |                OpenClaw                |       OpenCode       |
| -------------------- | :--------------------------------------: | :-----------------------------: | :------------------------------------: | :------------------: |
| Built-in search      |                     ✅                    |                ✅                |                    ✅                   |           ✅          |
| Result filtering     |              ✅ BM25/Reranker             |        ❌ API passthrough        |              ❌ raw snippet             |   ❌ API passthrough  |
| Built-in fetch       | ✅ 3-tier local + L4 Firecrawl v2 keyless | ⚠️ Firecrawl+LLM (key required) |    ⚠️ HTTP/Firecrawl (key required)    |     ⚠️ HTTP only     |
| Vector extract mode  |           ✅ fetch\_and\_extract          |         ❌ (LLM summary)         |                    ❌                   |           ❌          |
| DOM pruning          |                     ✅                    |                ❌                |              ❌ regex/text              | ❌ Turndown full page |
| Chinese search       |              ✅ SearxNG+Baidu             |       ⚠️ backend-dependent      |               ❌ DDG poor               |     ⚠️ cloud API     |
| Image search         |  ❌ (web\_search + web\_fetch / browser)  |                ❌                |                    ❌                   |           ❌          |
| Monthly cost (local) |   **\$0** (keyless free tier included)   |     API fees (key required)     | Firecrawl fallback fees (key required) |   Exa/Parallel fees  |

### Hermes이 다른 점(강하지 않음)

* 플러그인 백엔드(Exa/Tavily/Firecrawl) — 더 많은 클라우드 공급업체가 있지만 모두 API 키가 필요합니다.
* `web_extract`은 대신 **LLM 요약을 사용하여 로컬 임베딩 설정을 건너뜁니다** — 더 쉬운 설정, **페이지당 토큰 비용**
* SSRF + URL 비밀 차단 — 성숙하고 Myrm과 동일한 클래스(구별 요소 아님)

### 자동 스트립 광고 및 중복

| Cleanup                            |           Myrm           |  OpenClacky  |       OpenCode       |        Hermes        |
| ---------------------------------- | :----------------------: | :----------: | :------------------: | :------------------: |
| Remove nav/sidebar/footer          |     ✅ DOM tree prune     | ❌ full regex | ❌ Turndown full page | ⚠️ API/LLM dependent |
| Remove ads (link\_density scoring) |  ✅ ContentPruningFilter  |       ❌      |           ❌          |           ❌          |
| Clean search snippets              |             ✅            |       ❌      |           ❌          |           ❌          |
| Dedup multi-query results          |    ✅ URL+content hash    |       ❌      |           ❌          |           ❌          |
| Domain diversity sort              |    ✅ decay\_factor=0.8   |       ❌      |           ❌          |           ❌          |
| Drop low-relevance passages        | ✅ Reranker threshold 0.6 |       ❌      |           ❌          |           ❌          |

**평범한 언어:** 우리는 전체 페이지를 AI에 덤프하지 않습니다. 본문 텍스트를 추출하고, 광고와 탐색 기능을 제거하고, 중복을 제거하고, 질문과 일치하는 문구만 유지합니다.

### 제로 구성 비교(수정됨)

|                         | Myrm                                                            | Hermes                          |
| ----------------------- | --------------------------------------------------------------- | ------------------------------- |
| web\_fetch out of box   | ✅ **Local 3-tier + L4 Firecrawl v2 keyless**, no API key needed | ❌ Needs Firecrawl/Exa API key   |
| web\_search out of box  | ✅ GUI one-click SearxNG/DuckDuckGo                              | ⚠️ `hermes tools` + backend key |
| Smart long-page extract | ✅ fetch\_and\_extract (BM25+vector+Reranker)                    | ⚠️ LLM summary (costs tokens)   |

**Myrm은(는) 가져오기 시 구성이 더 필요하지 않습니다** — 정리는 클라우드 API 없이 로컬에서 작동합니다.

## 검색 충분성 가드(RSG)

**심층 검색** 모드에서 Myrm은 기본 LLM이 응답 작성을 시작하기 전에 검색된 콘텐츠가 사용자의 질문에 답변하기에 충분한지 자동으로 확인합니다.

### 작동 방식

각 `web_search` 또는 `web_fetch` 호출 후(`search_depth == "deep"`인 경우):

1. **경량 LLM**(구성된 `lite_model`)은 원래 쿼리에 대해 검색된 스니펫을 평가합니다.
2. 구조화된 결과를 반환합니다: 충분/불충분 + 누락된 측면 + 제안된 후속 쿼리
3. **부정적 제약 조건 위반**을 감지합니다(예: "React 제외"이지만 결과에 React 콘텐츠가 포함됨).
4. 결과는 기본 에이전트가 조치를 취할 수 있도록 도구 출력에 추가됩니다.

### 주요 디자인 선택

| Aspect     | Decision                         | Why                                                          |
| ---------- | -------------------------------- | ------------------------------------------------------------ |
| Activation | `deep` mode only                 | Normal search stays fast; deep search gets quality assurance |
| Model      | `lite_model_cfg` (Flash/Haiku)   | Keeps cost \< \$0.001/evaluation                             |
| Output     | JSON Schema enforced             | Reliable structured output even from local models            |
| Failure    | Fail-open (`is_sufficient=True`) | Never blocks the main workflow                               |
| Threshold  | `confidence >= 0.7` to pass      | Below threshold → treated as insufficient                    |

### 부정적인 제약 조건(고유 기능)

벡터 검색 및 BM25는 \*"React를 제외한 프레임워크 권장"\*과 같은 제외 기준을 처리할 수 없습니다. RSG는 이러한 제약 조건을 명시적으로 추출하고 그에 대한 결과를 확인합니다.

```
Query: "Compare backend frameworks, exclude Node.js"
Retrieved: Article mentioning Express.js (Node.js)
RSG verdict: negative_constraint_violations = ["contains Node.js/Express content"]
```

에이전트는 이 위반 사항을 확인하고 더 나은 필터링을 통해 다시 검색하는 방법을 알고 있습니다.

### 대 경쟁사

경쟁사(Hermes, OpenClaw, Claude Code, Perplexity)에는 동등한 검색 후 충분성 검사 기능이 없습니다. 그들은 충분한 정보가 있는지 판단하기 위해 기본 LLM에 전적으로 의존합니다. 이는 다음과 같은 이유로 신뢰할 수 없습니다.

1. LLMs는 데이터가 충분하지 않아도 자신 있게 대답하는 경향이 있습니다(환각).
2. 전용 평가자 없이는 명시적인 음수 제약 조건 검사가 불가능합니다.
3. 다음에 검색할 항목에 대한 체계적인 지침이 없습니다.

## PTC 통합

프로그래밍 방식 도구 호출 스크립트에서:

```python theme={null}
results = await tools.web_search("competitor pricing 2026", max_results=5)
page = await tools.web_fetch("https://example.com/pricing")
```

추가 API 왕복이 필요하지 않습니다. 검색 및 가져오기가 샌드박스 내에서 실행됩니다.

## 구성

1. **설정 → 검색** 열기 — 엔진 선택, API 키, SearxNG URL
2. 긴 문서의 정밀 모드에 대한 검색기 설정에서 **Reranker**를 활성화합니다.
3. **Web Fetch**는 즉시 작동합니다(브라우저 계층은 설치된 경우 Patchright를 사용함).

## 마이그레이션 팁

| From        | Action                                                                   |
| ----------- | ------------------------------------------------------------------------ |
| Hermes      | Import config; disable Firecrawl-only web\_extract; use local web\_fetch |
| OpenClaw    | Import config; remove manual Tavily/baidu Skills                         |
| Claude Code | Enable SearxNG for self-hosted search; configure same models via LiteLLM |

전체 마이그레이션 혜택을 보려면 [경쟁사 비교](/docs/getting-started/competitor-comparison#web-search--web-fetch--dual-engine-vs-hermes--openclaw--claude-code)를 참조하세요.
