Opilot — GitHub Copilot VS Code 확장 프로그램용 Ollama
Version Tests codecov License: MIT
<p align="center">
<img src="https://raw.githubusercontent.com/selfagency/opilot/HEAD/logo.png" alt="Opilot" width="128" height="128">
</p>
<p align="center">
<strong>GitHub Copilot Chat 내에서 전체 도구 및 비전 지원을 갖춘 Ollama 모델 실행</strong>
</p>
Opilot은 완전한 Ollama 생태계 — 로컬 모델, 클라우드 모델, 그리고 Ollama 모델 라이브러리 — 를 VS Code의 Copilot Chat 인터페이스에 직접 통합합니다. 로컬 모델을 사용할 때 사용자의 대화 내용은 기기를 벗어나지 않으며, 에디터를 떠나지 않고도 모델 간 전환이 가능합니다.
<p align="center">
<a href="https://opilot.self.agency">📖 문서</a> •
<a href="https://marketplace.visualstudio.com/items?itemName=selfagency.opilot">🛒 마켓플레이스</a> •
<a href="https://github.com/selfagency/opilot">🐙 GitHub</a> •
<a href="https://github.com/selfagency/opilot/issues">🐛 이슈</a>
</p>
<p align="center">
<a href="https://ollama.ai">🌐 Ollama</a> •
<a href="https://github.com/ollama/ollama">📖 Ollama 레포</a> •
<a href="https://ollama.ai/library">📚 모델 라이브러리</a>
</p>
✨ 기능
-
🦙 모든 Ollama 모델: Ollama Library의 모든 모델을 첫 번째 등급의 Copilot 채팅 모델 및 @ollama 참여자로 사용할 수 있으며, Cloud 모델( ollama login 후)도 포함됩니다.
-
🛠️ 모델 관리 사이드바: 전용 Ollama 활동 바 패널에서 모델을 가져오고(Pull), 실행하고(Run), 검사하며(Inspect), 중지시키고(Stop), 삭제할 수 있으며, 실시간 상태 배지가 제공됩니다.
-
🎛️ 모델별 설정 패널: 에디터 내 웹뷰에서 온도(temperature), top-p/top-k, 컨텍스트(context), 최대 토큰(max tokens), 사고 예산(thinking budget)을 조정할 수 있습니다. 이 설정은 모델별로 유지됩니다.
-
📡 상태 표시줄 하트비트: 실행 중인 모델 개수, 연결 상태, 리소스 툴팁이 표시되는 항상 보이는 Ollama 서버 인디케이터가 제공됩니다.
-
💬 채팅 참여자: Copilot Chat에서 @ollama를 호출하여 선택한 로컬 모델과의 전용적이고 히스토리 인식적인 대화를 나눌 수 있습니다.
-
📝 Modelfile 관리자: 구문 강조 표시, 호버 문서화(hover documentation), 자동 완성 기능이 있는 사용자 지정 Ollama modelfile을 생성하고 편집하며 빌드할 수 있습니다.
-
⌨️ 인라인 코드 완성: 타이핑하는 동안 로컬 Ollama 모델을 이용한 채우기(fill-in-the-middle) 코드 제안을 받을 수 있습니다.
-
🔧 도구 호출 (Tool Calling): 호환 가능한 모델(MCP 서버, VS Code 명령어, 사용자 지정 스킬)을 위한 에이전트 워크플로우에서 전체 도구/함수 호출 지원 기능을 제공합니다.
-
🖼️ 비전 지원 (Vision Support): 비전 기능이 있는 모델에 이미지 입력을 할 수 있습니다. 비전 기능이 없는 모델의 경우 프롬프트 오버플로우를 방지하기 위해 이미지가 자동으로 제거됩니다.
-
💭 사고 모델 (Thinking Models): 체인 오브 소트(chain-of-thought)를 노출하는 모델(예: DeepSeek-R1, Qwen QwQ, Kimi)의 경우 접을 수 있는
-
VS Code 1.111.0 이상
-
GitHub Copilot Chat 확장 프로그램 설치 및 활성화
-
로컬에 Ollama 설치 (Download) 또는 사용자가 제어하는 원격 Ollama 인스턴스
🚀 빠른 시작 (Quick Start)
- Ollama 설치하고 실행합니다 (
ollama serve 또는 앱 열기)
- VS Code Marketplace에서 Opilot을 설치합니다 (또는
.vsix 파일을 설치)
- 활동(activity) 표시줄에 Ollama 아이콘이 나타나면 클릭하여 사이드바를 엽니다
- 라이브러리(Library) 패널에서 모델을 가져옵니다 (예:
llama3.2:3b)
- Copilot Chat을 열고, 모델 선택기(model picker)를 클릭한 다음 Ollama 모델을 선택하거나
@ollama를 입력하여 채팅합니다
확장 프로그램은 로컬의 http://localhost:11434에 있는 Ollama 인스턴스를 자동으로 감지합니다. 클라우드 모델을 사용하려면 먼저 ollama login을 실행해야 합니다. 원격 인스턴스를 사용하려면 VS Code 설정에서 opilot.host를 설정하십시오 (레거시 ollama.host도 여전히 지원됩니다).
⚙️ 구성 (Configuration)
VS Code 설정을 열고 (Ctrl+, / Cmd+,)
레거시 ollama.* 설정은 계속 작동하며 활성화 시 자동으로 마이그레이션됩니다.
원격 Ollama 인스턴스를 사용하려면, opilot.host를 원격 서버가 가리키도록 업데이트하세요.
💬 사용법
모델 선택기 (Model Picker)
@ollama 핸들 없이 Copilot Chat에서 Ollama 모델을 사용하려면:
- VS Code에서 GitHub Copilot Chat 패널을 엽니다.
- 모델 선택기(model selector) 드롭다운을 클릭합니다.
- Ollama 모델(로컬 또는 라이브러리 기반)을 선택합니다.
- 채팅을 시작하세요!
채팅 참여자 (Chat Participant)
어떤 Copilot Chat 입력창에든 @ollama를 입력하여 대화를 로컬 Ollama 인스턴스로 직접 연결할 수 있습니다:
@ollama explain the architecture of this TypeScript project
참여자(participant)는 고정적입니다. 한 번 호출되면 해당 스레드 동안 활성 상태를 유지합니다.
인라인 코드 완성 (Inline Code Completions)
opilot.completionModel을 로컬에 설치된 모델로 설정하여 타이핑하는 동안 인라인 코드 완성을 얻을 수 있습니다. 작고 빠른 모델이 가장 좋습니다:
qwen2.5-coder:1.5b
deepseek-coder:1.3b
starcoder2:3b
완성은 모델이 지원하는 경우 필 인 더 미들 (fill-in-the-middle, FIM) 방식을 사용하며, opilot.enableInlineCompletions로 토글할 수 있습니다.
Ollama 활동 바 아이콘을 열면 네 개의 패널이 있는 사이드바가 나타납니다:
로컬 모델 (Local Models)
- 가족별(트리 뷰) 또는 평면 목록으로 모든 로컬 설치 모델을 볼 수 있습니다.
- 패널 헤더의 필터 아이콘을 사용하여 이름으로 모델을 필터링할 수 있습니다.
- 레이아웃 아이콘을 사용하여 그룹화된 트리 뷰와 평면 목록 간에 토글할 수 있습니다.
- 로컬 모델 도구 모음의 기어 아이콘에서 **모델 설정(Model Settings)**을 열 수 있습니다.
- 모델별 인라인 버튼: 시작(▶), 중지(⏹), 삭제(🗑)
- 실행 중인 모델은 VRAM 사용량과 로드된 시간을 표시합니다.
- 모델 기능 배지: 🧠 사고(thinking), 🛠️ 도구(tools), 👁️ 시각(vision), 🧩 임베딩(embedding)
- 30초마다 자동 새로고침됩니다 (설정(
opilot.localModelRefreshInterval)을 통해 구성 가능); 설정이 변경되면 새로고침 간격은 자동으로 재시작됩니다.
모델 설정 패널 (Model Settings Panel)
Ollama: Open Model Settings를 열거나(또는 로컬 모델의 기어 아이콘 클릭) 모델별 생성 오버라이드를 구성할 수 있습니다.
- Temperature
- Top-P
- Top-K
- Context window (
num_ctx)
- Max tokens (
num_predict)
- Thinking toggle (
think)
- Thinking budget (
think_budget)
변경 사항은 즉시 적용되며 확장 프로그램의 전역 저장소에서 모델별로 영구 저장됩니다.
상태 표시줄 하트비트 (Status Bar Heartbeat)
Opilot은 지속적인 상태 표시줄 항목을 추가합니다:
- 확인 중일 때:
$(loading~spin) Ollama…
- 연결 가능할 때:
$(pulse) Ollama 또는 $(pulse) Ollama (N)
- 간헐적 실패 후:
$(warning) Ollama offline
상태 표시줄 항목을 클릭하거나 Ollama: Check Server Health를 실행하여 즉시 연결 상태 확인을 할 수 있습니다.
클라우드 모델 (Cloud Models)
- Ollama Cloud에서 가져온 모델 보기 (
ollama login 필요)
- 필터링, 패밀리별 그룹화 및 전체 접기 — 로컬 모델과 동일한 제어 기능 제공
- 인라인 버튼: 페이지 열기 (🔗), 실행 (▶), 중지 (⏹), 삭제 (🗑)
- 패널 헤더의 로그인 (👤) 버튼을 사용하여 인증합니다.
라이브러리 (Library)
- ollama.ai/library에서 수백 개의 사전 구성된 모델 탐색
- 모델은 패밀리별로 그룹화되어 있으며, 접을 수 있는 변형(variant) 자식 항목 포함
- 이름으로 필터링; 최신순 또는 이름순으로 정렬 가능
- 이미 로컬에 다운로드된 변형에는 ✓ 체크 표시가 나타남
- 모든 변형에서 풀 (Pull) (⬇)을 클릭하여 스트리밍 진행률과 함께 다운로드합니다.
모델파일 (Modelfiles)
사용자 지정 Ollama modelfile을 생성하고 관리하기 위한 Modelfile Manager 패널. 아래 Modelfile Manager를 참조하세요.
Modelfile Manager
새 Modelfile 생성
Modelfile Manager 패널 헤더의 + 버튼을 클릭합니다. 대화형 마법사가 다음 과정을 안내합니다:
- 이름 (Name) — modelfile에 사용할 이름 입력 (예:
pirate-bot)
- 기본 모델 (Base model) — 로컬에 설치된 Ollama 모델 중 하나 선택
- 시스템 프롬프트 (System prompt) — AI 페르소나 또는 작업 설명
마법사는 파일을 생성하고, 선택한 설정으로 미리 채운 후 편집기에서 열어줍니다.
Modelfile 빌드 (Building a Modelfile)
패널에서 아무 .modelfile을 마우스 오른쪽 버튼으로 클릭하고 **Modelfile에서 모델 빌드(Build Model from Modelfile)**를 선택하거나 (명령 팔레트를 사용: Ollama: Build Model from Modelfile) 이 기능을 사용할 수 있습니다. 이렇게 하면 파일로 ollama create가 실행되고 VS Code 알림에 진행 상황이 스트리밍됩니다.
구문 지원
모든 .modelfile 파일은 다음을 제공받습니다:
- 구문 강조(Syntax highlighting) — 키워드(
FROM, PARAMETER, SYSTEM, TEMPLATE, ADAPTER, LICENSE, MESSAGE, REQUIRES), 매개변수 이름, 숫자, 문자열 및 주석
- 호버 문서화(Hover documentation) — 키워드나 매개변수 이름 위에 마우스를 올리면 설명과 사용법을 볼 수 있습니다.
- 자동 완성(Autocomplete) — Modelfile 키워드와 일반적인 매개변수 이름에 대한 제안
# Modelfile — pirate-bot
FROM llama3.2:3b
...
전체 구문 참조는 Ollama Modelfile Docs를 참고하세요.
🛡️ 개인 정보 보호 및 보안 (Privacy & Security)
- 사용자의 모델과 대화 내용은 완전히 로컬에서 실행됩니다. 외부 서비스로 데이터가 전송되지 않습니다.
- 이 확장 프로그램은 로컬 Ollama 인스턴스(또는 지정된 원격 인스턴스)와만 통신합니다.
- 텔레메트리, 추적 또는 데이터 수집이 없습니다.
- 인증 토큰(원격 인스턴스를 사용하는 경우)은 VS Code의 암호화된 비밀 API를 사용하여 안전하게 저장됩니다.
Ollama의 보안 및 개인 정보 보호 모델에 대한 자세한 내용은 Ollama GitHub 리포지토리를 참고하세요.
🛠️ 개발 (Development)
전제 조건 (Prerequisites)
빌드 (Build)
pnpm run compile # 타입 검사 + 린트 + 번들링 (Task에 위임)
pnpm run watch # 타입 검사와 번들을 위한 병렬 감시 (Task에 위임)
프로젝트는 Task(go-task)를 표준 실행기로 사용합니다. 위의 package.json 스크립트는 기여자 및 CI를 위해 발견 가능하고 일관된 인터페이스를 제공하기 위해 Task에 위임하는 얇은 래퍼입니다. 선호한다면 Task로 직접 작업을 실행할 수 있습니다:
task compile
task unit-test-coverage
task extension-tests
로컬에 Task가 설치되어 있지 않다면, CI는 go-task/setup-task 액션을 사용합니다. 또는 pnpm/pnpx를 통해 실행할 수 있습니다: `pnpm dlx task <name>`.
테스트 (Testing)
pnpm test
pnpm run test:coverage
pnpm run test:extension
...
디버깅 (Debugging)
VS Code에서 프로젝트를 열고 F5를 눌러 확장 프로그램이 로드된 Extension Development Host를 실행합니다.
📄 라이선스 (License)
MIT License - 자세한 내용은 LICENSE를 참조하세요.
Daniel Sieradski (@selfagency)가 유지보수합니다.
📚 자료 (Resources)
Opilot