PSA: OpenCode의 무료 DeepSeek V4.1 Flash가 유료 Go 티어와 동일한 1M 컨텍스트 윈도우를 가진 것으로 보임 — 경계값 테스트 완료
PSA: OpenCode’s free DeepSeek V4.1 Flash appears to have the same ~1M context window as the paid Go tier — I tested the boundary
핵심 요약
OpenCode의 무료 모델 컨텍스트 제한이 실제로는 유료 모델과 동일한 1M임을 테스트를 통해 확인했습니다.
- 컨텍스트 제한 테스트 — 무료 티어의 200k 제한이 단순 메타데이터임을 확인함
- 성능 비교 분석 — 무료와 유료 티어 간 지연 시간 및 처리량 차이가 거의 없음
- 결과 동일성 — 두 모델의 출력값이 바이트 단위까지 완전히 일치함
- 사용 주의사항 — 무료 모델은 언제든 정책이 변경될 수 있으므로 주의 필요
OpenCode 모델 메타데이터에서 좀 이상한 점을 발견했다:
-
opencode/deepseek-v4.1-flash-free: 200k 컨텍스트 -
opencode-go/deepseek-v4.1-flash: 1M 컨텍스트
둘 다 동일한 표준 모델인 deepseek/deepseek-v4.1-flash를 가리키고 있어서, 무료 버전의 200k 제한이 실제로 추론 백엔드에서 강제로 적용되는 건지, 아니면 그냥 OpenCode 카탈로그 메타데이터일 뿐인지 확인해보고 싶었다.
결론부터 말하면 그냥 메타데이터인 것 같다.
테스트 내용
OpenCode 자체가 200k에서 압축하지 않도록 opencode.json에서 무료 모델의 로컬 컨텍스트 제한을 일시적으로 해제했고, 그 상태에서 점점 더 큰 생성 텍스트 파일들을 두 모델에 다 돌려봤다.
이 설정 변경은 OpenCode의 로컬 예산/압축 방식만 건드리는 거지, 서버에서 실제로 강제하는 제한을 바꾸는 건 아니다.
경계 테스트 결과:
| Approx. message size | Free | Paid Go |
|---|---|---|
| ~982k tokens | ✅ OK | ✅ OK |
| ~1.037M tokens | ✅ OK | ✅ OK |
| ~1.107M tokens | ❌ HTTP 400 | ❌ HTTP 400 |
보시다시피 두 버전 모두 무료 티어 제한이라던 200k를 가뿐히 넘겼고, 결국 똑같은 벽에 부딪혔다.
OpenCode 게이트웨이가 제한에 걸리면 빈 400 바디를 반환하는 바람에, DeepSeek API로 직접 과도한 요청을 보내봤다.
그랬더니 유의미한 응답이 돌아왔다.
This model's maximum context length is 1048576 tokens.
즉, 실제 모델의 한계치는 **1,048,576 토큰(2²⁰)**이다.
OpenCode가 유료 모델을 "1M"이라고 부르는 것과 거의 완벽하게 일치한다.
무료 vs 유료 성능 비교
테스트 환경을 이미 만들어둔 김에 두 티어를 비교해봤다.
대용량 컨텍스트 지연 시간:
| Input | Free | Paid |
|---|---|---|
| ~982k | 26.0s | 25.2s |
| ~1.037M | 37.1s | 32.6s |
이건 단일 샘플이라 작은 차이에 큰 의미를 둘 필요는 없을 듯하다. 둘 다 대략 30~40k tok/s 프리필(prefill) 클래스에 속한다.
