AI 에이전트 셋업, 7번의 함정과 탈출 — ₩271,621 결제 폭탄에서 24시간 안에 월 $0까지
Gemini 무료라고 알고 쓰던 OpenClaw가 ₩271,621 청구서를 떨어뜨렸습니다. 그 후 24시간 동안 7번의 함정에 걸리며 셋업을 갈아탄 기록입니다. 결과는 월 $0 영구 운영. 무료라는 단어가 함정이 되는 순간을 데이터로 정리했습니다.
받은 영수증부터
2026년 4월 1일~25일 청구액: ₩271,621
2026년 4월 30일 예상 청구: ₩337,239
미납 상태 (카드 한도 초과)
OpenClaw — 24시간 돌아가는 자동화 에이전트 — 가 Gemini 3 Pro Preview API를 쓰면서 무료 한도를 진작에 초과한 결과입니다. 무료라고 들어서 안 끄고 둔 게 결제 폭탄으로 돌아왔습니다.
이 글은 그 폭탄이 떨어진 후 24시간 동안 7번의 함정을 차례로 밟으며 무료 셋업으로 옮겨간 기록입니다. 끝에는 월 $0로 동일 기능이 도는 셋업이 남았습니다.
함정 1 — "무료"라는 단어가 함정이었다
Google Cloud는 신규 가입 시 90일/$300 크레딧을 줍니다. 1월 가입 → 4월 3일에 만료. 만료된 이후에도 봇은 계속 돌고 있었기 때문에, 무료 한도 초과분이 자동으로 paid tier로 전환되어 청구가 시작됐습니다.
4월 3일: Google Cloud free trial 만료
4월 4일~25일: ₩271,621 누적 (24/7 봇 호출)
4월 26일: 카드 한도 초과 → 결제 실패
4월 26일: 프로젝트 자체 차단 (PERMISSION_DENIED)
"무료" = "무료 한도 안에서 무료"라는 걸 결제카드가 한 번 거절당하고 나서야 알았습니다.
함정 2 — API 비활성화로는 차단이 안 풀린다
출혈을 멈추기 위해 Google Cloud Console에서 Generative Language API를 Disable했습니다. 청구는 멈췄지만 — 미납 상태와 보안 플래그가 살아있어서 — API를 다시 켜도 호출이 모두 차단됐습니다.
이건 API 토글 문제가 아니라 결제 상태 문제입니다. 5월 10일 카드 한도 회복 후 결제해야 풀립니다. 그 전까지 Gemini는 못 씁니다.
함정 3 — 로컬 LLM으로 대피, 첫 모델이 Tools를 지원 안 했다
Ollama를 깔고 DeepSeek-R1 14B를 받았습니다. 추론 잘하는 14B 모델, 9GB 다운로드, 32초 응답 — 다 좋았습니다.
OpenClaw에 연결해보니 19초 안에 5번 retry 후 실패. 로그를 뜯어보니 매 retry가 1.2초만에 종료. 진짜 추론 시간이 아니라 모델이 즉시 거절 하고 있었던 겁니다.
원인:
deepseek-r1:14b → capabilities: ['completion', 'thinking']
qwen2.5:7b → capabilities: ['completion', 'tools']
DeepSeek-R1 distill 시리즈는 tools를 지원하지 않습니다. 추론은 하지만 tool calling을 못 합니다. OpenClaw 같은 에이전트 프레임워크는 tool calling이 핵심이라 즉시 실패합니다.
함정 4 — Ollama 기본 컨텍스트가 4K였다
Qwen 2.5 7B로 갈아탔습니다. tools 지원 ✅, 한국어 ✅, 응답 3초 ✅. 그런데 OpenClaw에서 또 실패. 이번엔 정확히 19.6초 timeout 패턴.
확인해보니:
qwen2.5:7b: context_length=4096
Ollama 기본 컨텍스트가 4096 토큰 이었습니다. OpenClaw는 시스템 프롬프트 + tool 정의 + 직전 대화를 합쳐 8,000~15,000 토큰을 모델에 보냅니다. 4K 모델에 15K 프롬프트를 넣으면 잘려서 모델이 혼란스러워합니다.
해결:
setx OLLAMA_CONTEXT_LENGTH 32768
환경변수 한 줄. Ollama 프로세스 재시작 후 context_length=32768 적용 확인.
함정 5 — Tool 호출 포맷 미스매치
컨텍스트 늘려도 OpenClaw에서 실패가 반복. 매 시도가 정확히 19.6초. agent loop 4번 retry 후 포기.
원인 추정: Qwen 2.5의 tool call 출력 JSON이 OpenClaw 파서가 기대하는 OpenAI 표준 포맷과 미묘하게 다릅니다. Ollama가 "tools 지원"이라고 보고는 하는데, 실제 응답 구조가 OpenClaw랑 안 맞습니다.
이건 Ollama 자체 문제는 아니고, OpenClaw가 어떤 모델 출력을 기대하느냐와 연결됩니다. 에이전트 프레임워크와 로컬 모델 사이의 호환성 layer가 아직 성숙하지 않은 영역입니다.
함정 6 — OpenClaw 카탈로그에 없는 모델은 못 쓴다
결국 OpenRouter의 무료 모델로 옮기기로 했습니다. OpenRouter는 결제카드 등록이 필요 없어서 결제 폭탄 위험이 0입니다. 한도 초과 시 그냥 차단되고 끝.
NVIDIA Nemotron 3 Super 120B (262k 컨텍스트, 한국어 native, tools 지원)로 시도 — OpenClaw 응답:
⚠️ Agent failed before reply: Unknown model
OpenClaw는 하드코딩된 모델 카탈로그 만 받습니다. OpenRouter API에는 있어도, OpenClaw 정적 리스트에 없으면 거부됩니다. 카탈로그에 등록된 free 모델 후보 6개를 직접 호출 테스트:
| 모델 | 결과 |
|---|---|
| qwen3-coder:free | rate-limit |
| gemma-3-27b:free | rate-limit |
| solar-pro-3:free | 무료 종료 |
| z-ai/glm-4.5-air:free | rate-limit |
| llama-3.3-70b:free | rate-limit |
| qwen3-next-80b:free | rate-limit |
| gpt-oss-120b:free | ✅ 작동 |
| gpt-oss-20b:free | ✅ 작동 |
새벽 시간 (UTC 04:00 = KST 13:00) 기준 가장 안정적으로 작동하는 무료 모델은 OpenAI가 푼 gpt-oss 시리즈였습니다. 120B로 정착.
함정 7 — 영어만 답한다
gpt-oss-120b가 작동하니 텔레그램 봇에 "안녕"을 보냈습니다. 응답:
I'm here and ready to help. What do you need assistance with?
영어로 옵니다. 모델이 OpenAI 출신이라 학습 데이터가 영어 위주입니다. OpenClaw 전체에 한국어 응답을 강제하려면 시스템 프롬프트를 손봐야 합니다.
OpenClaw는 매 호출마다 시스템 프롬프트를 자동 조립하는데, workspace/SOUL.md (페르소나 파일)이 자동 주입됩니다. 거기에 다음 룰을 박았습니다:
## Language — 한국어 우선 (HARD RULE)
- 기본 출력 언어 = 한국어
- "Hi", "I'm here", "Sure" 같은 영어 인사 금지
- 자연스러운 친구체 말투
- 코드/명령어/영문 고유명사는 영어 그대로
- 협상 불가 룰 — 모델 학습 편향과 무관하게 항상 한국어
OpenClaw가 SOUL.md 변경을 자동 감지하고 다음 호출부터 적용합니다. 게이트웨이 재시작 불필요.
테스트:
사용자: 안녕
봇: 안녕! 뭐 도와줄까?
사용자: 너 LLM 모델이 지금 뭐지?
봇: 현재 저는 OpenRouter의 gpt-oss-120b 모델을 사용하고 있습니다.
자연스러운 한국어. 영어 인사 사라짐. Tool 호출 정상.
최종 셋업
[텔레그램]
↓
[OpenClaw Gateway]
↓ Primary
[OpenRouter gpt-oss-120b:free] (월 $0)
↓ Fallback 1
[OpenRouter gpt-oss-20b:free] (월 $0)
↓ Fallback 2
[Ollama qwen2.5:7b] (로컬, 무제한)
+
[Brave Search] (월 2,000 쿼리 무료)
+
[SOUL.md] (한국어 강제 + 페르소나)
비용 변화
| 시점 | 월 비용 |
|---|---|
| Claude API + Gemini API (이전) | $400~500 |
| 현재 (OpenClaw 무료 + Claude Max) | $200 |
| 5/10 결제 정리 후 | $200 (변화 없음) |
월 $200~300 절감. 1년이면 ₩300만대 차이. 그리고 Gemini 같은 결제 폭탄 위험은 0.
무엇을 배웠는가
1. "무료"는 "무료 한도까지"라는 뜻이다
결제카드가 등록된 상태에서 무료 한도 초과는 자동 paid 전환을 의미합니다. 24/7 자동화 봇은 어떤 무료 한도든 빠르게 초과합니다. 결제 등록 + 24/7 자동화 = 청구서 함정.
해결: Cost Cap 즉시 설정 또는 결제 카드 미등록 서비스 (OpenRouter처럼 결제 안 받는) 사용.
2. 로컬 LLM은 만능이 아니다
DeepSeek-R1 = tools 미지원. Ollama 기본 컨텍스트 4K. Tool 출력 포맷 미스매치. 로컬 LLM이 이론적으로 좋아도, 에이전트 프레임워크와의 호환성 layer가 아직 미숙한 영역이 많습니다.
해결: 모델별 capabilities 확인 (/api/show), 컨텍스트 명시적 설정, OpenAI-compatible 출력 검증.
3. 다층 fallback이 진짜 안전망이다
Primary 한 개로 가면 그 모델이 다운/한도/폭증할 때 봇이 멈춥니다. 우리 셋업은 OpenRouter 2개 + 로컬 1개로 3중 안전망. Primary 다운 → Fallback → 로컬 → 어쨌든 응답 옴.
해결: 최소 2단계, 가능하면 3단계 fallback.
4. 시스템 프롬프트가 모델 편향을 이긴다
gpt-oss-120b는 영어 학습 편향이 강합니다. 그래도 SOUL.md 한 페이지 룰로 70~80% 한국어 자연성 회복. 모델을 못 바꾸면 프롬프트로 우회 가능.
해결: 페르소나 파일에 명시적 룰 박기 (HARD RULE 같은 강한 표현).
5. 에이전트 프레임워크는 모델보다 데이터 layer가 중요하다
OpenClaw가 24/7 하는 일의 실제 90%는 Python 코드 실행, CSV 파싱, 통계 계산입니다. LLM은 "어떤 명령을 실행할지 결정"만 합니다. 이 결정 작업은 Gemini 3 Pro Preview든 gpt-oss-120b든 차이가 거의 없습니다.
해결: 비싼 모델 = 큰 머리 작업 (전략, 한국어 깊이, 법률), 싼/무료 모델 = 자동화 / 실행 / 모니터링. 분업.
그래서 4/30 강의에서 보여줄 수 있는 것
이 사건 자체가 강의 자료가 됐습니다.
"AI 에이전트 운영의 진짜 비용 구조 — Gemini가 청구한 ₩27만"
"24시간 안에 월 $0 셋업으로 갈아타는 7가지 함정"
"OpenClaw + OpenRouter + Ollama 다층 fallback"
"SOUL.md 한 페이지로 모델 편향 우회하기"
"결제 카드 없는 LLM 운영 — 진짜 무료의 길"
라이브 데모도 가능합니다 — @WildEconForce_bot에 한국어로 묻기, 즉시 한국어 응답, 봇이 자기 모델/비용/셋업 설명. 이게 무료입니다.
다음 단계
- 5/10 미납 결제 → Gemini 프로젝트 정리
- 결제 수단 삭제 → 영구 청구 차단
- OpenRouter rate limit 변동 모니터링
- Local Ollama 모델 풀 관리 (이미지/Vision 모델 추가 검토)
- Mac mini 64GB 검토 (6개월 후) — 70B 모델 로컬 운영 시점
받은 영수증을 신뢰합니다. ₩271,621은 비싼 수업료였지만, "무료의 함정"이라는 챕터를 통째로 배웠습니다. 다음 프로젝트에선 첫날부터 Cost Cap을 깔겠습니다.