TL;DR

  • Apple Silicon MacBook Pro M5 48GB 환경에서 Qwen 3.8 27BGemma 4 31B를 활용한 로컬 대규모 언어 모델(LLM) 애플리케이션 개발이 실용적인 수준에 도달함.
  • Ollama는 Apple Silicon용 MLX, 모델 디렉터리, 안정성을 제공해 로컬 모델 실행 도구로 선택됨.
  • OpenCode는 로컬 모델을 활용하는 개발 하니스(harness)로 사용되고, Docker Sandbox(sbx)는 호스트 시스템 보호를 위한 격리 환경으로 사용됨.
  • 프로젝트마다 sbx kit을 구성해 Docker Sandbox 내부의 OpenCode가 Mac 호스트의 Ollama에 연결되도록 설정함.
  • Qwen 3.8 27B MXFP8은 기본 장시간 작업용 모델로, Gemma 4 31B MXFP8은 더 큰 모델이 필요한 심층 파일 분석과 추론용 모델로 구성됨.

로컬 LLM 개발 환경

  • 실용적인 로컬 대규모 언어 모델(LLM) 개발 환경이 마련된 상태임.
  • Qwen 3.8Gemma 4 같은 강력한 모델을 활용해 웹 애플리케이션을 구축할 수 있음.
  • 사용 환경은 Apple MacBook Pro M5 48GB 모델임.
  • 이 구성은 적절한 크기의 컨텍스트를 유지하면서 30B 모델을 실행할 수 있어 로컬 개발에 적합한 지점으로 평가됨.

Ollama와 OpenCode 및 sbx를 사용하는 이유

  • Ollama는 사용이 쉬운 도구임.
  • Apple Silicon에서 MLX를 지원해 빠르게 실행됨.
  • 모델 디렉터리가 비교적 잘 구성되어 있음.
  • 안정성이 높고 충돌이 발생하지 않음.
  • OpenCode는 개발을 시작하기 위한 하니스로 사용됨.
  • Docker Sandbox, 즉 sbx도 함께 사용함.
  • 업무에서는 샌드박스가 필요한 프런티어 모델을 사용하므로 하니스를 샌드박싱해야 함.
  • 로컬 모델도 컨테이너에서 실행함. 원치 않는 환각으로 컴퓨터를 손상시킬 수 있기 때문임.

도구 설치

  • Docker Sandbox 설치를 위해 docker/tap 저장소를 신뢰한 뒤 sbx를 설치함.
  • brew trust docker/tap && brew install docker/tap/sbx
  • OpenCode는 anomalyco/tap/opencode 저장소에서 설치함.
  • brew install anomalyco/tap/opencode
  • Ollama는 https://ollama.com/에 접속해 애플리케이션을 내려받아 설치함.

모델 설치

  • 모델을 설치하기 전에 Ollama가 실행 중인지 확인함.
  • Qwen 3.8 27B MXFP8(32GB)은 대부분의 장시간 작업을 처리하는 작업용 모델이며, OpenCode에서 여러 시간 동안 중단 없이 실행할 수 있음.
  • ollama pull qwen3.8:27b-mxfp8
  • Gemma 4 31B MXFP8(34GB)은 더 큰 모델이 필요한 경우 사용하는 대형 밀집 모델임.
  • ollama pull gemma4:31b-mxfp8
  • 48GB Apple을 사용하지 않는 경우 표준 모델인 qwen3.8:27b-mlxgemma4:31b-mlx를 설치할 수 있음.

프로젝트 구성

  • 이 설정에서는 프로젝트마다 sbx kit을 구성해야 함.
  • kit은 샌드박스를 맞춤 설정하는 방식임.
  • 다음 디렉터리와 파일을 생성함.
  • ./sbx-kit/files/home/.config/opencode-local.json
  • ./sbx-kit/spec.yaml
  • spec.yamlschemaVersion 2, mixin 유형, local-ollama-opencode라는 이름과 0.1.0 버전을 사용함.
  • 표시 이름은 Local Ollama for OpenCode이며, Mac 호스트에서 실행되는 Ollama를 Docker Sandbox의 OpenCode가 사용하도록 구성하는 설명을 포함함.
  • opencode 에이전트를 필수 구성 요소로 지정함.
  • 환경 변수 OPENCODE_CONFIG/home/agent/.config/opencode-local.json으로 설정함.
  • 네트워크 권한은 다음 로컬 주소에 허용함.
  • localhost:11434
  • localhost:5173
  • localhost:4000
  • 에이전트 지침에는 로컬 Ollama가 호스트에서 실행된다는 내용과 다음 모델 역할을 지정함.
  • 기본 모델: qwen3.8:27b-mxfp8
  • 심층 파일 분석 및 추론 모델: gemma4:31b-mxfp8

OpenCode 로컬 설정

  • opencode-local.json은 OpenCode 설정 스키마 https://opencode.ai/config.json을 사용함.
  • 기본 모델과 소형 모델을 모두 ollama/gemma4:31b-mxfp8로 지정함.
  • 언어 서버(LSP)는 비활성화함.
  • Ollama 제공자는 @ai-sdk/openai-compatible 패키지를 사용하고 이름을 Mac Ollama로 지정함.
  • Docker Sandbox 내부에서 Mac 호스트의 Ollama에 연결하기 위해 기본 URL을 http://host.docker.internal:11434/v1로 설정함.
  • qwen3.8:27b-mxfp8-64K 모델은 다음과 같이 구성함.
  • 실제 모델 ID: qwen3.8:27b-mxfp8
  • 표시 이름: Qwen 3.8 27B MXFP8 [31 GB] [64K ctx]
  • 컨텍스트 한도: 65536
  • 출력 한도: 8192
  • 추론 강도 변형: low, medium, high, xhigh
  • gemma4:31b-mxfp8 모델은 다음과 같이 구성함.
  • 표시 이름: Gemma 4 31B MXFP8 [33 → ~50 GB] [256K ctx]
  • 컨텍스트 한도: 262144
  • 출력 한도: 8192
  • Qwen 모델의 컨텍스트를 64K로 제한해 메모리 부족 시 시스템이 멈추는 상황을 방지함.
  • 샌드박스에도 3GB의 메모리가 필요함.

OpenCode 실행

  • 다음 명령으로 OpenCode를 실행함.
  • sbx run opencode --kit ./sbx-kit/
  • 실행 시 Qwen이 선택된 상태로 OpenCode가 시작됨.
  • /models 명령을 사용해 추론 강도를 low로 낮춰야 함.
  • Docker Sandbox 실행을 위해 Docker 로그인도 필요함.
  • 이 로그인 요구 사항은 개발 커뮤니티에서 선호되지 않는 기능이지만 우회 방법은 없음.

최신 글로 돌아가기

  • [← Back to the latest]( )