Community연구 & 데이터 분석github.com

모델 레이더 (Model Radar)

OpenRouter에서 LLM 모델을 선택하기 위해 자연어 제약 조건을 토큰:값 인자로 변환하고, 캐시된 모델 메타데이터 및 순위를 기반으로 JSON을 생성하여 마크다운 테이블로 렌더링하는 AI 에이전트 스킬입니다.

모델 레이더 (Model Radar)란 무엇인가요?

**모델 레이더 (Model Radar)**는 AI 에이전트(Claude Code, Cursor, Codex CLI 등)를 위한 커뮤니티 스킬로, OpenRouter의 공개 모델 카탈로그를 효율적으로 탐색하고 비교할 수 있게 해줍니다. 사용자가 "예산 10달러 이하", "코딩 에이전트 추천", "128k 컨텍스트, 툴 사용 가능" 같은 자연어 요청을 하면, 이 스킬은 이를 `price:..10`, `recommend preset:coding`, `ctx:128k cap:tool_use` 같은 정형화된 토큰 인자로 변환합니다. 그런 다음 캐시된 모델 메타데이터와 인기/처리량/지연 시간 순위에 대해 필터링, 정렬, 추천 또는 비교를 수행하고, 결과를 JSON으로 출력합니다. AI 에이전트는 이 JSON을 받아 마크다운 테이블로 렌더링하여 사용자에게 보여줍니다. 이 스킬은 Node.js 18+에서 의존성 없이 실행되며, 자체 업데이트(self-update) 기능을 통해 GitHub의 최신 버전을 자동으로 유지합니다. OpenRouter의 비공식 프론트엔드 API를 사용하지만, 네트워크 오류 시에는 스테일 캐시로 폴백하여 오프라인 환경에서도 기본적인 응답이 가능합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add primexiao/agent-skills

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

모델 레이더

OpenRouter 모델 선택 CLI입니다. 자연어 제약 조건을 token:value 인자로 파싱하고, 모델 메타데이터 + 순위의 로컬 캐시를 조회한 후, 에이전트가 마크다운 테이블로 렌더링할 수 있는 JSON을 출력합니다.

설정

  • 런타임: Node.js 18+ (설치 단계 불필요, npm 의존성 없음)
  • API 키 불필요 — OpenRouter 공개 엔드포인트 사용
  • 모든 명령어는 이 스킬 디렉토리(이 파일이 있는 디렉토리)에서 실행
  • 첫 실행 시 네트워크에서 캐시를 채움; 이후 호출은 로컬 캐시 사용 (모델 TTL 6시간, 순위 TTL 24시간)
  • 자체 업데이트는 기본적으로 활성화됩니다. 각 CLI 실행 시 고정된 GitHub 소스를 최대 24시간에 한 번 확인하고, 설치된 복사본에 대해 자동으로 업데이트를 적용합니다. 비활성화하려면 MODEL_RADAR_AUTO_UPDATE=0을 설정하세요.

워크플로우

  1. 스킬을 사용하기 전에 node scripts/self-update.js auto를 실행합니다. stderr에 MODEL_RADAR_UPDATED가 출력되면 계속 진행하기 전에 이 SKILL.md를 다시 읽으십시오.
  2. 사용자의 요청을 아래 의도 → 토큰 매핑을 사용하여 token:value 인자로 파싱합니다.
  3. 명령어를 선택합니다: list (필터+정렬), recommend (프리셋에 대한 가중치 점수), compare (나란히 비교)
  4. 스킬 디렉토리에서 실행합니다. scripts/main.js는 자체 업데이트 사전 점검도 자동으로 수행하므로, 직접 CLI를 사용해도 최신 상태를 유지합니다.
  5. JSON 출력을 마크다운 테이블로 렌더링합니다 (출력 참조).
  6. {fetched_at} 기준 데이터로 마무리하고, 12시간보다 오래된 경우 refresh를 제안합니다.

명령어

node scripts/main.js list      [tokens...]    # 필터 + 정렬
node scripts/main.js recommend [tokens...]    # 프리셋에 대한 가중치 점수
node scripts/main.js compare   <id|name>...   # 나란히 비교
node scripts/main.js refresh                  # 두 캐시 모두 강제 새로고침
node scripts/self-update.js status            # 업데이트 상태 확인
node scripts/self-update.js check             # GitHub 업데이트 확인
node scripts/self-update.js apply             # 최신 스킬 업데이트 적용

자체 업데이트

  • 소스는 package.json.repository: primexiao/agent-skills, 경로 skills/model-radar로 고정됩니다.
  • 설치된 복사본은 자동으로 업데이트됩니다. 소스 체크아웃은 MODEL_RADAR_AUTO_UPDATE_SOURCE=1이 설정되지 않는 한 자동 업데이트를 건너뜁니다.
  • 스킬 디렉토리 아래에 로컬에서 커밋되지 않은 변경 사항이 있으면 자동 업데이트가 건너뜁니다.
  • scripts/main.js를 직접 사용하면 성공적인 자체 업데이트 후 현재 명령어를 다시 시작하여 업데이트된 코드로 결과가 생성되도록 합니다.
  • 업데이트는 임시 체크아웃을 사용하고, 필수 파일을 검증하며, 현재 스킬을 백업하고, 런타임 파일이 아닌 파일을 교체한 후, 실패 시 롤백합니다.
  • 성공적인 업데이트는 cache/raw.json, cache/models.json, cache/rankings.json을 삭제하여 새 코드가 이전 데이터 캐시와 혼합되지 않도록 합니다.
  • 자체 업데이트 상태 및 경고는 stderr로 전송됩니다. 명령어 JSON은 stdout에 남습니다.

토큰 문법

Tailwind에서 영감을 받은 위치 기반 token:value 인자입니다. 순서는 중요하지 않습니다.

토큰의미값 형식예제
sort정렬 차원프리셋 단어 (아래 참조)sort:cheap sort:popular
price$/MTok 블렌드..최대 / 최소.. / 최소..최대 / 단독=최대price:..10 price:5..20
ctx컨텍스트 길이동일, k/m 접미사, 단독=최소ctx:128k ctx:128k..1m
out최대 출력 토큰 수동일, 단독=최소out:32k
cap기능 (AND)쉼표로 구분cap:tool_use,reasoning
in입력 모달리티 (AND)쉼표로 구분in:image in:audio,image
gen출력 모달리티 (AND)쉼표로 구분gen:image gen:audio
open오픈소스 필터true / falseopen:true
top결과 개수 제한숫자 (기본값: list=20, recommend=3)top:5
preset점수 프리셋 (recommend만)프리셋 이름preset:coding

sort 값: cheap expensive new (기본값) ctx popular throughput latency

기능: tool_use reasoning structured_output vision long_output prompt_caching web_search audio_input video_input file_input image_generation audio_output

입력 모달리티: text image audio video file 출력 모달리티: text image audio

추천 프리셋: coding batch chat vision (가중치 및 필수 기능은 config/presets.json 참조)

의도 → 토큰

사용자 말토큰
"예산 $X" / "$X 이하"price:..X
"최소 $X" / "프리미엄 티어"price:X..
"최소 Nk 컨텍스트"ctx:Nk
"툴 사용 / 비전 / 추론 필요"cap:tool_use / cap:vision / cap:reasoning
"구조화된 출력" / "JSON 모드"cap:structured_output
"오디오 / 이미지 입력 가능"in:audio / in:image
"이미지 / 오디오 생성 가능"gen:image / gen:audio
"오픈소스만"open:true
"가장 저렴한" / "가장 합리적인"sort:cheap
"가장 인기 있는" / "트렌딩"sort:popular
"최신" / "최근"sort:new
"가장 빠른" / "가장 낮은 지연 시간"sort:latency
"가장 높은 처리량"sort:throughput
"코딩 에이전트"recommend preset:coding
"배치 / 대량 작업"recommend preset:batch
"비전 에이전트"recommend preset:vision

모델 매칭 (compare)

compare의 각 인자에 대한 매칭 우선순위:

  1. 정확한 id — anthropic/claude-sonnet-4-5
  2. 접미사 정확 일치 — claude-sonnet-4 → anthropic/claude-sonnet-4 (절대 -fast 변형 아님)
  3. 부분 문자열 id/name에서, 최신 릴리스 우선 — claude-sonnet → 최신 Sonnet

출력

항상 JSON 출력을 마크다운 테이블로 렌더링합니다 — 테이블이 기본 표시 형식입니다.

list

| # | 모델 | $/MTok (P/C/Blend) | Ctx | 출력 | 기능 | 순위# |
  • $/MTok: 프롬프트 / 완성 / 블렌드 가격
  • 기능: 짧은 태그 (tool reason vision …)
  • 순위#: 순위 캐시가 최신이면 인기 순위, 그렇지 않으면 —

recommend

| 순위 | 모델 | 점수 | 가격↑ | Ctx↑ | 출력↑ | 기능↑ | $/MTok | 기능 |

모델당 한 줄의 근거를 추가합니다. 점수 및 각 차원 점수는 [0, 1] 범위입니다.

compare

세로 테이블 — 모델당 한 열, 차원당 한 행:

| 차원             | 모델 A | 모델 B | 모델 C |
| ---------------- | ------- | ------- | ------- |
| 가격 (P/C/Blend)  |   …     |   …     |   …     |
| 컨텍스트            |   …     |   …     |   …     |
| 최대 출력         |   …     |   …     |   …     |
| 입력 모달리티   |   …     |   …     |   …     |
| 출력 모달리티  |   …     |   …     |   …     |
| 기능       |   …     |   …     |   …     |
| 인기 순위    |   …     |   …     |   …     |
| 주간 요청    |   …     |   …     |   …     |

항상 다음으로 마무리: {fetched_at} 기준 데이터. 12시간보다 오래된 경우, node scripts/main.js refresh 실행을 제안합니다.

캐싱

cache/
  raw.json       — OpenRouter 프론트엔드 카드 데이터를 로컬 원시 스키마로 변환 (TTL 6시간)
  models.json    — 확장됨: 정규화된 가격 + 기능 레이블 (TTL 6시간)
  rankings.json  — 인기 / 처리량 / 지연 시간 + 사용량 분석 (TTL 24시간)
config/
  presets.json
  tier1-categories.json
  • 캐시 파일은 cache/ 아래에 있으며 커밋되지 않습니다 — 첫 실행 시 네트워크에 접속합니다.
  • TTL이 만료되면 CLI는 10초 타임아웃으로 다시 가져옵니다.
  • 가져오기 실패 시, 스테일 캐시로 폴백하고 stderr에 [warn]을 출력합니다. 따라서 읽기 전용/오프라인 샌드박스에서도 (아마도 스테일된) 응답을 할 수 있습니다.
  • 성공적인 스킬 자체 업데이트는 모델 데이터 캐시 파일을 삭제합니다. 다음 모델 명령어가 다시 채웁니다.

샌드박스 참고 사항

  • Codex CLI: -s workspace-write (CLI가 cache/에 쓰기) 및 openrouter.ai로의 네트워크 이그레스가 필요합니다. TTL 내에서는 네트워크 호출이 없습니다.
  • 새 체크아웃에서의 첫 호출은 엄격하게 네트워크가 필요한 유일한 경우입니다.
  • 자체 업데이트는 이 스킬 디렉토리에 대한 파일 시스템 쓰기 액세스와 GitHub에 대한 네트워크 액세스가 필요합니다. 사용할 수 없으면 경고를 출력하거나 건너뛰고, 모델 명령어는 현재 로컬 복사본으로 계속 실행됩니다.

알려진 문제

  • OpenRouter 프론트엔드 API (/api/frontend/v1/models/find?active=true&fmt=cards)는 비공식입니다. 실패하면 CLI는 사용 가능한 경우 스테일 캐시로 폴백하고 [warn]을 출력합니다.

데이터 소스

  • 모델: https://openrouter.ai/api/frontend/v1/models/find?active=true&fmt=cards
  • 순위: order=top-weekly, order=throughput-high-to-low, order=latency-low-to-high를 사용한 동일한 엔드포인트

관련 스킬