Skip to content

feat(sidecar): add Exa and other search providers as web-search sidecar backends #414

Closed as not planned

Description

@lidge-jun

Follow-up split from #398.

Context

The web-search sidecar backend is currently fixed to openai (ChatGPT forward) or anthropic (stored OAuth) — see src/web-search/index.ts (resolveSidecarBackend) and OcxWebSearchSidecarConfig in src/types.ts. When the main routed model is a non-OpenAI/Anthropic provider, search turns must borrow one of those two accounts; if that account is limit-exhausted the search degrades (now within ~60s after #398) but the user still cannot point search at a provider they actually have quota on.

Ask

Add pluggable search-provider backends so the sidecar can run server-side search on providers beyond OpenAI/Anthropic, starting with Exa (https://exa.ai) which exposes a first-class search API. This decouples "which account backs search" from the two hardcoded values.

Scope sketch

Out of scope

The 499/502 graceful-degradation fix itself (landed for #398).

Activity

  1. added
    account-poolOAuth, credentials, Codex pool, quota, failover, plans
    toolstool_calls, MCP, web-search / sidecar tools
    on Aug 1, 2026
  2. added
    providerProvider adapters, OpenAI-compat presets, upstream API quirks
    on Aug 3, 2026
  3. lidge-jun commented on Aug 19, 2026

    @lidge-jun
    OwnerAuthor

    리뷰 · 우선순위 47 / 80

    현재 dev에서 웹검색 사이드카는 ChatGPT forward(openai) 또는 저장된 Anthropic OAuth(anthropic)만 고릅니다. resolveSidecarBackend()와 OcxWebSearchSidecarConfig가 그 합입니다. exa 백엔드, Exa executor, Exa API 키 배선은 검색되지 않습니다. 주 모델이 DeepSeek나 Gemini여도 검색은 두 계정 중 하나를 빌려야 하고, 그 계정이 한도면 #398 기한 안에 내려갑니다.

    이슈가 원하는 것은 검색 계정과 하드코딩 두 값을 분리하는 플러그형 백엔드입니다. Exa(https://exa.ai)가 첫 후보이고, 검색 API를 기존 SidecarOutcome으로 맞추면 됩니다. #398의 유계 기한, 레드액션된 오류, fail-open 도구 결과는 유지해야 합니다. 499/502 완화 자체는 이 이슈 범위가 아닙니다.

    프로바이더 호환과 위생이 점수입니다. 새 executor는 src/web-search/executor.ts / anthropic-executor.ts의 형제여야 하고, 본문 페이로드를 로그에 남기면 안 됩니다. Windows/서비스에서 추가 HTTP 출구는 proxy/NO_PROXY와 사설망 정책을 타야 합니다. 키는 다른 프로바이더 키와 같은 저장 규칙을 따라야 합니다.

    #415는 LLM 네이티브 검색 우산이고 이 이슈의 자식이 아닙니다. Exa 작업이 Gemini 그라운딩을 기다리면 안 됩니다. 전용 검색 벤더는 인용 계약이 더 뚜렷합니다.

    해결방안은 backend 유니온에 exa를 추가하고, Exa 검색 응답을 text+sources로 정규화하며, 자격 증명이 없을 때 지금과 같이 우아하게 실패하는 것입니다. 패치는 추측하지 않으며, 현재 트리에 Exa 백엔드는 없습니다.

    이 댓글은 grok-bot이 작성했습니다

  4. lidge-jun commented on Aug 20, 2026

    @lidge-jun
    OwnerAuthor

    이 이슈는 #2188로 합침. 백엔드를 하나씩 더하는 대신, 전역 auth 슬롯 + Codex 피커 거름망 + (웹서치는 라이브 프로브)로 선택 규칙을 먼저 고친다. 후속 구현은 #2188을 보면 됨.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

account-poolOAuth, credentials, Codex pool, quota, failover, plansenhancementNew feature or requestproviderProvider adapters, OpenAI-compat presets, upstream API quirkstoolstool_calls, MCP, web-search / sidecar tools

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions