You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(sidecar): add Exa and other search providers as web-search sidecar backends #414
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
Extend webSearchSidecar.backend beyond openai|anthropic (e.g. exa), with the provider's API key/credential wiring.
A new executor sibling to src/web-search/executor.ts / anthropic-executor.ts that adapts Exa's search API into the same SidecarOutcome shape.
현재 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 백엔드는 없습니다.
Activity
lidge-jun commentedon Aug 19, 2026
리뷰 · 우선순위 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이 작성했습니다
lidge-jun commentedon Aug 20, 2026
이 이슈는 #2188로 합침. 백엔드를 하나씩 더하는 대신, 전역 auth 슬롯 + Codex 피커 거름망 + (웹서치는 라이브 프로브)로 선택 규칙을 먼저 고친다. 후속 구현은 #2188을 보면 됨.