laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
Step 1 클라우드 자동완성 vs 로컬 AI의 비용
GitHub Copilot이 활성화된 상태에서 VS Code에 입력하는 모든 키 입력은 Microsoft의 Azure 기반 OpenAI 인프라로 전송됩니다. 이것은 음모론이 아니라 공식 문서화된 제품 아키텍처입니다. 귀하의 독점 알고리즘, 내부 비즈니스 로직, 미공개 기능, 아키텍처 결정 사항이 모두 귀하의 머신을 떠나고 있습니다. 사이드 프로젝트를 진행하는 개인 개발자에게는 이러한 트레이드오프가 종종 수용 가능합니다. 상업적으로 민감한 소프트웨어를 개발하는 팀에게는 실질적인 보안 및 컴플라이언스 위험입니다.
그리고 재정적인 측면도 있습니다.
GitHub Copilot 가격 현실
| 플랜 |
월 비용 |
연간 비용 |
10명 팀 |
| Copilot Individual |
$10/month |
$100/year |
$1,000/year |
| Copilot Business |
$19/month/user |
$228/year/user |
$2,280/year |
| Copilot Enterprise |
$39/month/user |
$468/year/user |
$4,680/year |
Business 티어의 개발자 50명 규모의 중간 규모 엔지니어링 조직의 경우, 기반 모델에 대한 소유권이나 가격 안정성 보장 없이 외부 벤더에게 무기한으로 연간 $11,400을 지불해야 합니다. Microsoft는 출시 이후 이미 Copilot 가격을 인상했으며, 이러한 추세가 역전될 구조적인 이유는 없습니다.
"로컬 AI"가 실제로 의미하는 것
Ollama를 통해 로컬 모델을 실행하면 상황이 완전히 달라집니다. 컴퓨팅 비용은 기존 하드웨어입니다. 프라이버시 모델은 절대적입니다 — 데이터가 머신을 떠나지 않습니다. 지연 시간은 원격 추론 서버로의 왕복 네트워크 오버헤드를 제거하기 때문에 클라우드 기반 자동완성보다 더 낮은 경우가 많습니다.
Terminal
Cloud Copilot flow:
Keypress → VS Code → HTTPS → Azure OpenAI → Inference → Response → VS Code
Local Ollama flow:
Keypress → VS Code → localhost:11434 → Inference → Response → VS Code
localhost 추론 경로는 API 중단, 속도 제한, 기업 프록시 간섭, 지리적 지연 편차와 같은 전체 장애 모드 범주를 제거합니다. 이전에는 엄격한 기업 방화벽으로 인해 Copilot을 전혀 사용할 수 없었던 개발자들도 이제 네트워크 경계에 접근하지 않고도 완전한 기능의 코드 모델을 실행할 수 있습니다.
클라우드 의존성의 숨겨진 비용
라이선스 비용 외에도, 클라우드 자동완성은 과소평가하기 쉬운 운영적 결합을 초래합니다:
- 벤더 종속: 팀의 워크플로우가 가격 책정, 가용성, 서비스 약관에 대한 일방적인 통제권을 가진 서드파티 서비스에 의존하게 됩니다.
- 컴플라이언스 부담: 의료, 금융, 국방 등 많은 규제 산업에서는 코드를 외부로 전송하는 모든 도구에 대해 공식적인 데이터 처리 계약과 보안 검토를 요구합니다. 이러한 환경에서 Copilot의 승인 절차는 결코 간단하지 않습니다.
- 컨텍스트 윈도우 유출: 클라우드 모델은 현재 파일뿐만 아니라 주변 컨텍스트 버퍼, 즉 인접 파일, 최근에 열었던 탭, 그리고 설정에 따라 저장소 메타데이터까지 수신합니다.
- 감사 추적 공백: 코드 제안이 외부 블랙박스에서 제공될 경우, 소송이나 라이선스 분쟁에서 IP 출처를 규명하는 것이 복잡해집니다.
로컬 모델이 오늘날 경쟁력을 갖추는 분야
소비자용 하드웨어에서 실행되는 Code Llama 13B 및 StarCoder2 7B와 같은 현대적인 양자화 모델은 가장 일반적인 자동완성 시나리오, 즉 보일러플레이트 생성, 함수 시그니처 완성, 테스트 스캐폴딩, 일반 알고리즘 구현에서 Copilot과 진정으로 경쟁할 수 있는 완성 품질을 달성합니다. 모델이 특별히 훈련된 언어와 패턴의 코드를 처리할 때 그 격차는 더욱 좁아집니다.
계산은 간단합니다: 한계 비용 제로, 완전한 데이터 주권, 외부 의존성 없음 대 점점 늘어나는 SaaS 비용과 클라우드 추론 제공업체와 코드베이스를 공유하는 암묵적 동의. 장기적인 툴체인 소유권을 진지하게 고려하는 팀에게 로컬 우선 접근 방식은 타협이 아니라 더욱 방어적인 아키텍처 선택입니다.
Step 2 전제 조건: VS Code와 Ollama
설정에 본격적으로 들어가기 전에, 두 가지 핵심 구성 요소를 확실히 갖추고 검증해야 합니다. 적절한 전제 조건 검증을 건너뛰는 것은 개발자들이 단순해야 할 로컬 AI 설정을 디버깅하느라 몇 시간을 낭비하는 가장 흔한 원인입니다. 이것만 제대로 갖추면, 이후의 모든 것은 기계적으로 따라옵니다.
Visual Studio Code
VS Code 1.80 이상이 필요합니다. Continue.dev 확장은 인라인 고스트 텍스트 완성을 위해 최신 VS Code API에 의존하며, 구버전에서는 조용히 실패하거나 성능이 저하됩니다.
커맨드 라인에서 버전을 확인하세요:
예상 출력 결과 (더 최신 버전일 수 있음):
Terminal
1.89.1
e170252f762678dec6ca2cc69aba1864a9a1f8ad
x64
VSCodium과 같은 포크를 사용하고 있다면 Continue.dev는 완전히 호환됩니다. 다만 VSCodium은 기본적으로 Microsoft의 독점 확장 호스트 없이 제공되므로, Microsoft Marketplace가 아닌 Open VSX Registry에서 확장을 가져오고 있는지 확인하세요.
Ollama
Ollama는 모델 다운로드, 양자화 관리를 처리하고 localhost:11434에서 OpenAI 호환 REST API를 노출하는 로컬 모델 런타임입니다. 이 호환성 레이어가 바로 Continue.dev가 Ollama와 깔끔하게 통합되는 이유입니다. 커스텀 플러그인 아키텍처가 필요하지 않습니다.
플랫폼별 설치 방법:
| 플랫폼 |
명령어 / 방법 |
| macOS |
brew install ollama 또는 ollama.com에서 다운로드 |
| Linux |
curl -fsSL https://ollama.com/install.sh \| sh |
| Windows |
ollama.com/download에서 네이티브 인스톨러 사용 |
설치 후, Ollama 데몬을 시작합니다:
macOS에서는 설치 후 Ollama가 자동으로 메뉴 바 애플리케이션으로 실행됩니다. Linux에서는 systemd 서비스로 등록하는 것이 좋습니다:
Terminal
sudo systemctl enable ollama
sudo systemctl start ollama
API가 정상 작동하는지 확인합니다:
Terminal
curl http://localhost:11434/api/tags
성공적인 응답은 로컬에 설치된 모델 목록을 담은 JSON 객체를 반환합니다. 이 단계에서 빈 목록이 나와도 괜찮습니다 — 모델 다운로드는 이후 단계에서 진행됩니다.
하드웨어 고려사항
이 부분은 대부분의 튜토리얼이 설명을 생략하는 곳입니다. 하드웨어 사양이 어떤 모델을 사용할 수 있는지, 그리고 어떤 양자화 수준이 적합한지를 직접적으로 결정합니다.
| VRAM / 통합 메모리 |
권장 등급 |
예상 지연 속도 |
| 8 GB |
7B 모델 (Q4_K_M) |
수용 가능 (40–80 tok/s) |
| 16 GB |
13B 모델 (Q4_K_M) |
양호 (30–60 tok/s) |
| 24 GB+ |
34B 모델 (Q4_K_M) |
우수 (20–40 tok/s) |
| CPU 전용 |
최대 Q4의 3B–7B |
느리지만 기능적 |
Ollama는 Metal (Apple Silicon), CUDA (NVIDIA), ROCm (AMD)을 통해 자동으로 레이어를 GPU에 오프로드합니다. 수동 설정은 필요 없으며 — Ollama가 하드웨어를 감지하고 레이어 오프로딩을 자동으로 최적화합니다.
Apple Silicon 사용자를 위한 중요 참고사항: 통합 메모리는 CPU와 GPU 간에 공유됩니다. 16 GB를 탑재한 MacBook Pro M3는 별도의 VRAM 한계가 없기 때문에 13B 모델을 원활하게 실행할 수 있습니다. 이는 로컬 AI 워크플로에서 Apple Silicon을 선택하는 가장 강력한 이유 중 하나입니다.
환경 확인
진행하기 전에 다음의 빠른 점검을 실행합니다:
Terminal
# Confirm VS Code version
code --version
# Confirm Ollama is running and responsive
curl -s http://localhost:11434/api/tags | python3 -m json.tool
# Confirm GPU acceleration (Ollama logs)
ollama run llama3.2:1b "say ok"
모델 추론 중에 Ollama 터미널 출력을 확인합니다. GPU를 참조하는 레이어 오프로드 수치가 표시되어야 합니다. 모든 작업이 CPU에서만 실행된다면, 더 큰 코드 모델을 가져오기 전에 드라이버 설치를 다시 확인하세요.
두 가지 전제 조건이 모두 확인되면, Continue.dev를 설치하고 모든 것을 연결할 준비가 된 것입니다.
Step 3 1단계: Continue.dev 확장 설치
Continue.dev는 이 전체 설정의 핵심입니다 — GitHub Copilot의 드롭인 대체제 역할을 하는 오픈소스 AI 코드 어시스턴트이지만, 한 가지 중요한 아키텍처적 차이점이 있습니다: 로컬에서 실행 중인 Ollama 인스턴스를 포함하여, 지정한 곳 어디로든 요청을 라우팅합니다. 텔레메트리 없음. 클라우드 유출 없음. 구독 없음.
VS Code 마켓플레이스에서 설치
가장 간단한 설치 방법은 에디터 내부에서 VS Code 확장 마켓플레이스를 통하는 것입니다:
- VS Code 열기
Ctrl+Shift+X (Windows/Linux) 또는 Cmd+Shift+X (macOS)를 눌러 확장 패널 열기
- "Continue" 검색
- Continue가 배포한 확장 찾기 (아이콘은 독특한 보라색 그라디언트 로고)
- 설치 클릭
또는 VS Code CLI를 사용하여 명령줄에서 설치:
Terminal
code --install-extension Continue.continue
VS Codium (텔레메트리가 없는 포크 버전)을 사용하는 경우, 확장이 Open VSX Registry에서 제공됩니다:
Terminal
codium --install-extension Continue.continue
참고: Continue.dev는 별도의 플러그인을 통해 JetBrains IDE (IntelliJ, PyCharm, GoLand 등)도 지원하지만, 이 가이드는 VS Code 통합에만 초점을 맞춥니다.
설치 확인
설치가 완료되면 VS Code 환경에서 두 가지 즉각적인 변화를 확인할 수 있습니다:
| UI 요소 |
위치 |
목적 |
| Continue 사이드바 아이콘 |
활동 표시줄 (왼쪽 패널) |
채팅 인터페이스 열기 |
| 인라인 고스트 텍스트 |
코드 편집기 |
자동완성 제안 |
키보드 단축키 Ctrl+L |
전역 |
Continue 채팅 패널에 포커스 |
키보드 단축키 Tab |
편집기 |
자동완성 제안 수락 |
활동 표시줄에서 Continue 아이콘을 클릭하여 사이드 패널을 엽니다. 처음 실행 시 Continue는 프로바이더 연결을 안내하는 온보딩 화면을 표시합니다. 이 단계는 건너뛰거나 닫아도 됩니다 — 다음 단계에서 config.json을 직접 편집하여 Ollama를 수동으로 연결할 것이며, 이 방법이 GUI 마법사보다 훨씬 더 많은 제어권을 제공합니다.
확장의 아키텍처 이해
계속 진행하기 전에, Continue가 실제로 무엇을 설치하고 어떻게 통신하는지 이해하는 것이 중요합니다:
Terminal
VS Code Extension (Continue.dev)
│
▼
config.json ──────────────────────────────────────────────────┐
│ │
▼ ▼
Chat Provider (LLM) Autocomplete Provider (LLM)
e.g., Ollama → llama3 e.g., Ollama → starcoder2
│ │
└────────────────────────┬─────────────────────────────────┘
│
▼
http://localhost:11434 (Ollama REST API)
Continue는 채팅과 자동완성을 독립적으로 구성 가능한 두 개의 프로바이더로 분리합니다. 이것은 강력한 차별점입니다 — 대화형 쿼리를 위해 llama3나 deepseek-coder와 같은 크고 명령어 튜닝된 모델을 실행하면서, 동시에 낮은 지연 시간의 인라인 완성을 위해 starcoder2:3b와 같은 경량 fill-in-the-middle 모델을 사용할 수 있습니다. 다른 주류 Copilot 대안 중 이 수준의 프로바이더 세분화를 제공하는 것은 없습니다.
config.json 파일 위치 찾기
Continue의 모든 동작은 단일 JSON 파일로 제어됩니다. 해당 파일의 위치를 숙지하세요:
| 운영 체제 |
경로 |
| macOS |
~/.continue/config.json |
| Linux |
~/.continue/config.json |
| Windows |
%USERPROFILE%\.continue\config.json |
VS Code 내에서 Continue 패널의 설정 톱니바퀴 아이콘을 통해 직접 열거나, 터미널에서 수동으로 탐색할 수 있습니다:
Terminal
# macOS / Linux
cat ~/.continue/config.json
# Windows (PowerShell)
Get-Content "$env:USERPROFILE\.continue\config.json"
확장 프로그램이 설치되고 설정 파일 위치를 확인했다면, Continue를 로컬 Ollama 인스턴스에 연결할 준비가 된 것입니다.
Step 4 2단계: Ollama를 위한 config.json 구성
Continue.dev가 설치되면, 확장 프로그램의 모든 동작은 단 하나의 파일인 config.json 에 의해 제어됩니다. 이 파일에서 Continue를 로컬 Ollama 인스턴스에 연결하고, 채팅과 자동완성을 처리할 모델을 정의하며, 성능 매개변수를 조정합니다. 이 파일을 올바르게 설정하는 것이 느리고 불안정한 환경과 GitHub Copilot에 버금가는 반응성을 갖춘 환경을 구분하는 핵심입니다.
config.json 위치 확인
Continue는 홈 디렉토리에 설정을 저장합니다:
| 운영 체제 |
경로 |
| macOS / Linux |
~/.continue/config.json |
| Windows |
%USERPROFILE%\.continue\config.json |
Continue 사이드바를 통해 VS Code에서 직접 열 수도 있습니다 — Continue 패널 하단의 톱니바퀴 아이콘을 클릭하면 편집기에서 config.json이 열립니다.
최소한의 Ollama 구성
아래는 채팅과 탭 자동완성 모두를 위해 로컬에서 실행 중인 Ollama 인스턴스에 Continue를 연결하는 프로덕션 수준의 기본 config.json입니다:
Terminal
{
"models": [
{
"title": "CodeLlama 13B (Chat)",
"provider": "ollama",
"model": "codellama:13b",
"apiBase": "http://localhost:11434"
}
],
"tabAutocompleteModel": {
"title": "StarCoder2 3B (Autocomplete)",
"provider": "ollama",
"model": "starcoder2:3b",
"apiBase": "http://localhost:11434"
},
"tabAutocompleteOptions": {
"useCopyBuffer": false,
"maxPromptTokens": 1024,
"prefixPercentage": 0.85
},
"allowAnonymousTelemetry": false
}
왜 두 개의 별도 모델을 사용하나요? 채팅 모델은 지시 따르기와 다중 턴 대화에 최적화되어 있습니다. 자동완성 모델 — 특히 Fill-in-the-Middle (FIM) 방식으로 학습된 모델 — 은 접두사와 접미사 컨텍스트 창이 주어졌을 때 코드를 예측하도록 특별히 조정되어 있습니다. 두 가지를 혼용하면 양쪽 경험 모두 저하됩니다.
각 필드 분석
models 배열 — Continue 채팅 패널에서 사용 가능한 모델을 정의합니다. 여러 항목을 추가하고 런타임에 전환할 수 있습니다. 각 객체에는 다음이 필요합니다:
- provider: 로컬 추론의 경우 "ollama"로 설정
- model: ollama list에 표시되는 정확한 태그
- apiBase: Ollama의 기본 REST 엔드포인트; 포트를 변경한 경우에만 수정
tabAutocompleteModel — 인라인 자동완성을 위한 전용 항목입니다. 이 모델은 키 입력이 멈출 때마다 실행되므로 작고 빠를수록 좋습니다. FIM을 지원하는 3B~7B 파라미터 모델이 최적의 선택입니다.
tabAutocompleteOptions — 자동완성 엔진에 대한 세밀한 제어:
| 옵션 |
값 |
목적 |
useCopyBuffer |
false |
클립보드 내용이 제안에 유출되는 것을 방지 |
maxPromptTokens |
1024 |
요청당 전송되는 컨텍스트 윈도우를 제한 — 지연 시간에 매우 중요 |
prefixPercentage |
0.85 |
토큰 예산의 85%를 커서 이전 코드에 할당 |
allowAnonymousTelemetry — 이 값을 false로 설정하세요. 로컬 AI를 실행하는 목적 자체가 코드를 서드파티 서버에 전송하지 않기 위한 것이므로, Continue의 분석 파이프라인에 텔레메트리를 전송할 이유가 없습니다.
연결 확인
config.json을 저장한 후, VS Code 명령 팔레트(Cmd+Shift+P / Ctrl+Shift+P)를 열고 다음 명령을 실행하여 Continue에서 Ollama에 접근할 수 있는지 확인하세요:
Terminal
Continue: Open Debug Panel
초록색 상태 표시기와 성공적인 모델 핑이 표시되어야 합니다. 연결 거부 오류가 발생하면 다음 명령으로 Ollama가 실행 중인지 확인하세요:
Terminal
ollama serve
# or check its status
curl http://localhost:11434/api/tags
가져온 모델 목록이 포함된 유효한 JSON 응답이 반환되면 API가 활성 상태이며 Continue가 자동완성을 제공할 수 있는 상태임을 의미합니다.
Step 5 3단계: Code Llama 또는 StarCoder2 다운로드
Continue.dev를 설치하고 config.json을 연결했다면, 다음으로 중요한 결정은 실제로 어떤 모델을 로컬 머신에 다운로드할지입니다. 로컬 코드 자동완성 및 채팅을 위해 두 가지 모델이 주목받고 있습니다: Code Llama (Meta)와 StarCoder2 (BigCode/Hugging Face)입니다. 두 모델 모두 Ollama를 통해 훌륭하게 실행되지만, 각각 의미 있는 강점의 차이가 있습니다. 두 모델을 비교한 후, 정확한 다운로드 명령을 살펴보겠습니다.
한눈에 보는 모델 비교
| 기능 |
Code Llama |
StarCoder2 |
| 개발사 |
Meta AI |
BigCode (HuggingFace) |
| 파라미터 크기 |
7B, 13B, 34B, 70B |
3B, 7B, 15B |
| 라이선스 |
Llama 2 Community |
BigCode OpenRAIL-M |
| 강점 |
범용 코딩 + 채팅, Python |
다국어 fill-in-middle |
| 컨텍스트 윈도우 |
16K 토큰 |
16K 토큰 |
| 최적 사용 사례 |
채팅 + 자동완성 하이브리드 |
순수 자동완성 / FIM |
| VRAM (7B 변형) |
~4–5 GB |
~4–5 GB |
권장 사항: 8GB의 VRAM 또는 RAM을 사용할 수 있다면, 균형 잡힌 경험을 위해 codellama:7b-code로 시작하세요. 인라인 자동완성 품질과 다국어 지원에 집중한다면, starcoder2:7b가 fill-in-the-middle (FIM) 벤치마크에서 자주 앞서는 결과를 보입니다.
Ollama를 통해 Code Llama 다운로드
Ollama는 모델 관리를 매우 간단하게 만들어줍니다. 터미널을 열고 다음 명령을 실행하세요:
Terminal
# Lightweight 7B instruct variant — best starting point
ollama pull codellama:7b-instruct
# 7B code-specialized variant — better raw completion, less chat
ollama pull codellama:7b-code
하드웨어 여유가 있다면 (13B는 체감상 훨씬 더 뛰어납니다)
ollama pull codellama:13b-instruct
Terminal
`instruct` 변형은 자연어 명령을 이해하며 Continue.dev 내부의 **채팅 패널**에 이상적입니다. `code` 변형은 순수하게 코드 완성 작업에만 맞춰 최적화된 경량 버전으로, 일종의 "자동완성 엔진" 변형이라고 생각하면 됩니다.
모델을 받은 후, 모델이 사용 가능한지 확인합니다:
```bash
ollama list
다음과 유사한 출력이 표시되어야 합니다:
Terminal
NAME ID SIZE MODIFIED
codellama:7b-instruct 8fdf8f752f6e 3.8 GB 2 minutes ago
Ollama를 통해 StarCoder2 받기
StarCoder2는 중간 채우기(FIM, fill-in-the-middle) 작업을 위해 특별히 제작되었습니다 — 바로 IDE 자동완성이 의존하는 방식입니다. The Stack v2 데이터셋의 600개 이상의 프로그래밍 언어로 훈련되어 매우 폭넓은 언어 지원을 제공합니다.
Terminal
# 3B — CPU 전용 머신을 포함하여 거의 모든 최신 기기에서 실행 가능
ollama pull starcoder2:3b
# 7B — 품질 대비 리소스 사용량의 최적 균형점
ollama pull starcoder2:7b
# 15B — ~10GB 이상의 VRAM 필요, 하지만 Copilot에 준하는 품질 제공
ollama pull starcoder2:15b
모델이 올바르게 응답하는지 확인하기 위해 터미널에서 즉시 모델을 테스트하세요:
Terminal
ollama run starcoder2:7b "Write a Python function to flatten a nested list."
일관성 있고 문법적으로 올바른 출력이 나온다면, 모델이 Continue.dev에서 사용할 준비가 된 것입니다.
하드웨어 제약에 관한 참고 사항
큰 파라미터 수에 압도될 필요는 없습니다. 양자화된 모델(Ollama가 기본으로 받는 — 일반적으로 Q4_K_M 양자화)은 이론적인 크기보다 훨씬 작습니다. Q4 양자화된 7B 모델은 다음 환경에서 원활하게 실행됩니다:
- Apple Silicon Mac (M1/M2/M3), 16GB 통합 메모리 — Metal을 통한 네이티브에 가까운 GPU 가속
- NVIDIA GPU, 6~8GB VRAM (RTX 3060, 4060 등)
- CPU 전용 머신, 16GB 이상의 RAM — 속도는 느리지만 채팅에는 충분히 기능적; 자동완성 지연은 체감될 수 있음
CPU 환경이라면 starcoder2:3b 또는 codellama:7b-code를 강력히 권장합니다 — 더 작은 메모리 사용량이 곧 빠른 토큰 생성과 더 반응성 높은 자동완성 경험으로 직결됩니다.
선택한 모델을 받아 확인이 완료되면, Continue.dev는 2단계에서 설정한 Ollama API 엔드포인트(http://localhost:11434)를 통해 자동으로 모델을 감지합니다 — 추가적인 연결 작업은 필요하지 않습니다.
Step 6 로컬 자동완성 및 채팅을 위한 모범 사례
스택을 실행하는 것은 절반에 불과합니다. 로컬 AI 환경에서 최대한의 생산성을 끌어내려면 신중한 설정 선택, 체계적인 프롬프트 습관, 그리고 로컬 모델이 뛰어난 부분과 한계가 있는 부분에 대한 명확한 이해가 필요합니다.
모델 선택 전략
모든 모델이 동일한 것은 아니며, 작업에 따라 적합한 도구가 다릅니다. 하나의 모델에 자동완성과 채팅을 모두 맡기는 대신, 각 역할에 맞는 별도의 모델을 실행하세요.
| 작업 |
권장 모델 |
이유 |
| 탭 자동완성 |
starcoder2:3b |
초저지연, 중간 채우기(fill-in-the-middle) 최적화 |
| 코드 채팅 / Q&A |
codellama:13b |
더 깊은 추론 능력, 컨텍스트 윈도우 처리 우수 |
| 리팩토링 |
deepseek-coder:6.7b |
코드 재작성에 대한 강력한 명령어 수행 능력 |
| 일반 채팅 |
llama3:8b |
폭넓은 지식, 비코드 질문에 적합 |
핵심 인사이트: 자동완성은 지연 시간에 민감하고, 채팅은 품질에 민감합니다. 150ms 안에 응답하는 3B 모델은 자동완성에서 마법 같은 느낌을 줍니다. 반면 동일한 모델이 복잡한 아키텍처 질문에 피상적인 답변을 내놓는다면 고장난 것처럼 느껴집니다.
config.json에서 자동완성 동작 조정하기
Continue.dev의 기본 자동완성 설정은 보수적입니다. 더 나은 경험을 위해 다음과 같이 조정해 보세요:
Terminal
{
"tabAutocompleteModel": {
"title": "StarCoder2 3B",
"provider": "ollama",
"model": "starcoder2:3b",
"apiBase": "http://localhost:11434"
},
"tabAutocompleteOptions": {
"useCopyBuffer": false,
"maxPromptTokens": 1024,
"prefixPercentage": 0.85,
"multilineCompletions": "always",
"debounceDelay": 300
}
}
주요 옵션 설명:
debounceDelay: 300 — 마지막 키 입력 후 300ms를 기다린 뒤 자동완성 요청을 실행합니다. 값을 낮추면 더 즉각적으로 느껴지지만 GPU에 부담을 줍니다. 본인에게 맞는 임계값을 찾아보세요.
prefixPercentage: 0.85 — 컨텍스트 윈도우의 85%를 커서 앞쪽 코드에 할당합니다. 모델이 관련성 높은 자동완성을 생성하려면 최대한 많은 앞쪽 컨텍스트가 필요하므로 이 설정이 이상적입니다.
multilineCompletions: "always" — 모델이 단순히 한 줄이 아닌 전체 블록을 완성하도록 강제합니다. 보일러플레이트 코드 생성에 필수적입니다.
maxPromptTokens: 1024 — 요청을 간결하게 유지합니다. 값을 높이면 품질이 소폭 향상되지만, 일반 소비자용 하드웨어에서는 지연 시간이 크게 늘어납니다.
채팅을 위한 컨텍스트 관리
채팅 인터페이스는 대부분의 개발자들이 Continue.dev를 충분히 활용하지 못하는 영역입니다. 내장된 컨텍스트 제공자를 적극적으로 활용하세요:
@file — 프롬프트에서 특정 파일을 직접 참조합니다
@codebase — 전체 저장소에 걸쳐 임베딩 검색을 수행합니다 (임베딩 모델 설정 필요)
@terminal — 가장 최근 터미널 출력을 컨텍스트에 붙여넣습니다
@problems — VS Code 문제(Problems) 패널의 내용을 삽입하며, 컴파일러 오류 디버깅에 매우 유용합니다
디버깅 예시 워크플로우:
Terminal
@problems @file src/auth/middleware.ts
The JWT validation is throwing a 401 on every request even with a valid token.
Walk me through what could cause this and show me the fix.
이 단일 프롬프트는 모델에게 오류 메시지, 관련 소스 파일, 명확한 문제 설명을 한 번에 제공하여 출력 품질을 크게 향상시킵니다.
하드웨어 최적화 팁
GPU 사용자 (NVIDIA/AMD):
Ollama가 CPU로 폴백하지 않고 실제로 GPU를 사용하고 있는지 확인하세요:
Terminal
# Verify GPU utilization while a model is loaded
ollama ps
# Check VRAM usage
nvidia-smi # NVIDIA
rocm-smi # AMD
ollama ps가 100% CPU를 표시한다면, VRAM 오버플로우 문제가 발생한 것입니다. 더 작은 양자화로 전환하세요:
Terminal
# Pull a smaller quantized variant
ollama pull codellama:13b-code-q4_K_M
CPU 전용 사용자:
자동완성 모델은 3B 파라미터 이하로 유지하세요. 가장 작은 메모리 사용량을 위해 q4_0 양자화를 사용하고, Ollama 환경의 numThreads를 하이퍼스레딩이 아닌 실제 물리 코어 수에 맞게 설정하세요:
Terminal
OLLAMA_NUM_PARALLEL=1 OLLAMA_MAX_LOADED_MODELS=1 ollama serve
CPU에서 두 모델을 동시에 실행하면 스래싱(thrashing)이 발생합니다. MAX_LOADED_MODELS=1을 유지하고, 자동완성 모델과 채팅 모델 간 전환 시 발생하는 콜드 로드 지연을 감수하세요.
일관된 결과를 위한 프롬프트 규율
로컬 모델은 GPT-4보다 규모가 작고 프롬프트 품질에 더 민감합니다. 다음 습관들을 통해 수많은 시행착오를 줄일 수 있습니다:
- 언어와 프레임워크를 명시적으로 밝히세요. 모델이 Next.js 14 App Router 프로젝트임을 알고 있다고 가정하지 마세요. 직접 명시하세요.
- 설명이 아닌 실제 에러를 붙여넣으세요. 줄 번호가 포함된 전체 스택 트레이스는 모호한 설명보다 훨씬 뛰어난 결과를 냅니다.
- 출력 형식을 구체적으로 요청하세요. 필요에 따라 "수정된 함수만 보여주고, 설명은 생략하세요" 또는 "먼저 설명한 후 코드를 보여주세요"와 같이 프롬프트를 마무리하세요.
- 관련 없는 작업 사이에는
/clear를 사용하세요. 이전 Python 관련 대화로 인한 컨텍스트 오염은 새로운 TypeScript 세션의 응답 품질을 저하시킬 수 있습니다.
클라우드로 전환해야 할 때
로컬 모델이 모든 사용 사례를 대체할 수 있는 것은 아닙니다. 실용적으로 접근하세요:
| 시나리오 |
로컬로 충분 |
클라우드 필요 |
| 보일러플레이트 생성 |
✅ |
|
| 단일 파일 리팩토링 |
✅ |
|
| 라이브러리 문서 조회 |
✅ |
|
| 크로스 저장소 아키텍처 리뷰 |
|
✅ |
| 복잡한 정규식/알고리즘 생성 |
경계선상 |
✅ |
| 민감한 프로덕션 코드 |
✅ (개인정보 보호) |
|
많은 팀에게 개인정보 보호 보장은 타협할 수 없는 요소입니다 — 코드가 절대 외부로 유출되지 않습니다. 클라우드 모델이 간혹 더 나은 답변을 제공하더라도, 이것만으로도 로컬 환경 구축은 충분히 정당화됩니다.