피드로 돌아가기
Run OpenAI Codex CLI on Claude, Gemini, or Llama — in 50 lines of C#
Dev.toDev.to
AI/ML

50라인 C# 스크립트로 Codex CLI의 전용 API 제약을 극복한 멀티 LLM 브릿지 설계

Run OpenAI Codex CLI on Claude, Gemini, or Llama — in 50 lines of C#

Jung Hyun, Nam2026년 5월 26일10intermediate

Context

OpenAI Codex CLI가 Responses API 전용으로 업데이트되며 Chat Completion 기반의 타 LLM 및 로컬 모델 연동이 불가능한 상태임. 특정 벤더 종속적인 Wire Format으로 인해 Ollama, Llama 등 범용 모델을 활용한 에이전트 UX 사용에 병목 발생.

Technical Solution

  • Microsoft.Extensions.AI의 IChatClient 추상화를 통한 벤더 중립적 LLM 인터페이스 계층 구축
  • Codex CLI의 model_provider 설정과 wire_api = "responses" 옵션을 활용한 커스텀 HTTP 엔드포인트 설계
  • Cadenza.Agent SDK를 도입하여 .NET 10 파일 기반 프로그램(Single-file script) 형태로 서버를 경량화하여 배포
  • OpenRouter API를 백엔드로 연결하여 단일 API 키로 Claude 3.5 Sonnet, Gemini 등 다양한 모델을 동적 교체 가능하게 구현
  • CODEX_HOME 환경 변수를 이용한 로컬 설정 격리 구조를 설계하여 글로벌 설정 변경 없이 독립적인 런타임 환경 제공
  • POST /v1/chat/completions와 /v1/responses 두 가지 엔드포인트를 동시 노출하여 다양한 에이전트 도구와의 호환성 확보

- 특정 API 규격에 종속된 클라이언트를 위해 추상화 인터페이스 기반의 어댑터 서버 구축 검토 - .NET 10+의 파일 기반 스크립팅을 활용하여 복잡한 프로젝트 설정 없이 경량 프록시 서버 구현 - 글로벌 설정 파일 수정 대신 환경 변수를 통한 설정 경로 분리로 개발 환경의 격리 및 재현성 확보 - LLM 백엔드 교체 시 IChatClient와 같은 표준 인터페이스를 도입하여 벤더 락인(Vendor Lock-in) 방지

원문 읽기