프로젝트 소개

opencode2api는 OpenCode Zen과 Zen Go를 위한 Go 게이트웨이입니다. Chat Completions, Responses, Anthropic Messages 엔드포인트를 노출하고, 각자의 네이티브 프로토콜 간 변환을 수행하면서 업스트림 키와 프록시를 관리합니다. 실행 파일에는 WebUI가 포함되어 있으며 Node.js 런타임이나 데이터베이스가 필요하지 않습니다. 기능으로는 세 가지 추론 프로토콜 모두에서 JSON 및 SSE 응답, 텍스트, 이미지, 추론, 함수 도구, 도구 호출, 도구 결과 지원, 구성 가능한 티어 선호도가 있는 별도의 Zen 및 Go 키 풀, 재시도, 세션 어피니티, 선택적 익명 Zen 액세스, 직접/HTTP/HTTPS/SOCKS5/SOCKS5H 프록시 지원, 디스크 캐시를 사용한 동적 모델 검색, 구성 편집이 가능한 별도 관리 포트, Playground, 진단, 토큰 통계, 실시간 로그, 검증이 포함된 구성 핫 리로드가 있습니다. 빠른 시작: GitHub Releases에서 바이너리를 다운로드하거나 Go 1.24+로 빌드하세요. config.json을 편집하여 server_keys, Zen/Go 키(또는 익명 활성화), WebUI 비밀번호를 설정하세요. `./opencode2api -config config.json`으로 실행하세요. Docker 이미지는 ghcr.io/jasonxu114514/opencode2api에서 사용할 수 있으며 docker compose를 지원합니다. API 엔드포인트에는 GET /v1/models, POST /v1/chat/completions, POST /v1/responses, POST /v1/messages, GET /healthz가 포함됩니다. 인증은 Bearer 또는 x-api-key 헤더를 통한 로컬 server_keys를 사용합니다. `stream: true`로 스트리밍이 지원됩니다. 게이트웨이는 임베딩, 파일 업로드, 이미지 생성, Responses 검색/취소를 구현하지 않으며 대화 기록을 저장하지 않습니다. 라우팅은 업스트림 /v1/models 및 OpenCode의 기능 카탈로그에서 모델 검색을 사용하며, 프로토콜 재정의가 가능합니다. 익명 액세스는 ID에 'free'가 포함되거나 비용이 0인 비지원 중단 모델에 대해 활성화됩니다. 라우팅 순서는 익명 프록시를 먼저 시도한 다음, 선호 순서대로 인증된 티어를 시도하며, 티어별로 재시도합니다. 세션 어피니티는 명시적 세션 ID 또는 첫 번째 사용자 메시지를 기반으로 한 안정적인 해시를 사용합니다. 구성은 키, 리스너, 라우팅 기본 설정, 추론 노력(모델별 재정의 포함), 프록시(인라인 목록 및 proxyfile), 타임아웃, 연결 풀, 로깅, WebUI 설정을 다룹니다. WebUI는 구성 센터, Playground, 진단, 모니터링, 실시간 로그를 제공합니다. 관리 API 경로는 인증, 구성 검색/업데이트, 리로드, 비밀 공개, 계정 업데이트, 모니터링 통계, 모델 진단, 추론 테스트, 로그를 처리합니다. 모니터링은 요청 결과, 업스트림 시도, 토큰 사용량, 리소스 통계를 추적합니다. 데이터 지속성에는 구성 파일, 백업, 모델 캐시가 포함되며, 세션과 메트릭은 메모리에 저장됩니다. 상태 확인은 카탈로그 가용성과 프록시 상태를 기반으로 준비 상태를 보고합니다. 개발에는 Go 1.24+가 필요하며 표준 Go 도구를 사용합니다.