콘텐츠로 이동
OmniRoute source

OpenCode Integration (한국어)

경로 1 — CLI 생성기(npm 설치 불필요)

섹션 제목: “경로 1 — CLI 생성기(npm 설치 불필요)”

최종 사용자에게 권장됩니다. OmniRoute와 함께 제공되며 기존 위치에 opencode.json을 작성합니다.

터미널 창
# OmniRoute 설치 후(npm i -g @omniroute/cli 또는 로컬 clone)
omniroute config opencode \
--base-url http://localhost:20128 \
--api-key "$OMNIROUTE_API_KEY"

내부적으로 CLI는 mergeOpenCodeConfigText()(src/shared/services/opencodeConfig.ts:104)를 호출하므로 기존 opencode.json의 다른 provider와 주석이 유지됩니다. OmniRoute 항목은 원자적으로 추가되거나 교체됩니다.

생성되는 파일(기본 model 카탈로그):

{
"$schema": "https://opencode.ai/config.json",
"provider": {
"omniroute": {
"npm": "@ai-sdk/openai-compatible",
"name": "OmniRoute",
"options": {
"baseURL": "http://localhost:20128/v1",
"apiKey": "<your-key>",
},
"models": {
"claude-opus-4-5-thinking": { "name": "claude-opus-4-5-thinking" },
"claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" },
"gemini-3.1-pro-high": { "name": "gemini-3.1-pro-high" },
"gemini-3-flash": { "name": "gemini-3-flash" },
},
},
},
}

경로 2 — npm package @omniroute/opencode-provider

섹션 제목: “경로 2 — npm package @omniroute/opencode-provider”

Node/TS에서 config를 스크립트로 생성하는 경우(CI pipeline, monorepo, 사용자 지정 installer flow) 권장됩니다.

터미널 창
npm install --save-dev @omniroute/opencode-provider
import { writeFileSync } from "node:fs";
import { buildOmniRouteOpenCodeConfig } from "@omniroute/opencode-provider";
const config = buildOmniRouteOpenCodeConfig({
baseURL: "http://localhost:20128",
apiKey: process.env.OMNIROUTE_API_KEY ?? "sk_omniroute",
// 선택 사항: OpenCode에 노출되는 model 카탈로그 재정의
models: ["auto", "claude-opus-4-7", "gpt-5.5"],
modelLabels: { auto: "Auto-Combo" },
});
writeFileSync("opencode.json", JSON.stringify(config, null, 2));

기존 파일에 비파괴 방식으로 병합하려면 opencodeConfig.ts의 mergeOpenCodeConfigText()를 재현하거나 CLI 생성기를 호출하세요.

전체 API는 package README를 참조하세요.


runtime에서 실제로 수행되는 작업

섹션 제목: “runtime에서 실제로 수행되는 작업”

두 경로 모두 동일한 provider.omniroute.npm: "@ai-sdk/openai-compatible"을 생성합니다. runtime에서 OpenCode는 @ai-sdk/openai-compatible(이미 OpenCode의 transitive dependency)을 로드하고 baseURL + apiKey로 구성합니다. 이후 흐름은 다음과 같습니다.

OpenCode UI/agent
→ @ai-sdk/openai-compatible
→ HTTP POST {baseURL}/chat/completions (OmniRoute OpenAI 인터페이스)
→ OmniRoute /v1/chat/completions handler (open-sse/handlers/chatCore.ts)
→ combo routing / Auto-Combo / executor
→ upstream provider

plugin은 HTTP를 전혀 처리하지 않습니다. 오직 configuration만 생성합니다.


export const OMNIROUTE_DEFAULT_OPENCODE_MODELS = [
"claude-opus-4-5-thinking",
"claude-sonnet-4-5-thinking",
"gemini-3.1-pro-high",
"gemini-3-flash",
] as const;

models: [...]를 통해 재정의할 수 있습니다. 권장 추가 항목:

  • "auto" — OmniRoute의 Auto-Combo 무설정 라우터를 표시합니다. 카탈로그를 하드 코딩하지 않아도 OpenCode가 “사용 가능한 최적의 모델”을 선택할 수 있습니다.
  • "<combo-name>" — 대시보드에서 정의한 임의의 콤보입니다. OmniRoute가 이를 투명하게 해석합니다.

헬퍼는 두 형식을 모두 허용하며 정확히 하나의 /v1을 생성합니다:

입력 출력 (options.baseURL)
http://localhost:20128 http://localhost:20128/v1
http://localhost:20128/ http://localhost:20128/v1
http://localhost:20128/v1 http://localhost:20128/v1
http://localhost:20128/v1/// http://localhost:20128/v1

이 중복 제거 문제는 이전 구성에서 나타나는 가장 흔한 오류입니다. v3.8.0 이전에 생성되었으며 /v1/v1/...을 가리키는 opencode.json이 있다면 생성기를 다시 실행하거나 createOmniRouteProvider를 다시 호출하세요.


OmniRoute 설정 권장 apiKey 값
REQUIRE_API_KEY=false (로컬 환경의 기본값) sk_omniroute (리터럴 자리 표시자)
REQUIRE_API_KEY=true 대시보드 → API 키에서 발급한 실제 사용자별 API 키입니다.

x-api-key와 anthropic-version을 전송하는 Anthropic 스타일 클라이언트의 경우, OmniRoute의 extractApiKey는 x-api-key의 키도 인식합니다. OpenCode는 OpenAI 인터페이스를 사용하므로 항상 Authorization: Bearer ${apiKey}를 전송합니다. 따라서 여기에는 Anthropic 관련 특수 처리가 적용되지 않습니다.


증상 원인 해결 방법
/v1/v1/이 포함된 URL의 모든 요청에서 404 발생 /v1을 이중으로 추가하던 v3.8 이전 플러그인의 오래된 구성입니다. 경로 1 또는 2를 통해 다시 생성하세요.
401 Invalid API key OmniRoute에서 REQUIRE_API_KEY=true로 설정되어 있으며 키를 인식할 수 없습니다. 대시보드에서 키를 생성하거나 REQUIRE_API_KEY=false로 설정한 후(로컬 전용) sk_omniroute를 사용하세요.
OpenCode UI에서 모델 목록이 비어 있음 4개의 기본 모델이 모두 OmniRoute의 제공자 표시 설정에서 숨겨져 있습니다. 활성화한 모델을 표시하려면 models: ["auto", ...]를 전달하세요.
cannot read property 'models'와 함께 OpenCode 500 발생 이전 OpenCode(< 0.1.x)는 인라인 models를 허용하지 않았습니다. v1 스키마(opencode.ai/config.json)를 따르는 버전으로 OpenCode를 업그레이드하세요.


OmniRoute 소스 코드 (a58000c7685f)

HagiCode

HagiCode는 구조화된 워크플로, 다중 에이전트 실행, Hero Dungeon 뷰를 갖춘 에이전트 코딩 작업 공간입니다.

더 스마트하고 빠르며 즐거운 에이전트 워크플로로 유용한 소프트웨어를 만드세요.

HagiCode 라이트 테마 메인 화면
  • Smart구조화된 워크플로는 의도를 아이디어부터 배포까지 실행 가능한 경로로 바꿉니다.
  • Efficient다중 에이전트 워크플로로 조사, 구현, 검토를 병렬로 진행합니다.
  • FunHero Dungeon은 긴 코딩 세션을 시각적이고 협업적인 경험으로 만듭니다.
HagiCode 방문