서론
TAKT를 사용하기 시작한 지 얼마 지나지 않아, 클라우드 LLM의 토큰 소비가 예상보다 크다는 것을 깨닫게 됩니다. 특히 토큰을 많이 소비하는 것은 리뷰를 담당하는 supervisor,
・architecture-reviewer,
・ai-antipattern-reviewer,
이 세 가지 페르소나(persona)입니다. 하지만 이들은 고도의 추론 능력이 요구되기 때문에, 현시점의 로컬 LLM(Local LLM)으로는 대체할 수 없습니다.
그래서 비교적 로컬 LLM으로 대응 가능한 coder 페르소나를 로컬로 전환함으로써, 일부 토큰 소비를 절감하는 방침을 세웠습니다.
이 기사에서는 TAKT → OpenCode → Ollama라는 연결 경로로 로컬 LLM을 도입하여, coder 페르소나를 부분적으로 오프로드(offload)한 절차를 공유합니다.
이 기사에서 알 수 있는 것
- Ollama 및 OpenCode의 셋업 방법
- OpenCode를 Ollama의 프론트엔드(frontend)로 설정하는 방법
- TAKT의
persona_providers에서 로컬 LLM을 할당하는 방법
전제 환경
TAKT의 도입 및 기본 설정에 대해서는 'AI 오케스트레이션 도구의 선택 방법: TAKT 채택까지의 검토 프로세스'를 참조해 주세요.
1. 구성의 전체상
TAKT
└─ persona: coder
└─ provider: opencode
...
TAKT는 페르소나마다 서로 다른 프로바이더(provider)를 할당할 수 있습니다. coder 페르소나에 OpenCode를 지정하고, OpenCode 측에서 Ollama로의 접속을 설정함으로써 로컬 LLM을 사용할 수 있게 됩니다.
2. Ollama 셋업
2.1 설치
Windows 환경에서는 PowerShell에서 다음을 실행합니다:
irm https://ollama.com/install.ps1 | iex
2.2 모델 취득
이번에는 llama3.3:70b-instruct-q5_K_M을 사용합니다. ollama pull 명령을 실행하면 Ollama가 기동되어 모델 다운로드가 진행됩니다.
ollama pull llama3.3:70b-instruct-q5_K_M
다운로드 후, Ollama는 http://localhost:11434에서 API 요청을 수락합니다.
모델 선정 시 주의점: tools 대응이 필수
TAKT는 에이전트(agent)로서 동작하기 때문에, LLM에 도구 호출 (function calling) 기능이 필요합니다. Ollama의 모델 라이브러리에서 "Tools" 필터를 사용하면 대응 모델을 좁힐 수 있습니다.
Ollamaモデルライブラリ Toolsフィルター
tools 미대응 모델은 에이전트로 기능하지 않으므로 주의하십시오.
llama3.3:70b-instruct-q5_K_M을 선택한 이유:
- tools 대응 모델 중에서 코딩 태스크에 대한 적합성과 2026년 5월 시점에서의 실적으로 선택
- 업무 이용을 상정하여, 중국 제품(Qwen3-Coder 등)을 제외한 결과로 선택 (Llama3.3은 Meta 제품)
VRAM과 RAM에 대하여:
q5_K_M 양자화(quantization)된 70B 모델은 약 48 GB의 메모리를 필요로 하므로, VRAM 16 GB에는 들어가지 않습니다. Ollama는 GPU/CPU 하이브리드 추론을 지원하며, VRAM 분량은 GPU로 처리하고 나머지는 메인 RAM으로 오프로드합니다. 이번 환경(VRAM 16 GB + RAM 96 GB)에서는 문제없이 동작하지만, 순수 GPU 추론보다는 속도가 저하됩니다.
3. OpenCode 셋업
3.1 설치
curl -fsSL https://opencode.ai/install | bash
3.2 Ollama용 프로바이더 설정
OpenCode 설정 파일에 Ollama 프로바이더를 추가합니다.
설정 파일 위치: ~/.config/opencode/opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"provider": {
...
설정 포인트:
: OpenCode가 내부적으로 사용하는 AI SDK 패키지를 지정합니다. Ollama는 OpenAI 호환 API를 제공하므로 @ai-sdk/openai-compatible를 사용합니다.
baseURL: Ollama의 API 엔드포인트 (기본값: http://localhost:11434/v1)
models: 사용할 모델을 나열합니다. 키 이름(llama3.3:70b-instruct-q5_K_M)이 TAKT 측에서의 모델 참조명이 됩니다.
4. TAKT 설정
persona_providers에서 로컬 LLM을 할당할 페르소나(Persona)를 지정합니다.
설정 파일 위치: .takt/config.yaml (프로젝트 루트)
language: ja
provider: claude
branch_name_strategy: romaji
...
coder만 로컬 LLM으로 설정한 이유:
가장 많은 토큰을 소비하는 것은 supervisor, architecture-reviewer, ai-antipattern-reviewer의 3종이지만, 이들은 설계상의 모순 검출이나 품질 판단 등 고도의 추론을 필요로 하기 때문에 현재의 로컬 LLM으로는 대체할 수 없습니다.
반면, coder는 주어진 사양에 기반한 코드 생성 및 변환이 중심이므로, 로컬 LLM으로도 일정 수준의 품질을 내기 쉬운 역할입니다. 따라서 비용을 절감할 수 있는 범위로서 coder를 선택했습니다.
모델 참조 형식:
ollama/llama3.3:70b-instruct-q5_K_M
^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
| opencode.jsonc에서 정의한 모델 키
...
5. 동작 확인
Ollama가 실행 중인지 확인한 후 TAKT를 실행합니다:
# Ollama 실행 확인
curl http://localhost:11434/api/tags
# TAKT 실행 (예)
...
coder 페르소나의 태스크가 OpenCode를 통해 llama3.3:70b-instruct-q5_K_M로 전달되어, 로컬에서 추론이 수행되는 것을 확인할 수 있습니다.
요약
| 컴포넌트 | 역할 |
|---|
| Ollama | 로컬 LLM 실행 환경 · OpenAI 호환 API 서버 |
| ... | |
TAKT → OpenCode → Ollama의 3계층 구조를 통해, 클라우드 LLM과 로컬 LLM을 역할에 따라 구분하여 사용할 수 있습니다. 완전한 대체는 불가능하지만, coder의 처리를 일부 로컬로 분산함으로써 클라우드 LLM의 소비를 부분적으로 제어할 수 있게 되었습니다.
시리즈 기사
- Claude Code 입문: 빌트인 기능의 전체 모습
- Claude Code 하네스(Harness) 기능 상세 해설: CLAUDE.md · SKILLS · HOOK으로 개발을 제어하기
- AI 오케스트레이션 도구 선택 방법: TAKT 채택까지의 검토 프로세스 ← 지난 회차
TAKT로 토큰 부족 문제 해결: OpenCode를 통해 Ollama 로컬 LLM 사용하기 ← 이번 회차
Discussion