API 비용 0원, 코드 외부 전송 없음. RTX 4090 한 장으로 프론티어급 코딩 에이전트를 로컬에서 돌립니다.
[핵심 요약]
이 글에서는 vLLM으로 로컬 서버를 띄우고, Aider(CLI 코딩 에이전트), Continue.dev(VS Code 인라인 어시스턴트), Cursor(에이전트 모드), Qwen Code(Claude Code 대안) 순서로 연동하는 방법을 다룹니다. CUDA 13.2 버그, Thinking 모드 제어, Ollama 미지원 주의사항까지 포함합니다.
왜 로컬인가
클라우드 API 방식은 토큰당 비용이 누적됩니다. Claude Opus 4.7은 입력 $5, 출력 $25 per 1M tokens이고, GPT-5.5는 입력 $5, 출력 $30입니다. 비용 외에도 코드가 외부 서버로 전송된다는 점에서 GDPR이나 사내 보안 규정에 걸릴 수 있습니다.
Qwen3.6-27B 로컬 방식은 초기 모델 다운로드 이후 추가 비용이 없고, 코드가 외부로 나가지 않으며 인터넷 없이도 사용할 수 있습니다. SWE-bench Verified 기준 77.2%로 Claude Opus 4.6 대비 3.6점 차이입니다. 월 1억 토큰 이상 사용하거나 보안상 코드를 외부로 보낼 수 없는 환경이라면 로컬 서빙이 경제적으로 압도적입니다.
실전 1 — 로컬 서버 띄우기 (vLLM)
모든 연동 툴의 기반이 되는 OpenAI 호환 API 서버를 먼저 띄워야 합니다. vLLM 0.19.0 이상이 필수이며, 이후 Aider, Continue.dev, Cursor, Qwen Code 모두 이 엔드포인트에 붙는 구조입니다.
# 1. vLLM 설치 (0.19.0 이상 필수)
pip install "vllm>=0.19.0" --torch-backend=auto
# 2. 모델 다운로드 (약 55.6GB BF16 / Q4 약 16.8GB)
huggingface-cli download unsloth/Qwen3.6-27B-GGUF \
Qwen3.6-27B-UD-Q4_K_XL.gguf
# 3. vLLM 서버 실행 (GPU 2장 기준)
vllm serve Qwen/Qwen3.6-27B \
--port 8000 \
--tensor-parallel-size 2 \
--max-model-len 131072 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
# GPU 1장 (RTX 4090) 기준
vllm serve Qwen/Qwen3.6-27B \
--port 8000 \
--tensor-parallel-size 1 \
--max-model-len 32768 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--language-model-only # 비전 인코더 제외 → VRAM 절약
서버 설정에서 가장 중요한 플래그는 두 가지입니다. --reasoning-parser qwen3는 Thinking 모드 파싱에 필수로, 없으면 <think> 태그가 그대로 노출됩니다. --tool-call-parser qwen3_coder는 에이전트 툴 호출에 필요합니다. GPU 1장 환경에서는 --max-model-len을 32768~65536으로 제한해야 OOM을 방지할 수 있습니다. 그리고 CUDA 13.2에서는 출력이 깨지는 버그가 있으므로 CUDA 13.1 또는 12.x를 사용해야 합니다.
서버가 올라가면 http://localhost:8000/v1에서 OpenAI 호환 API가 생성됩니다.
실전 2 — Aider 연동
Aider는 CLI 기반 코딩 에이전트로, git 연동과 멀티파일 편집을 네이티브로 지원합니다. 터미널에서 자연어로 코드 수정을 요청하면 관련 파일을 분석하고 git diff를 보여준 뒤 확인 후 커밋까지 처리합니다.
# Aider 설치
pip install aider-chat
# Qwen3.6-27B 로컬 서버 연동
aider \
--model openai/Qwen/Qwen3.6-27B \
--openai-api-base http://localhost:8000/v1 \
--openai-api-key EMPTY
# 프로젝트 디렉토리에서 실행
cd your-project
aider \
--model openai/Qwen/Qwen3.6-27B \
--openai-api-base http://localhost:8000/v1 \
--openai-api-key EMPTY \
--no-auto-commits # 자동 커밋 끄기
실행 후 Aider 프롬프트에서 자연어로 요청하면 됩니다.
# Aider 프롬프트에서
> FastAPI 인증 시스템에서 JWT 만료 처리 버그 고쳐줘
--model 앞에 openai/ 접두어가 반드시 필요하고, --openai-api-key는 로컬 서버가 검증하지 않으므로 아무 값이나 넣어도 됩니다. Thinking 모드는 서버에서 --reasoning-parser qwen3를 설정하면 자동 적용됩니다. 한 가지 주의할 점은 Qwen3.6-27B가 아직 Ollama를 지원하지 않는다는 것입니다. llama.cpp 또는 vLLM을 통해서만 실행 가능합니다.
실전 3 — Continue.dev 연동 (VS Code)
Continue.dev는 VS Code 인라인 코딩 어시스턴트로 GitHub Copilot 대안으로 많이 씁니다. VS Code Extensions에서 "Continue"를 검색해 설치한 뒤 설정 파일을 수정하면 됩니다.
설정 파일 위치는 ~/.continue/config.json입니다. 아래와 같이 로컬 vLLM 서버를 provider로 등록합니다.
{
"models": [
{
"title": "Qwen3.6-27B (Local)",
"provider": "openai",
"model": "Qwen/Qwen3.6-27B",
"apiBase": "http://localhost:8000/v1",
"apiKey": "EMPTY",
"completionOptions": {
"temperature": 1.0,
"top_p": 0.95,
"max_tokens": 8192
}
}
],
"tabAutocompleteModel": {
"title": "Qwen3.6-27B Autocomplete",
"provider": "openai",
"model": "Qwen/Qwen3.6-27B",
"apiBase": "http://localhost:8000/v1",
"apiKey": "EMPTY"
},
"contextProviders": [
{"name": "code"},
{"name": "docs"},
{"name": "diff"},
{"name": "terminal"},
{"name": "problems"},
{"name": "folder"},
{"name": "codebase"}
]
}
temperature: 1.0은 Thinking 모드 공식 권고값입니다. tabAutocompleteModel에 같은 모델을 재사용하면 되는데, 자동완성 속도가 느리다면 35B-A3B로 교체하는 게 낫습니다. contextProviders에 codebase를 포함하면 전체 레포 컨텍스트를 활용할 수 있습니다. 설정 저장 후 VS Code를 재시작하면 우측 패널에 Continue 아이콘이 생깁니다.
실전 4 — Cursor 연동
Cursor는 커스텀 모델 추가 UI가 내장돼 있어 설정이 간단합니다. Settings → Models → Add Model에서 아래 값을 입력합니다.
{
"name": "Qwen3.6-27B (Local)",
"provider": "openai-compatible",
"baseUrl": "http://localhost:8000/v1",
"apiKey": "EMPTY",
"model": "Qwen/Qwen3.6-27B"
}
에이전트 모드 설정은 Settings → Features → Agent에서 Model을 방금 추가한 Qwen3.6-27B (Local)로 선택하고, Max tokens를 8192, Temperature를 1.0으로 맞춥니다. Agent Mode에서 파일 편집과 터미널 실행은 정상 작동합니다. Thinking 모드 응답이 길어서 스트리밍 딜레이가 생길 수 있는데, 빠른 응답이 필요하면 35B-A3B로 교체를 고려하세요. Cursor 자체 모델인 Claude Sonnet 4.6과 병행 사용도 가능합니다.
실전 5 — Qwen Code 연동 (Claude Code 대안)
Qwen Code는 Alibaba가 만든 오픈소스 터미널 에이전트입니다. Claude Code와 동일한 UX에 로컬 모델을 붙일 수 있습니다. Skills, SubAgents가 내장돼 있어 복잡한 멀티스텝 작업도 처리 가능하고, VS Code, Zed, JetBrains IDE 연동도 지원합니다.
# Qwen Code 설치
npm install -g @qwen-ai/qwen-code
# 또는
pip install qwen-code
설치 후 ~/.qwen/settings.json에 로컬 서버를 등록합니다.
{
"modelProviders": {
"openai": [
{
"id": "qwen3.6-27b-local",
"name": "Qwen3.6-27B (Local vLLM)",
"baseUrl": "http://localhost:8000/v1",
"envKey": "LOCAL_API_KEY",
"description": "Local Qwen3.6-27B via vLLM"
}
]
},
"env": {
"LOCAL_API_KEY": "EMPTY"
},
"security": {
"auth": {
"selectedType": "openai"
}
},
"model": {
"name": "qwen3.6-27b-local"
}
}
# 실행
qwen
# 실행 후 모델 전환
> /model qwen3.6-27b-local
한 가지 중요한 변경사항이 있습니다. Qwen OAuth가 2026년 4월 15일에 종료됐으므로, 반드시 API Key 방식으로 전환해야 합니다. 위 설정 파일이 그 방식으로 구성돼 있습니다.
Thinking 모드 제어
Qwen3.6은 기본적으로 Thinking 모드가 켜져 있습니다. 복잡한 코딩 태스크에서는 장점이지만, 단순 자동완성에서는 응답이 불필요하게 길어집니다. 상황에 따라 켜고 끄는 방법을 알아두면 편합니다.
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:8000/v1"
)
# Thinking 모드 ON (기본값, 복잡한 코딩 태스크)
response = client.chat.completions.create(
model="Qwen/Qwen3.6-27B",
messages=[{"role": "user", "content": "JWT 인증 시스템 설계해줘"}],
temperature=1.0, # Thinking 모드 공식 권고값
top_p=0.95,
max_tokens=32768 # Thinking 출력은 길 수 있음
)
# Thinking 모드 OFF (빠른 응답, 단순 태스크)
response = client.chat.completions.create(
model="Qwen/Qwen3.6-27B",
messages=[
{
"role": "system",
"content": "/no_think" # Thinking 비활성화 시스템 프롬프트
},
{"role": "user", "content": "이 함수 이름 바꿔줘"}
],
temperature=0.7,
max_tokens=2048
)
Thinking 모드가 적합한 상황은 복잡한 버그 분석, 아키텍처 설계, 멀티파일 리팩토링입니다. 단순 자동완성, 변수명 변경, 빠른 응답이 필요한 작업은 시스템 프롬프트에 /no_think를 넣어서 끄면 됩니다. temperature도 Thinking ON일 때는 1.0, OFF일 때는 0.7을 사용하는 게 공식 권고값입니다.
마무리
이 셋업이 맞는 상황과 맞지 않는 상황은 명확합니다. API 비용 절감이 목표이거나(월 100M 토큰 이상), 코드를 외부로 보낼 수 없는 보안 환경이거나, 오프라인 개발 환경이 필요하고 RTX 4090 이상 GPU를 보유한 경우라면 이 셋업이 충분한 선택지입니다. SWE-bench 기준 클라우드 API 대비 3~7%p 성능 차이는 감수해야 합니다.
반면 절대 최고 성능이 필요하다면 Claude Opus 4.7(SWE-bench 84.3%)을 쓰는 게 맞습니다. GPU가 없거나 설정이 번거로운 상황, CUDA 13.2 환경(버그 있음), Ollama로 빠르게 테스트하고 싶은 경우에도 클라우드 API가 현실적입니다. Qwen3.6-27B는 아직 Ollama를 지원하지 않기 때문입니다.
관련 글:
Qwen3.6-27B 완전 분석 — 27B 모델이 397B MoE 능가
RTX 4090 하나로 프론티어급 코딩 에이전트를 돌릴 수 있는 시대가 왔습니다.[핵심 요약]→ 출시: 2026년 4월 22일, Alibaba Qwen Team→ 라이센스: Apache 2.0 (상업 사용 가능)→ 파라미터: 27B dense (이전 플래
cell-devlog.tistory.com
Qwen3.6-27B vs 35B-A3B — Dense vs MoE
같은 Qwen3.6 패밀리인데 아키텍처가 완전히 다릅니다. 뭘 골라야 할지 헷갈리는 분들을 위해 정리했습니다.[핵심 요약]→ 27B: Dense 모델 — 모든 파라미터 항상 활성, 성능 우선→ 35B-A3B: MoE 모델
cell-devlog.tistory.com
Continue.dev 완전 가이드 — GitHub Copilot 대신 쓰는 무료 오픈소스 AI 코딩 어시스턴트
GitHub Copilot 월 $10~19 내고 있나요Continue.dev는 똑같은 기능인데 무료예요. 오픈소스고, 어떤 LLM이든 연결 가능해요.GitHub Copilot:→ 월 $10 (개인) ~ $19 (Business)→ GPT/Claude 고정→ 코드가 GitHub 서버 통과
cell-devlog.tistory.com
'LLM' 카테고리의 다른 글
| OpenAI Privacy Filter 완전 가이드 — LLM에 개인정보 넣기 전에 로컬에서 자동 마스킹하는 법 (0) | 2026.04.24 |
|---|---|
| 오픈소스 코딩 모델 3파전 — Qwen3.6-27B vs Gemma 4 31B vs GLM-5.1 (0) | 2026.04.24 |
| Qwen3.6-27B vs 35B-A3B — Dense vs MoE (0) | 2026.04.24 |
| Qwen3.6-27B 완전 분석 — 27B 모델이 397B MoE 능가 (0) | 2026.04.24 |
| GPT-5.5 출시 완전 분석 — Claude Opus 4.7에 일주일 만에 날린 OpenAI의 반격 (0) | 2026.04.24 |